diff options
Diffstat (limited to 'qbs/imports/QtcClangInstallation/functions.js')
-rw-r--r-- | qbs/imports/QtcClangInstallation/functions.js | 52 |
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"] : []) +} |