forked from qt-creator/qt-creator
clang: Support user-provided llvm-config
... in the qmake and qbs builds. (The look-up mechanism in the cmake build is completely different.) Fixes: QTCREATORBUG-20592 Change-Id: I049740795108060aeada62dd030e82390e07fe48 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -35,6 +35,9 @@ function isSuitableLLVMConfig(llvmConfigCandidate, qtcFunctions)
|
|||||||
|
|
||||||
function llvmConfig(hostOS, qtcFunctions)
|
function llvmConfig(hostOS, qtcFunctions)
|
||||||
{
|
{
|
||||||
|
var llvmConfigFromEnv = Environment.getEnv("LLVM_CONFIG");
|
||||||
|
if (llvmConfigFromEnv)
|
||||||
|
return llvmConfigFromEnv;
|
||||||
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR")
|
||||||
var llvmConfigVariants = [
|
var llvmConfigVariants = [
|
||||||
// CLANG-UPGRADE-CHECK: Adapt once we require a new minimum version.
|
// CLANG-UPGRADE-CHECK: Adapt once we require a new minimum version.
|
||||||
|
@@ -69,7 +69,7 @@ Module {
|
|||||||
validate: {
|
validate: {
|
||||||
if (!clangProbe.found) {
|
if (!clangProbe.found) {
|
||||||
console.warn("No usable libclang version found."
|
console.warn("No usable libclang version found."
|
||||||
+ " Set LLVM_INSTALL_DIR to build the Clang Code Model."
|
+ " Set LLVM_CONFIG to build the Clang Code Model."
|
||||||
+ " For details, see"
|
+ " For details, see"
|
||||||
+ " doc/src/editors/creator-only/creator-clang-codemodel.qdoc.");
|
+ " doc/src/editors/creator-only/creator-clang-codemodel.qdoc.");
|
||||||
throw new Error();
|
throw new Error();
|
||||||
|
@@ -1,16 +1,21 @@
|
|||||||
isEmpty(LLVM_INSTALL_DIR):LLVM_INSTALL_DIR=$$(LLVM_INSTALL_DIR)
|
isEmpty(LLVM_CONFIG): LLVM_CONFIG=$$(LLVM_CONFIG)
|
||||||
LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR)
|
llvm_config = $$clean_path($$LLVM_CONFIG)
|
||||||
|
!isEmpty(llvm_config):!exists($$llvm_config) {
|
||||||
|
error("Explicitly given LLVM_CONFIG does not exist: $$llvm_config")
|
||||||
|
}
|
||||||
|
|
||||||
!isEmpty(LLVM_INSTALL_DIR):!exists($$LLVM_INSTALL_DIR) {
|
isEmpty(LLVM_CONFIG) {
|
||||||
|
isEmpty(LLVM_INSTALL_DIR):LLVM_INSTALL_DIR=$$(LLVM_INSTALL_DIR)
|
||||||
|
LLVM_INSTALL_DIR = $$clean_path($$LLVM_INSTALL_DIR)
|
||||||
|
!isEmpty(LLVM_INSTALL_DIR):!exists($$LLVM_INSTALL_DIR) {
|
||||||
error("Explicitly given LLVM_INSTALL_DIR does not exist: $$LLVM_INSTALL_DIR")
|
error("Explicitly given LLVM_INSTALL_DIR does not exist: $$LLVM_INSTALL_DIR")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
defineReplace(llvmWarningOrError) {
|
defineReplace(llvmWarningOrError) {
|
||||||
warningText = $$1
|
warningText = $$1
|
||||||
errorText = $$2
|
isEmpty(llvm_config): warning($$warningText)
|
||||||
isEmpty(errorText): errorText = $$warningText
|
else: error($$warningText)
|
||||||
isEmpty(LLVM_INSTALL_DIR): warning($$warningText)
|
|
||||||
else: error($$errorText)
|
|
||||||
return(false)
|
return(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -134,29 +139,25 @@ defineReplace(extractWarnings) {
|
|||||||
BIN_EXTENSION =
|
BIN_EXTENSION =
|
||||||
win32: BIN_EXTENSION = .exe
|
win32: BIN_EXTENSION = .exe
|
||||||
|
|
||||||
isEmpty(LLVM_INSTALL_DIR) {
|
isEmpty(llvm_config) {
|
||||||
unix {
|
isEmpty(LLVM_INSTALL_DIR) {
|
||||||
llvm_config = $$system(which llvm-config-11)
|
unix: llvm_config = $$system(which llvm-config-11)
|
||||||
isEmpty(llvm_config): llvm_config = $$system(which llvm-config-10)
|
|
||||||
isEmpty(llvm_config): llvm_config = $$system(which llvm-config-9)
|
|
||||||
}
|
|
||||||
isEmpty(llvm_config): llvm_config = llvm-config
|
isEmpty(llvm_config): llvm_config = llvm-config
|
||||||
} else {
|
} else {
|
||||||
exists($$LLVM_INSTALL_DIR/bin/llvm-config-11$$BIN_EXTENSION) {
|
exists($$LLVM_INSTALL_DIR/bin/llvm-config-11$$BIN_EXTENSION) {
|
||||||
llvm_config = $$system_quote($$LLVM_INSTALL_DIR/bin/llvm-config-11)
|
llvm_config = $$system_quote($$LLVM_INSTALL_DIR/bin/llvm-config-11)
|
||||||
} else {
|
} else {
|
||||||
llvm_config = $$system_quote($$LLVM_INSTALL_DIR/bin/llvm-config)
|
llvm_config = $$system_quote($$LLVM_INSTALL_DIR/bin/llvm-config)
|
||||||
requires(exists($$llvm_config$$BIN_EXTENSION))
|
requires(exists($$llvm_config$$BIN_EXTENSION))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
output = $$system($$llvm_config --version, lines)
|
output = $$system($$llvm_config --version, lines)
|
||||||
LLVM_VERSION = $$extractVersion($$output)
|
LLVM_VERSION = $$extractVersion($$output)
|
||||||
|
|
||||||
isEmpty(LLVM_VERSION) {
|
isEmpty(LLVM_VERSION) {
|
||||||
$$llvmWarningOrError(\
|
$$llvmWarningOrError("Cannot determine clang version. Set LLVM_CONFIG to build the Clang Code Model")
|
||||||
"Cannot determine clang version. Set LLVM_INSTALL_DIR to build the Clang Code Model",\
|
|
||||||
"LLVM_INSTALL_DIR does not contain a valid llvm-config, candidate: $$llvm_config")
|
|
||||||
} else:!versionIsAtLeast($$LLVM_VERSION, 9, 0, 0): {
|
} else:!versionIsAtLeast($$LLVM_VERSION, 9, 0, 0): {
|
||||||
# CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
|
# CLANG-UPGRADE-CHECK: Adapt minimum version numbers.
|
||||||
$$llvmWarningOrError(\
|
$$llvmWarningOrError(\
|
||||||
|
Reference in New Issue
Block a user