aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2019-02-14 15:56:35 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2019-02-21 09:10:03 +0000
commit61775a844efc86a37aa8c11ffdefa23b1771cf10 (patch)
tree3de7c37140f97c1d848dcd7533e803d9262afd67
parentd288aec3d932e2bec4f796a1517d05f4e86e8e68 (diff)
Clang: Build clangformat only if clang/Format/Format.h exists
...in the LLVM_INSTALL_DIR. Change-Id: I974f32759bca7fb467524bf61ff7967098748f0e Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
-rw-r--r--qbs/modules/libclang/functions.js4
-rw-r--r--src/plugins/clangformat/clangformat.qbs1
-rw-r--r--src/shared/clang/clang_installation.pri42
-rw-r--r--tests/unit/unittest/creator_dependency.pri2
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\\\"\""