• Nikolai Kosjar's avatar
    Clang: Free us from specific Qt versions · 4f764963
    Nikolai Kosjar authored
    More precisely, free us from specific Q_MOC_RUN/QT_NO_META_MACROS code
    paths in QtCore/qobjectdefs.h.
    
    In order to track signals and slots we provided custom definitions of
    e.g. "Q_SIGNAL" by including qt5-qobjectdefs-injected.h with "-include".
    We also had to ensure that those macros were not overwritten by Qt's
    qobjectdefs.h, which we did by defining QT_NO_META_MACROS. However, this
    came with a cost: we needed to replicate all the other macro definitions
    in the Q_MOC_RUN/QT_NO_META_MACROS code path, e.g. Q_INTERFACES. This
    bound us to specific versions of qobjectdefs.h and occasionally we had
    to adapt (see change 4eafa2e0).
    
    The new approach wraps Qt's qobjectdefs.h with the help of
    "include_next". In the wrapper header, we only redefine what is
    necessary.
    
    The "include_next" directive is originally a GNU extension. Clang seems
    to support it unconditionally, as [1] implicitly states.
    
    [1] http://clang.llvm.org/docs/LanguageExtensions.html#include-file-checking-macros
    
    Change-Id: Ic1a263f94b178349cb32bfdbb074ad5e6e0761ee
    Reviewed-by: default avatarChristian Kandeler <christian.kandeler@theqtcompany.com>
    Reviewed-by: default avatarErik Verbruggen <erik.verbruggen@theqtcompany.com>
    4f764963
qobjectdefs.h 2.19 KB