QbsProjectManager: Use qbs.toolchainType in profiles

This has been the property to set for a long time, so let's finaly do it
here as well.

Change-Id: I9b1c1d7d5004d54ccb50d42b2fb6ea43128f89bf
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Christian Kandeler
2024-10-22 12:41:37 +02:00
parent 929a574c22
commit 49e268d649
2 changed files with 14 additions and 15 deletions

View File

@@ -102,30 +102,30 @@ static QString targetPlatform(const ProjectExplorer::Abi &abi, const ProjectExpl
return QString();
}
static QStringList toolchainList(const ProjectExplorer::Toolchain *tc)
static QString toolchainType(const ProjectExplorer::Toolchain *tc)
{
const Utils::Id type = tc->typeId();
if (type == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID
|| (type == Android::Constants::ANDROID_TOOLCHAIN_TYPEID
&& tc->compilerCommand().fileName().contains("clang"))) {
return {"clang", "llvm", "gcc"};
return "clang";
}
if (type == ProjectExplorer::Constants::GCC_TOOLCHAIN_TYPEID
|| type == Android::Constants::ANDROID_TOOLCHAIN_TYPEID) {
return {"gcc"}; // TODO: Detect llvm-gcc
return "gcc"; // TODO: Detect llvm-gcc
}
if (type == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID)
return {"mingw", "gcc"};
return "mingw";
if (type == ProjectExplorer::Constants::CLANG_CL_TOOLCHAIN_TYPEID)
return {"clang-cl", "msvc"};
return "clang-cl";
if (type == ProjectExplorer::Constants::MSVC_TOOLCHAIN_TYPEID)
return {"msvc"};
return "msvc";
if (type == BareMetal::Constants::IAREW_TOOLCHAIN_TYPEID)
return {"iar"};
return "iar";
if (type == BareMetal::Constants::KEIL_TOOLCHAIN_TYPEID)
return {"keil"};
return "keil";
if (type == BareMetal::Constants::SDCC_TOOLCHAIN_TYPEID)
return {"sdcc"};
return "sdcc";
return {};
}
@@ -258,7 +258,7 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
}
data.insert(QLatin1String(QBS_TARGETPLATFORM), targetPlatform(targetAbi, k));
QStringList toolchain = toolchainList(mainTc);
QString toolchain = toolchainType(mainTc);
if (targetAbi.osFlavor() == Abi::AndroidLinuxFlavor) {
const IDevice::ConstPtr dev = DeviceKitAspect::device(k);
if (dev) {
@@ -313,12 +313,12 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
if (!mainToolchainPrefix.isEmpty())
data.insert(QLatin1String(CPP_TOOLCHAINPREFIX), mainToolchainPrefix);
if (toolchain.contains(QLatin1String("clang-cl"))) {
if (toolchain == "clang-cl") {
data.insert(QLatin1String(CPP_COMPILERNAME), mainCompilerName);
const auto clangClToolchain =
static_cast<ProjectExplorer::Internal::ClangClToolchain *>(mainTc);
data.insert(QLatin1String(CPP_VCVARSALLPATH), clangClToolchain->varsBat());
} else if (toolchain.contains(QLatin1String("msvc"))) {
} else if (toolchain == "msvc") {
data.insert(QLatin1String(CPP_COMPILERNAME), mainCompilerName);
} else {
if (!mainCompilerName.isEmpty())
@@ -353,7 +353,7 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
if (compilerReMatch.hasMatch()) {
const QString developerPath = compilerReMatch.captured(QStringLiteral("developerpath"));
data.insert(QLatin1String(XCODE_DEVELOPERPATH), developerPath);
toolchain.insert(0, QStringLiteral("xcode"));
toolchain = "xcode";
// If the sysroot is part of this developer path, set the canonical SDK name
const QDir sysrootdir(QDir::cleanPath(sysroot));
@@ -382,7 +382,7 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
}
if (!toolchain.isEmpty())
data.insert(QLatin1String(QBS_TOOLCHAIN), toolchain);
data.insert("qbs.toolchainType", toolchain);
return data;
}

View File

@@ -54,7 +54,6 @@ const char QBS_TARGETPLATFORM[] = "qbs.targetPlatform";
const char QBS_SYSROOT[] = "qbs.sysroot";
const char QBS_ARCHITECTURES[] = "qbs.architectures";
const char QBS_ARCHITECTURE[] = "qbs.architecture";
const char QBS_TOOLCHAIN[] = "qbs.toolchain";
const char CPP_TOOLCHAINPATH[] = "cpp.toolchainInstallPath";
const char CPP_TOOLCHAINPREFIX[] = "cpp.toolchainPrefix";
const char CPP_COMPILERNAME[] = "cpp.compilerName";