summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2018-04-30 12:58:07 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2018-07-02 06:54:01 +0000
commit4ec82667f632992e827299c96d3bfd2b221a029b (patch)
tree81edec4a70ba1003a52621be9b9158e6570576e4
parentfd797fc9441261d0679d60b0af3682966c862875 (diff)
downloadqttools-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.prf19
-rw-r--r--src/qdoc/qdoc.pro11
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\")