aboutsummaryrefslogtreecommitdiffstats
path: root/qbs/imports/QtcClangInstallation/functions.js
diff options
context:
space:
mode:
Diffstat (limited to 'qbs/imports/QtcClangInstallation/functions.js')
-rw-r--r--qbs/imports/QtcClangInstallation/functions.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/qbs/imports/QtcClangInstallation/functions.js b/qbs/imports/QtcClangInstallation/functions.js
new file mode 100644
index 0000000000..682211a06f
--- /dev/null
+++ b/qbs/imports/QtcClangInstallation/functions.js
@@ -0,0 +1,52 @@
+function llvmConfig(qbs)
+{
+ var llvmInstallDirFromEnv = qbs.getEnv("LLVM_INSTALL_DIR")
+ var llvmConfigVariants = [
+ "llvm-config", "llvm-config-3.2", "llvm-config-3.3", "llvm-config-3.4",
+ "llvm-config-3.5", "llvm-config-3.6", "llvm-config-4.0", "llvm-config-4.1"
+ ];
+
+ // Prefer llvm-config* from LLVM_INSTALL_DIR
+ if (llvmInstallDirFromEnv) {
+ for (var i = 0; i < llvmConfigVariants.length; ++i) {
+ var variant = llvmInstallDirFromEnv + "/bin/" + llvmConfigVariants[i];
+ if (File.exists(variant))
+ return variant;
+ }
+ }
+
+ // Find llvm-config* in PATH
+ var pathListString = qbs.getEnv("PATH");
+ var separator = qbs.hostOS.contains("windows") ? ";" : ":";
+ var pathList = pathListString.split(separator);
+ for (var i = 0; i < llvmConfigVariants.length; ++i) {
+ for (var j = 0; j < pathList.length; ++j) {
+ var variant = pathList[j] + "/" + llvmConfigVariants[i];
+ if (File.exists(variant))
+ return variant;
+ }
+ }
+
+ return undefined;
+}
+
+function includeDir(llvmConfig, processOutputReader)
+{
+ return processOutputReader.readOutput(llvmConfig, ["--includedir"])
+}
+
+function libDir(llvmConfig, processOutputReader)
+{
+ return processOutputReader.readOutput(llvmConfig, ["--libdir"])
+}
+
+function version(llvmConfig, processOutputReader)
+{
+ return processOutputReader.readOutput(llvmConfig, ["--version"])
+ .replace(/(\d+\.\d+\.\d+).*/, "$1")
+}
+
+function libraries(targetOS)
+{
+ return ["clang"] + (targetOS.contains("windows") ? ["advapi32", "shell32"] : [])
+}