diff options
-rw-r--r-- | qbs/modules/libclang/functions.js | 4 | ||||
-rw-r--r-- | src/plugins/clangformat/clangformat.qbs | 1 | ||||
-rw-r--r-- | src/shared/clang/clang_installation.pri | 42 | ||||
-rw-r--r-- | tests/unit/unittest/creator_dependency.pri | 2 |
4 files changed, 28 insertions, 21 deletions
diff --git a/qbs/modules/libclang/functions.js b/qbs/modules/libclang/functions.js index 4d384d773e..3a75fe1ead 100644 --- a/qbs/modules/libclang/functions.js +++ b/qbs/modules/libclang/functions.js @@ -103,6 +103,10 @@ function extraLibraries(llvmConfig, targetOS) function formattingLibs(llvmConfig, qtcFunctions, targetOS) { + var llvmIncludeDir = includeDir(llvmConfig); + if (!File.exists(llvmIncludeDir.concat("/clang/Format/Format.h"))) + return []; + var clangVersion = version(llvmConfig) var libs = [] if (qtcFunctions.versionIsAtLeast(clangVersion, MinimumLLVMVersion)) { diff --git a/src/plugins/clangformat/clangformat.qbs b/src/plugins/clangformat/clangformat.qbs index c7b9182373..3e40832c57 100644 --- a/src/plugins/clangformat/clangformat.qbs +++ b/src/plugins/clangformat/clangformat.qbs @@ -15,6 +15,7 @@ QtcPlugin { Depends { name: "Qt.widgets" } condition: libclang.present + && libclang.llvmFormattingLibs.length && (!qbs.targetOS.contains("windows") || libclang.llvmBuildModeMatches) cpp.cxxFlags: { diff --git a/src/shared/clang/clang_installation.pri b/src/shared/clang/clang_installation.pri index 4629aedaab..6c820dc36d 100644 --- a/src/shared/clang/clang_installation.pri +++ b/src/shared/clang/clang_installation.pri @@ -150,25 +150,6 @@ isEmpty(LLVM_INSTALL_DIR) { output = $$system($$llvm_config --version, lines) LLVM_VERSION = $$extractVersion($$output) -!isEmpty(LLVM_VERSION) { - versionIsAtLeast($$LLVM_VERSION, 7, 0, 0): { - CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic - ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ - -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ - -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ - -lclangASTMatchers -lclangAST -lclangLex -lclangBasic - } else:versionIsAtLeast($$LLVM_VERSION, 6, 0, 0): { - CLANGFORMAT_LIBS=-lclangFormat -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic - ALL_CLANG_LIBS=-lclangFormat -lclangTooling -lclangToolingCore \ - -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ - -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ - -lclangASTMatchers -lclangAST -lclangLex -lclangBasic - } - - win32:CLANGFORMAT_LIBS += -lversion - win32:ALL_CLANG_LIBS += -lversion -} - isEmpty(LLVM_VERSION) { $$llvmWarningOrError(\ "Cannot determine clang version. Set LLVM_INSTALL_DIR to build the Clang Code Model",\ @@ -204,6 +185,25 @@ isEmpty(LLVM_VERSION) { LLVM_STATIC_LIBS = $$split(LLVM_STATIC_LIBS_STRING, " ") + CLANGFORMAT_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang/Format/Format.h + exists($$CLANGFORMAT_MAIN_HEADER) { + versionIsAtLeast($$LLVM_VERSION, 7, 0, 0): { + CLANGFORMAT_LIBS=-lclangFormat -lclangToolingInclusions -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic + ALL_CLANG_LIBS=-lclangFormat -lclangToolingInclusions -lclangTooling -lclangToolingCore \ + -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ + -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ + -lclangASTMatchers -lclangAST -lclangLex -lclangBasic + } else:versionIsAtLeast($$LLVM_VERSION, 6, 0, 0): { + CLANGFORMAT_LIBS=-lclangFormat -lclangToolingCore -lclangRewrite -lclangLex -lclangBasic + ALL_CLANG_LIBS=-lclangFormat -lclangTooling -lclangToolingCore \ + -lclangRewrite -lclangIndex -lclangFrontend -lclangParse -lclangSerialization \ + -lclangSema -lclangEdit -lclangAnalysis -lclangDriver -lclangDynamicASTMatchers \ + -lclangASTMatchers -lclangAST -lclangLex -lclangBasic + } + win32:CLANGFORMAT_LIBS += -lversion + } + win32:ALL_CLANG_LIBS += -lversion + LIBCLANG_MAIN_HEADER = $$LLVM_INCLUDEPATH/clang-c/Index.h !exists($$LIBCLANG_MAIN_HEADER) { $$llvmWarningOrError(\ @@ -231,7 +231,9 @@ isEmpty(LLVM_VERSION) { warning("Clang LibTooling is disabled. Set QTC_ENABLE_CLANG_LIBTOOLING to enable it.") } - CLANGFORMAT_LIBS = -L$${LLVM_LIBDIR} $$CLANGFORMAT_LIBS $$LLVM_STATIC_LIBS + !isEmpty(CLANGFORMAT_LIBS) { + CLANGFORMAT_LIBS = -L$${LLVM_LIBDIR} $$CLANGFORMAT_LIBS $$LLVM_STATIC_LIBS + } ALL_CLANG_LIBS = -L$${LLVM_LIBDIR} $$ALL_CLANG_LIBS $$CLANG_LIB $$LLVM_STATIC_LIBS contains(QMAKE_DEFAULT_INCDIRS, $$LLVM_INCLUDEPATH): LLVM_INCLUDEPATH = diff --git a/tests/unit/unittest/creator_dependency.pri b/tests/unit/unittest/creator_dependency.pri index 41ddd5bae1..46d936d9c3 100644 --- a/tests/unit/unittest/creator_dependency.pri +++ b/tests/unit/unittest/creator_dependency.pri @@ -19,7 +19,7 @@ include(cplusplus.pri) include($$PWD/../../../src/shared/clang/clang_defines.pri) include($$PWD/../../../src/tools/clangbackend/source/clangbackendclangipc-source.pri) include($$PWD/../../../src/plugins/clangcodemodel/clangcodemodelunittestfiles.pri) -include($$PWD/../../../src/plugins/clangformat/clangformat-source.pri) +!isEmpty(CLANGFORMAT_LIBS): include($$PWD/../../../src/plugins/clangformat/clangformat-source.pri) } else { DEFINES += CLANG_VERSION=\\\"6.0.0\\\" DEFINES += "\"CLANG_RESOURCE_DIR=\\\"/usr/include\\\"\"" |