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
|
|
|
|
|
|
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
|
|
|
|
|
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;
|
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
|
|
|
|
|
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
|
2018-06-20 10:18:50 +02:00
|
|
|
property bool toolingEnabled: Environment.getEnv("QTC_ENABLE_CLANG_LIBTOOLING")
|
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."
|
2016-06-27 13:16:15 +02:00
|
|
|
+ " For details, see doc/src/editors/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
|
|
|
}
|
|
|
|
|
}
|