2016-06-16 12:11:22 +02:00
|
|
|
import qbs
|
2017-09-29 15:04:05 +02:00
|
|
|
import qbs.Environment
|
2016-06-16 12:11:22 +02:00
|
|
|
import qbs.File
|
2017-09-29 15:04:05 +02:00
|
|
|
import qbs.Utilities
|
2016-06-16 12:11:22 +02:00
|
|
|
import QtcFunctions
|
|
|
|
|
import "functions.js" as ClangFunctions
|
|
|
|
|
|
|
|
|
|
Module {
|
|
|
|
|
Probe {
|
|
|
|
|
id: clangProbe
|
|
|
|
|
|
2018-01-17 15:19:17 +01:00
|
|
|
property stringList hostOS: qbs.hostOS
|
|
|
|
|
property stringList targetOS: qbs.targetOS
|
2018-12-18 22:45:10 +02:00
|
|
|
property stringList toolchain: qbs.toolchain
|
2018-01-17 15:19:17 +01:00
|
|
|
|
2016-06-16 12:11:22 +02:00
|
|
|
property string llvmConfig
|
2016-11-24 11:35:19 +01:00
|
|
|
property string llvmVersion
|
2016-06-16 12:11:22 +02:00
|
|
|
property string llvmIncludeDir
|
|
|
|
|
property string llvmLibDir
|
2018-04-30 15:26:36 +02:00
|
|
|
property string llvmBinDir
|
2016-06-16 12:11:22 +02:00
|
|
|
property stringList llvmLibs
|
2017-09-29 15:04:05 +02:00
|
|
|
property stringList llvmToolingLibs
|
|
|
|
|
property stringList llvmToolingDefines
|
|
|
|
|
property stringList llvmToolingIncludes
|
|
|
|
|
property stringList llvmToolingCxxFlags
|
2018-09-18 18:06:12 +02:00
|
|
|
property stringList llvmFormattingLibs
|
2017-09-29 15:04:05 +02:00
|
|
|
property string llvmBuildMode
|
2016-06-16 12:11:22 +02:00
|
|
|
|
|
|
|
|
configure: {
|
2018-01-17 15:19:17 +01:00
|
|
|
llvmConfig = ClangFunctions.llvmConfig(hostOS, QtcFunctions);
|
2016-11-24 11:35:19 +01:00
|
|
|
llvmVersion = ClangFunctions.version(llvmConfig);
|
2016-06-16 12:11:22 +02:00
|
|
|
llvmIncludeDir = ClangFunctions.includeDir(llvmConfig);
|
|
|
|
|
llvmLibDir = ClangFunctions.libDir(llvmConfig);
|
2018-04-30 15:26:36 +02:00
|
|
|
llvmBinDir = ClangFunctions.binDir(llvmConfig);
|
2018-01-17 15:19:17 +01:00
|
|
|
llvmLibs = ClangFunctions.libraries(targetOS);
|
|
|
|
|
llvmToolingLibs = ClangFunctions.toolingLibs(llvmConfig, targetOS);
|
2017-09-29 15:04:05 +02:00
|
|
|
llvmBuildMode = ClangFunctions.buildMode(llvmConfig);
|
|
|
|
|
var toolingParams = ClangFunctions.toolingParameters(llvmConfig);
|
|
|
|
|
llvmToolingDefines = toolingParams.defines;
|
|
|
|
|
llvmToolingIncludes = toolingParams.includes;
|
|
|
|
|
llvmToolingCxxFlags = toolingParams.cxxFlags;
|
2019-04-17 17:57:47 +03:00
|
|
|
if (toolchain.contains("gcc")) {
|
2019-01-03 11:15:42 +01:00
|
|
|
llvmToolingCxxFlags.push("-Wno-unused-parameter");
|
2019-04-17 17:57:47 +03:00
|
|
|
// clang/Format/Format.h has intentional multiline comments
|
|
|
|
|
llvmToolingCxxFlags.push("-Wno-comment");
|
|
|
|
|
}
|
2018-10-02 10:53:31 +02:00
|
|
|
llvmFormattingLibs = ClangFunctions.formattingLibs(llvmConfig, QtcFunctions, targetOS);
|
2016-06-16 12:11:22 +02:00
|
|
|
found = llvmConfig && File.exists(llvmIncludeDir.concat("/clang-c/Index.h"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
property string llvmConfig: clangProbe.llvmConfig
|
2016-11-24 11:35:19 +01:00
|
|
|
property string llvmVersion: clangProbe.llvmVersion
|
2016-06-16 12:11:22 +02:00
|
|
|
property string llvmIncludeDir: clangProbe.llvmIncludeDir
|
|
|
|
|
property string llvmLibDir: clangProbe.llvmLibDir
|
2018-04-30 15:26:36 +02:00
|
|
|
property string llvmBinDir: clangProbe.llvmBinDir
|
2016-06-16 12:11:22 +02:00
|
|
|
property stringList llvmLibs: clangProbe.llvmLibs
|
2017-09-29 15:04:05 +02:00
|
|
|
property stringList llvmToolingLibs: clangProbe.llvmToolingLibs
|
2018-09-18 18:06:12 +02:00
|
|
|
property stringList llvmFormattingLibs: clangProbe.llvmFormattingLibs
|
2017-09-29 15:04:05 +02:00
|
|
|
property string llvmBuildMode: clangProbe.llvmBuildMode
|
|
|
|
|
property bool llvmBuildModeMatches: qbs.buildVariant === llvmBuildMode.toLowerCase()
|
|
|
|
|
property stringList llvmToolingDefines: clangProbe.llvmToolingDefines
|
|
|
|
|
property stringList llvmToolingIncludes: clangProbe.llvmToolingIncludes.filter(function(incl) {
|
|
|
|
|
return incl != llvmIncludeDir;
|
|
|
|
|
})
|
|
|
|
|
property stringList llvmToolingCxxFlags: clangProbe.llvmToolingCxxFlags
|
2019-04-12 00:26:44 +03:00
|
|
|
property bool toolingEnabled: !Environment.getEnv("QTC_DISABLE_CLANG_REFACTORING")
|
2016-06-16 12:11:22 +02:00
|
|
|
|
|
|
|
|
validate: {
|
2016-06-27 13:16:15 +02:00
|
|
|
if (!clangProbe.found) {
|
2018-01-11 14:15:03 +01:00
|
|
|
console.warn("No usable libclang version found."
|
|
|
|
|
+ " Set LLVM_INSTALL_DIR to build the Clang Code Model."
|
2018-08-20 13:43:11 +02:00
|
|
|
+ " For details, see"
|
|
|
|
|
+ " doc/src/editors/creator-only/creator-clang-codemodel.qdoc.");
|
2018-01-11 14:15:03 +01:00
|
|
|
throw new Error();
|
2016-06-27 13:16:15 +02:00
|
|
|
}
|
2016-06-16 12:11:22 +02:00
|
|
|
}
|
|
|
|
|
}
|