diff options
Diffstat (limited to 'src/plugins/clangcodemodel/clangcodemodel.qbs')
-rw-r--r-- | src/plugins/clangcodemodel/clangcodemodel.qbs | 48 |
1 files changed, 30 insertions, 18 deletions
diff --git a/src/plugins/clangcodemodel/clangcodemodel.qbs b/src/plugins/clangcodemodel/clangcodemodel.qbs index c2c8ed7034..499f2e0492 100644 --- a/src/plugins/clangcodemodel/clangcodemodel.qbs +++ b/src/plugins/clangcodemodel/clangcodemodel.qbs @@ -1,5 +1,7 @@ import qbs import qbs.File +import qbs.Process +import QtcProcessOutputReader QtcPlugin { name: "ClangCodeModel" @@ -11,14 +13,12 @@ QtcPlugin { Depends { name: "TextEditor" } Depends { name: "Utils" } - property string llvmInstallDir: qbs.getEnv("LLVM_INSTALL_DIR") - condition: llvmInstallDir && !llvmInstallDir.isEmpty + property string llvmInstallDirFromEnv: qbs.getEnv("LLVM_INSTALL_DIR") property bool clangCompletion: true property bool clangHighlighting: true property bool clangIndexing: false - // Not used atm; we just rely on the LLVM_INSTALL_DIR environment variable. property string llvmConfig: { var llvmConfigVariants = [ "llvm-config", "llvm-config-3.2", "llvm-config-3.3", "llvm-config-3.4", @@ -26,10 +26,12 @@ QtcPlugin { ]; // Prefer llvm-config* from LLVM_INSTALL_DIR - for (var i = 0; i < llvmConfigVariants.length; ++i) { - var variant = llvmInstallDir + "/bin/" + llvmConfigVariants[i]; - if (File.exists(variant)) - return variant; + 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 @@ -44,20 +46,17 @@ QtcPlugin { } } - // Fallback - return "llvm-config"; + return undefined; } + condition: llvmConfig - property string llvmIncludeDir: llvmInstallDir + "/include" - cpp.includePaths: base.concat(llvmIncludeDir) + property string llvmIncludeDir: QtcProcessOutputReader.readOutput(llvmConfig, ["--includedir"]) + property string llvmLibDir: QtcProcessOutputReader.readOutput(llvmConfig, ["--libdir"]) + property string llvmVersion: QtcProcessOutputReader.readOutput(llvmConfig, ["--version"]) + .replace(/(\d+\.\d+).*/, "$1") - property stringList llvmLibDirs: { - var list = [llvmInstallDir + "/lib"]; - if (qbs.targetOS.contains("windows")) - list.push(llvmInstallDir + "/bin"); - return list; - } - cpp.libraryPaths: base.concat(llvmLibDirs) + cpp.includePaths: base.concat(llvmIncludeDir) + cpp.libraryPaths: base.concat(llvmLibDir) cpp.rpaths: cpp.libraryPaths property string llvmLib: "clang" @@ -65,6 +64,19 @@ QtcPlugin { ? ["advapi32", "shell32"] : [] cpp.dynamicLibraries: base.concat(llvmLib).concat(additionalLibraries) + cpp.defines: { + var defines = base; + defines.push('CLANG_VERSION="' + llvmVersion + '"'); + defines.push('CLANG_RESOURCE_DIR="' + llvmLibDir + '/clang/' + llvmVersion + '/include"'); + if (clangCompletion) + defines.push("CLANG_COMPLETION"); + if (clangHighlighting) + defines.push("CLANG_HIGHLIGHTING"); + if (clangIndexing) + defines.push("CLANG_INDEXING"); + return defines; + } + Group { name: "Completion support" condition: product.clangCompletion |