diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2018-04-30 12:58:07 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2018-07-02 06:54:01 +0000 |
commit | 4ec82667f632992e827299c96d3bfd2b221a029b (patch) | |
tree | 81edec4a70ba1003a52621be9b9158e6570576e4 | |
parent | fd797fc9441261d0679d60b0af3682966c862875 (diff) | |
download | qttools-4ec82667f632992e827299c96d3bfd2b221a029b.tar.gz |
Prospective fix for linking qdoc against libclang with MinGW
Pick the libclang installation from MinGW or MSVC specific directories
on Windows for static linkage, as they cannot be mixed.
And it turn out that we need the explicit static library linkage for
MinGW as well (or just not for MSVC, as I guess the .lib there is
self-contained).
Task-number: QTBUG-68064
Change-Id: Ie20c8910e0a2776940dcd78a1b28e36f5ce30947
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io>
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@qt.io>
-rw-r--r-- | mkspecs/features/qt_find_clang.prf | 19 | ||||
-rw-r--r-- | src/qdoc/qdoc.pro | 11 |
2 files changed, 12 insertions, 18 deletions
diff --git a/mkspecs/features/qt_find_clang.prf b/mkspecs/features/qt_find_clang.prf index 583cf0e26..d584d136e 100644 --- a/mkspecs/features/qt_find_clang.prf +++ b/mkspecs/features/qt_find_clang.prf @@ -43,13 +43,8 @@ isEmpty(QDOC_USE_STATIC_LIBCLANG): QDOC_USE_STATIC_LIBCLANG = $$(QDOC_USE_STATIC cache(QDOC_USE_STATIC_LIBCLANG) for(_, $$list(_)) { # just a way to break easily - isEmpty(FORCE_MINGW_QDOC_BUILD): FORCE_MINGW_QDOC_BUILD = $$(FORCE_MINGW_QDOC_BUILD) - equals(QMAKE_HOST.os, Windows):gcc:isEmpty(FORCE_MINGW_QDOC_BUILD) { - log("QDoc build is disabled on MinGW in Qt 5.11.0, because of a missing feature in the release infrastructure.") - log("You can enable it by setting FORCE_MINGW_QDOC_BUILD") - break() - } - + mingw:isEmpty(LLVM_INSTALL_DIR): LLVM_INSTALL_DIR = $$(LLVM_INSTALL_DIR_MINGW) + msvc:isEmpty(LLVM_INSTALL_DIR): LLVM_INSTALL_DIR = $$(LLVM_INSTALL_DIR_MSVC) isEmpty(LLVM_INSTALL_DIR): LLVM_INSTALL_DIR = $$(LLVM_INSTALL_DIR) LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR) contains(QMAKE_HOST.arch, x86_64): \ @@ -93,13 +88,16 @@ for(_, $$list(_)) { # just a way to break easily !contains(QMAKE_DEFAULT_LIBDIRS, $$CLANG_LIBDIR): CLANG_LIBS = -L$${CLANG_LIBDIR} + CLANG_DEFINES = + isEmpty(QDOC_USE_STATIC_LIBCLANG) { equals(QMAKE_HOST.os, Windows): \ CLANG_LIBS += -llibclang -ladvapi32 -lshell32 else: \ CLANG_LIBS += -lclang } else { - equals(QMAKE_HOST.os, Windows) { + msvc { + CLANG_DEFINES += CINDEX_LINKAGE= CLANG_LIBS += -llibclang_static -ladvapi32 -lshell32 -lMincore } else { !equals(QMAKE_HOST.os, Darwin): CLANG_LIBS+=-Wl,--start-group @@ -293,6 +291,10 @@ for(_, $$list(_)) { # just a way to break easily -lLLVMXCoreInfo \ -lLLVMXRay !equals(QMAKE_HOST.os, Darwin): CLANG_LIBS+=-Wl,--end-group + CLANG_LIBS += -lz + mingw: CLANG_LIBS += -lpsapi -lshell32 -lole32 -luuid -ladvapi32 -lversion + else: CLANG_LIBS += -ldl + equals(QMAKE_HOST.os, Darwin): CLANG_LIBS += -lcurses -lm -lxml2 } } @@ -305,6 +307,7 @@ for(_, $$list(_)) { # just a way to break easily cache(CLANG_LIBS) cache(CLANG_INCLUDEPATH) cache(CLANG_LIBDIR) + cache(CLANG_DEFINES) cache(CLANG_VERSION) cache(CONFIG, add, $$list(config_clang)) } diff --git a/src/qdoc/qdoc.pro b/src/qdoc/qdoc.pro index b35897c26..511517a8b 100644 --- a/src/qdoc/qdoc.pro +++ b/src/qdoc/qdoc.pro @@ -13,16 +13,7 @@ qtHaveModule(qmldevtools-private) { LIBS += $$CLANG_LIBS !contains(QMAKE_DEFAULT_INCDIRS, $$CLANG_INCLUDEPATH): INCLUDEPATH += $$CLANG_INCLUDEPATH - -!isEmpty(QDOC_USE_STATIC_LIBCLANG) { - # Support static libclang linking on different platforms - equals(QMAKE_HOST.os, Windows) { - DEFINES += CINDEX_LINKAGE= - } else { - LIBS += -lz -ldl - equals(QMAKE_HOST.os, Darwin): LIBS += -lcurses -lm -lxml2 - } -} +DEFINES += $$CLANG_DEFINES !contains(QMAKE_DEFAULT_LIBDIRS, $$CLANG_LIBDIR):!disable_external_rpath: QMAKE_RPATHDIR += $$CLANG_LIBDIR DEFINES += $$shell_quote(CLANG_RESOURCE_DIR=\"$${CLANG_LIBDIR}/clang/$${CLANG_VERSION}/include\") |