forked from qt-creator/qt-creator
ProjectExplorer: Some more ToolChain->Toolchain renamings
Change-Id: I5cb2adf544a846f45f7fe7ce60f67b10ad100d91 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -1124,13 +1124,13 @@ void AndroidConfigurations::setConfig(const AndroidConfig &devConfigs)
|
|||||||
|
|
||||||
m_instance->save();
|
m_instance->save();
|
||||||
updateAndroidDevice();
|
updateAndroidDevice();
|
||||||
registerNewToolChains();
|
registerNewToolchains();
|
||||||
updateAutomaticKitList();
|
updateAutomaticKitList();
|
||||||
removeOldToolChains();
|
removeOldToolchains();
|
||||||
emit m_instance->updated();
|
emit m_instance->updated();
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool matchToolChain(const Toolchain *atc, const Toolchain *btc)
|
static bool matchToolchain(const Toolchain *atc, const Toolchain *btc)
|
||||||
{
|
{
|
||||||
if (atc == btc)
|
if (atc == btc)
|
||||||
return true;
|
return true;
|
||||||
@@ -1144,21 +1144,21 @@ static bool matchToolChain(const Toolchain *atc, const Toolchain *btc)
|
|||||||
return atc->targetAbi() == btc->targetAbi();
|
return atc->targetAbi() == btc->targetAbi();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidConfigurations::registerNewToolChains()
|
void AndroidConfigurations::registerNewToolchains()
|
||||||
{
|
{
|
||||||
const Toolchains existingAndroidToolChains
|
const Toolchains existingAndroidToolchains
|
||||||
= ToolchainManager::toolchains(Utils::equal(&Toolchain::typeId, Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
= ToolchainManager::toolchains(Utils::equal(&Toolchain::typeId, Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
||||||
|
|
||||||
const Toolchains newToolchains = AndroidToolchainFactory::autodetectToolChains(
|
const Toolchains newToolchains = AndroidToolchainFactory::autodetectToolchains(
|
||||||
existingAndroidToolChains);
|
existingAndroidToolchains);
|
||||||
|
|
||||||
for (Toolchain *tc : newToolchains)
|
for (Toolchain *tc : newToolchains)
|
||||||
ToolchainManager::registerToolchain(tc);
|
ToolchainManager::registerToolchain(tc);
|
||||||
|
|
||||||
registerCustomToolChainsAndDebuggers();
|
registerCustomToolchainsAndDebuggers();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidConfigurations::removeOldToolChains()
|
void AndroidConfigurations::removeOldToolchains()
|
||||||
{
|
{
|
||||||
const auto tcs = ToolchainManager::toolchains(Utils::equal(&Toolchain::typeId,
|
const auto tcs = ToolchainManager::toolchains(Utils::equal(&Toolchain::typeId,
|
||||||
Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
||||||
@@ -1246,7 +1246,7 @@ static QVariant findOrRegisterDebugger(Toolchain *tc,
|
|||||||
bool customDebugger = false)
|
bool customDebugger = false)
|
||||||
{
|
{
|
||||||
const auto ¤tConfig = AndroidConfigurations::currentConfig();
|
const auto ¤tConfig = AndroidConfigurations::currentConfig();
|
||||||
const FilePath ndk = static_cast<AndroidToolChain *>(tc)->ndkLocation();
|
const FilePath ndk = static_cast<AndroidToolchain *>(tc)->ndkLocation();
|
||||||
const FilePath lldbCommand = currentConfig.lldbPathFromNdk(ndk);
|
const FilePath lldbCommand = currentConfig.lldbPathFromNdk(ndk);
|
||||||
const Debugger::DebuggerItem *existingLldb = existingDebugger(lldbCommand,
|
const Debugger::DebuggerItem *existingLldb = existingDebugger(lldbCommand,
|
||||||
Debugger::LldbEngineType);
|
Debugger::LldbEngineType);
|
||||||
@@ -1304,22 +1304,22 @@ static QVariant findOrRegisterDebugger(Toolchain *tc,
|
|||||||
return registeredLldb.isNull() ? registeredGdb : registeredLldb;
|
return registeredLldb.isNull() ? registeredGdb : registeredLldb;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidConfigurations::registerCustomToolChainsAndDebuggers()
|
void AndroidConfigurations::registerCustomToolchainsAndDebuggers()
|
||||||
{
|
{
|
||||||
const Toolchains existingAndroidToolChains = ToolchainManager::toolchains(
|
const Toolchains existingAndroidToolchains = ToolchainManager::toolchains(
|
||||||
Utils::equal(&Toolchain::typeId, Utils::Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
Utils::equal(&Toolchain::typeId, Utils::Id(Constants::ANDROID_TOOLCHAIN_TYPEID)));
|
||||||
|
|
||||||
const FilePaths customNdks = FileUtils::toFilePathList(currentConfig().getCustomNdkList());
|
const FilePaths customNdks = FileUtils::toFilePathList(currentConfig().getCustomNdkList());
|
||||||
const Toolchains customToolchains
|
const Toolchains customToolchains
|
||||||
= AndroidToolchainFactory::autodetectToolChainsFromNdks(existingAndroidToolChains,
|
= AndroidToolchainFactory::autodetectToolchainsFromNdks(existingAndroidToolchains,
|
||||||
customNdks,
|
customNdks,
|
||||||
true);
|
true);
|
||||||
for (Toolchain *tc : customToolchains) {
|
for (Toolchain *tc : customToolchains) {
|
||||||
ToolchainManager::registerToolchain(tc);
|
ToolchainManager::registerToolchain(tc);
|
||||||
const auto androidToolChain = static_cast<AndroidToolChain *>(tc);
|
const auto androidToolchain = static_cast<AndroidToolchain *>(tc);
|
||||||
QString abiStr;
|
QString abiStr;
|
||||||
if (androidToolChain)
|
if (androidToolchain)
|
||||||
abiStr = androidToolChain->platformLinkerFlags().at(1).split('-').first();
|
abiStr = androidToolchain->platformLinkerFlags().at(1).split('-').first();
|
||||||
findOrRegisterDebugger(tc, {abiStr}, true);
|
findOrRegisterDebugger(tc, {abiStr}, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1369,27 +1369,27 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (const QtVersion *qt : qtVersionsForArch.value(tc->targetAbi())) {
|
for (const QtVersion *qt : qtVersionsForArch.value(tc->targetAbi())) {
|
||||||
FilePath tcNdk = static_cast<const AndroidToolChain *>(tc)->ndkLocation();
|
FilePath tcNdk = static_cast<const AndroidToolchain *>(tc)->ndkLocation();
|
||||||
if (tcNdk != currentConfig().ndkLocation(qt))
|
if (tcNdk != currentConfig().ndkLocation(qt))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
const Toolchains allLanguages
|
const Toolchains allLanguages
|
||||||
= Utils::filtered(toolchains, [tc, tcNdk](Toolchain *otherTc) {
|
= Utils::filtered(toolchains, [tc, tcNdk](Toolchain *otherTc) {
|
||||||
FilePath otherNdk = static_cast<const AndroidToolChain *>(otherTc)->ndkLocation();
|
FilePath otherNdk = static_cast<const AndroidToolchain *>(otherTc)->ndkLocation();
|
||||||
return tc->targetAbi() == otherTc->targetAbi() && tcNdk == otherNdk;
|
return tc->targetAbi() == otherTc->targetAbi() && tcNdk == otherNdk;
|
||||||
});
|
});
|
||||||
|
|
||||||
QHash<Id, Toolchain *> toolChainForLanguage;
|
QHash<Id, Toolchain *> toolchainForLanguage;
|
||||||
for (Toolchain *tc : allLanguages)
|
for (Toolchain *tc : allLanguages)
|
||||||
toolChainForLanguage[tc->language()] = tc;
|
toolchainForLanguage[tc->language()] = tc;
|
||||||
|
|
||||||
Kit *existingKit = Utils::findOrDefault(existingKits, [&](const Kit *b) {
|
Kit *existingKit = Utils::findOrDefault(existingKits, [&](const Kit *b) {
|
||||||
if (qt != QtKitAspect::qtVersion(b))
|
if (qt != QtKitAspect::qtVersion(b))
|
||||||
return false;
|
return false;
|
||||||
return matchToolChain(toolChainForLanguage[ProjectExplorer::Constants::CXX_LANGUAGE_ID],
|
return matchToolchain(toolchainForLanguage[ProjectExplorer::Constants::CXX_LANGUAGE_ID],
|
||||||
ToolchainKitAspect::cxxToolChain(b))
|
ToolchainKitAspect::cxxToolchain(b))
|
||||||
&& matchToolChain(toolChainForLanguage[ProjectExplorer::Constants::C_LANGUAGE_ID],
|
&& matchToolchain(toolchainForLanguage[ProjectExplorer::Constants::C_LANGUAGE_ID],
|
||||||
ToolchainKitAspect::cToolChain(b));
|
ToolchainKitAspect::cToolchain(b));
|
||||||
});
|
});
|
||||||
|
|
||||||
const auto initializeKit = [allLanguages, tc, qt](Kit *k) {
|
const auto initializeKit = [allLanguages, tc, qt](Kit *k) {
|
||||||
@@ -1397,7 +1397,7 @@ void AndroidConfigurations::updateAutomaticKitList()
|
|||||||
k->setAutoDetectionSource("AndroidConfiguration");
|
k->setAutoDetectionSource("AndroidConfiguration");
|
||||||
DeviceTypeKitAspect::setDeviceTypeId(k, Constants::ANDROID_DEVICE_TYPE);
|
DeviceTypeKitAspect::setDeviceTypeId(k, Constants::ANDROID_DEVICE_TYPE);
|
||||||
for (Toolchain *tc : allLanguages)
|
for (Toolchain *tc : allLanguages)
|
||||||
ToolchainKitAspect::setToolChain(k, tc);
|
ToolchainKitAspect::setToolchain(k, tc);
|
||||||
QtKitAspect::setQtVersion(k, qt);
|
QtKitAspect::setQtVersion(k, qt);
|
||||||
QStringList abis = static_cast<const AndroidQtVersion *>(qt)->androidAbis();
|
QStringList abis = static_cast<const AndroidQtVersion *>(qt)->androidAbis();
|
||||||
Debugger::DebuggerKitAspect::setDebugger(k, findOrRegisterDebugger(tc, abis));
|
Debugger::DebuggerKitAspect::setDebugger(k, findOrRegisterDebugger(tc, abis));
|
||||||
|
@@ -185,10 +185,10 @@ public:
|
|||||||
static void setConfig(const AndroidConfig &config);
|
static void setConfig(const AndroidConfig &config);
|
||||||
static AndroidConfigurations *instance();
|
static AndroidConfigurations *instance();
|
||||||
|
|
||||||
static void registerNewToolChains();
|
static void registerNewToolchains();
|
||||||
static void registerCustomToolChainsAndDebuggers();
|
static void registerCustomToolchainsAndDebuggers();
|
||||||
static void removeUnusedDebuggers();
|
static void removeUnusedDebuggers();
|
||||||
static void removeOldToolChains();
|
static void removeOldToolchains();
|
||||||
static void updateAutomaticKitList();
|
static void updateAutomaticKitList();
|
||||||
static bool force32bitEmulator();
|
static bool force32bitEmulator();
|
||||||
|
|
||||||
|
@@ -183,7 +183,7 @@ QJsonObject deploymentSettings(const Target *target)
|
|||||||
if (!qt)
|
if (!qt)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
auto tc = ToolchainKitAspect::cxxToolChain(target->kit());
|
auto tc = ToolchainKitAspect::cxxToolchain(target->kit());
|
||||||
if (!tc || tc->typeId() != Constants::ANDROID_TOOLCHAIN_TYPEID)
|
if (!tc || tc->typeId() != Constants::ANDROID_TOOLCHAIN_TYPEID)
|
||||||
return {};
|
return {};
|
||||||
QJsonObject settings;
|
QJsonObject settings;
|
||||||
|
@@ -73,7 +73,7 @@ bool AndroidPackageInstallationStep::init()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit());
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
QTC_ASSERT(tc, reportWarningOrError(Tr::tr("\"%1\" step has an invalid C++ toolchain.")
|
QTC_ASSERT(tc, reportWarningOrError(Tr::tr("\"%1\" step has an invalid C++ toolchain.")
|
||||||
.arg(displayName()), Task::TaskType::Error);
|
.arg(displayName()), Task::TaskType::Error);
|
||||||
return false);
|
return false);
|
||||||
|
@@ -132,11 +132,11 @@ void AndroidPlugin::kitsRestored()
|
|||||||
&AndroidPlugin::askUserAboutAndroidSetup, Qt::QueuedConnection);
|
&AndroidPlugin::askUserAboutAndroidSetup, Qt::QueuedConnection);
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidConfigurations::registerNewToolChains();
|
AndroidConfigurations::registerNewToolchains();
|
||||||
AndroidConfigurations::updateAutomaticKitList();
|
AndroidConfigurations::updateAutomaticKitList();
|
||||||
connect(QtSupport::QtVersionManager::instance(), &QtSupport::QtVersionManager::qtVersionsChanged,
|
connect(QtSupport::QtVersionManager::instance(), &QtSupport::QtVersionManager::qtVersionsChanged,
|
||||||
AndroidConfigurations::instance(), [] {
|
AndroidConfigurations::instance(), [] {
|
||||||
AndroidConfigurations::registerNewToolChains();
|
AndroidConfigurations::registerNewToolchains();
|
||||||
AndroidConfigurations::updateAutomaticKitList();
|
AndroidConfigurations::updateAutomaticKitList();
|
||||||
});
|
});
|
||||||
disconnect(KitManager::instance(), &KitManager::kitsLoaded,
|
disconnect(KitManager::instance(), &KitManager::kitsLoaded,
|
||||||
|
@@ -34,8 +34,8 @@ Q_GLOBAL_STATIC_WITH_ARGS(ClangTargetsType, ClangTargets, ({
|
|||||||
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}}
|
Abi(Abi::ArmArchitecture, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, 64)}}
|
||||||
));
|
));
|
||||||
|
|
||||||
static Toolchain *findToolChain(FilePath &compilerPath, Id lang, const QString &target,
|
static Toolchain *findToolchain(FilePath &compilerPath, Id lang, const QString &target,
|
||||||
const ToolChainList &alreadyKnown)
|
const ToolchainList &alreadyKnown)
|
||||||
{
|
{
|
||||||
Toolchain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](Toolchain *tc) {
|
Toolchain *tc = Utils::findOrDefault(alreadyKnown, [target, compilerPath, lang](Toolchain *tc) {
|
||||||
return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
|
return tc->typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
|
||||||
@@ -46,25 +46,25 @@ static Toolchain *findToolChain(FilePath &compilerPath, Id lang, const QString &
|
|||||||
return tc;
|
return tc;
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidToolChain::AndroidToolChain()
|
AndroidToolchain::AndroidToolchain()
|
||||||
: GccToolchain(Constants::ANDROID_TOOLCHAIN_TYPEID, Clang)
|
: GccToolchain(Constants::ANDROID_TOOLCHAIN_TYPEID, Clang)
|
||||||
{
|
{
|
||||||
setTypeDisplayName(Tr::tr("Android Clang"));
|
setTypeDisplayName(Tr::tr("Android Clang"));
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath AndroidToolChain::ndkLocation() const
|
FilePath AndroidToolchain::ndkLocation() const
|
||||||
{
|
{
|
||||||
return m_ndkLocation;
|
return m_ndkLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidToolChain::setNdkLocation(const FilePath &ndkLocation)
|
void AndroidToolchain::setNdkLocation(const FilePath &ndkLocation)
|
||||||
{
|
{
|
||||||
m_ndkLocation = ndkLocation;
|
m_ndkLocation = ndkLocation;
|
||||||
}
|
}
|
||||||
|
|
||||||
AndroidToolChain::~AndroidToolChain() = default;
|
AndroidToolchain::~AndroidToolchain() = default;
|
||||||
|
|
||||||
bool AndroidToolChain::isValid() const
|
bool AndroidToolchain::isValid() const
|
||||||
{
|
{
|
||||||
if (m_ndkLocation.isEmpty()) {
|
if (m_ndkLocation.isEmpty()) {
|
||||||
QStringList ndkParts(compilerCommand().toString().split("toolchains/llvm/prebuilt/"));
|
QStringList ndkParts(compilerCommand().toString().split("toolchains/llvm/prebuilt/"));
|
||||||
@@ -85,7 +85,7 @@ bool AndroidToolChain::isValid() const
|
|||||||
&& !originalTargetTriple().isEmpty();
|
&& !originalTargetTriple().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidToolChain::addToEnvironment(Environment &env) const
|
void AndroidToolchain::addToEnvironment(Environment &env) const
|
||||||
{
|
{
|
||||||
const AndroidConfig &config = AndroidConfigurations::currentConfig();
|
const AndroidConfig &config = AndroidConfigurations::currentConfig();
|
||||||
env.set(QLatin1String("ANDROID_NDK_HOST"), config.toolchainHostFromNdk(m_ndkLocation));
|
env.set(QLatin1String("ANDROID_NDK_HOST"), config.toolchainHostFromNdk(m_ndkLocation));
|
||||||
@@ -102,7 +102,7 @@ void AndroidToolChain::addToEnvironment(Environment &env) const
|
|||||||
env.set(QLatin1String("ANDROID_SDK_ROOT"), config.sdkLocation().toUserOutput());
|
env.set(QLatin1String("ANDROID_SDK_ROOT"), config.sdkLocation().toUserOutput());
|
||||||
}
|
}
|
||||||
|
|
||||||
void AndroidToolChain::fromMap(const Store &data)
|
void AndroidToolchain::fromMap(const Store &data)
|
||||||
{
|
{
|
||||||
GccToolchain::fromMap(data);
|
GccToolchain::fromMap(data);
|
||||||
if (hasError())
|
if (hasError())
|
||||||
@@ -111,19 +111,19 @@ void AndroidToolChain::fromMap(const Store &data)
|
|||||||
reportError();
|
reportError();
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList AndroidToolChain::suggestedMkspecList() const
|
QStringList AndroidToolchain::suggestedMkspecList() const
|
||||||
{
|
{
|
||||||
return {"android-g++", "android-clang"};
|
return {"android-g++", "android-clang"};
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath AndroidToolChain::makeCommand(const Environment &env) const
|
FilePath AndroidToolchain::makeCommand(const Environment &env) const
|
||||||
{
|
{
|
||||||
Q_UNUSED(env)
|
Q_UNUSED(env)
|
||||||
FilePath makePath = AndroidConfigurations::currentConfig().makePathFromNdk(m_ndkLocation);
|
FilePath makePath = AndroidConfigurations::currentConfig().makePathFromNdk(m_ndkLocation);
|
||||||
return makePath.exists() ? makePath : FilePath("make");
|
return makePath.exists() ? makePath : FilePath("make");
|
||||||
}
|
}
|
||||||
|
|
||||||
GccToolchain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const
|
GccToolchain::DetectedAbisResult AndroidToolchain::detectSupportedAbis() const
|
||||||
{
|
{
|
||||||
for (auto itr = ClangTargets->constBegin(); itr != ClangTargets->constEnd(); ++itr) {
|
for (auto itr = ClangTargets->constBegin(); itr != ClangTargets->constEnd(); ++itr) {
|
||||||
if (itr.value() == targetAbi())
|
if (itr.value() == targetAbi())
|
||||||
@@ -132,17 +132,14 @@ GccToolchain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const
|
|||||||
return GccToolchain::DetectedAbisResult({targetAbi()}, "");
|
return GccToolchain::DetectedAbisResult({targetAbi()}, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AndroidToolchainFactory
|
||||||
// --------------------------------------------------------------------------
|
|
||||||
// ToolChainFactory
|
|
||||||
// --------------------------------------------------------------------------
|
|
||||||
|
|
||||||
AndroidToolchainFactory::AndroidToolchainFactory()
|
AndroidToolchainFactory::AndroidToolchainFactory()
|
||||||
{
|
{
|
||||||
setDisplayName(Tr::tr("Android Clang"));
|
setDisplayName(Tr::tr("Android Clang"));
|
||||||
setSupportedToolchainType(Constants::ANDROID_TOOLCHAIN_TYPEID);
|
setSupportedToolchainType(Constants::ANDROID_TOOLCHAIN_TYPEID);
|
||||||
setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
|
setSupportedLanguages({ProjectExplorer::Constants::CXX_LANGUAGE_ID});
|
||||||
setToolchainConstructor([] { return new AndroidToolChain; });
|
setToolchainConstructor([] { return new AndroidToolchain; });
|
||||||
}
|
}
|
||||||
|
|
||||||
static FilePath clangPlusPlusPath(const FilePath &clangPath)
|
static FilePath clangPlusPlusPath(const FilePath &clangPath)
|
||||||
@@ -169,14 +166,14 @@ static FilePaths uniqueNdksForCurrentQtVersions()
|
|||||||
return uniqueNdks;
|
return uniqueNdks;
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolChainList AndroidToolchainFactory::autodetectToolChains(const ToolChainList &alreadyKnown)
|
ToolchainList AndroidToolchainFactory::autodetectToolchains(const ToolchainList &alreadyKnown)
|
||||||
{
|
{
|
||||||
const QList<FilePath> uniqueNdks = uniqueNdksForCurrentQtVersions();
|
const QList<FilePath> uniqueNdks = uniqueNdksForCurrentQtVersions();
|
||||||
return autodetectToolChainsFromNdks(alreadyKnown, uniqueNdks);
|
return autodetectToolchainsFromNdks(alreadyKnown, uniqueNdks);
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
|
ToolchainList AndroidToolchainFactory::autodetectToolchainsFromNdks(
|
||||||
const ToolChainList &alreadyKnown,
|
const ToolchainList &alreadyKnown,
|
||||||
const QList<FilePath> &ndkLocations,
|
const QList<FilePath> &ndkLocations,
|
||||||
const bool isCustom)
|
const bool isCustom)
|
||||||
{
|
{
|
||||||
@@ -211,7 +208,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
|
|||||||
while (targetItr != ClangTargets->constEnd()) {
|
while (targetItr != ClangTargets->constEnd()) {
|
||||||
const Abi &abi = targetItr.value();
|
const Abi &abi = targetItr.value();
|
||||||
const QString target = targetItr.key();
|
const QString target = targetItr.key();
|
||||||
Toolchain *tc = findToolChain(compilerCommand, lang, target, alreadyKnown);
|
Toolchain *tc = findToolchain(compilerCommand, lang, target, alreadyKnown);
|
||||||
|
|
||||||
QLatin1String customStr = isCustom ? QLatin1String("Custom ") : QLatin1String();
|
QLatin1String customStr = isCustom ? QLatin1String("Custom ") : QLatin1String();
|
||||||
const QString displayName(customStr + QString("Android Clang (%1, %2, NDK %3)")
|
const QString displayName(customStr + QString("Android Clang (%1, %2, NDK %3)")
|
||||||
@@ -225,7 +222,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
|
|||||||
} else {
|
} else {
|
||||||
qCDebug(androidTCLog) << "New Clang toolchain found" << abi.toString() << lang
|
qCDebug(androidTCLog) << "New Clang toolchain found" << abi.toString() << lang
|
||||||
<< "for NDK" << ndkLocation;
|
<< "for NDK" << ndkLocation;
|
||||||
auto atc = new AndroidToolChain();
|
auto atc = new AndroidToolchain();
|
||||||
atc->setNdkLocation(ndkLocation);
|
atc->setNdkLocation(ndkLocation);
|
||||||
atc->setOriginalTargetTriple(target);
|
atc->setOriginalTargetTriple(target);
|
||||||
atc->setLanguage(lang);
|
atc->setLanguage(lang);
|
||||||
@@ -239,7 +236,7 @@ ToolChainList AndroidToolchainFactory::autodetectToolChainsFromNdks(
|
|||||||
// Do not only reset newly created toolchains. This triggers call to
|
// Do not only reset newly created toolchains. This triggers call to
|
||||||
// addToEnvironment, so that e.g. JAVA_HOME gets updated.
|
// addToEnvironment, so that e.g. JAVA_HOME gets updated.
|
||||||
if (auto gccTc = dynamic_cast<GccToolchain*>(tc))
|
if (auto gccTc = dynamic_cast<GccToolchain*>(tc))
|
||||||
gccTc->resetToolChain(compilerCommand);
|
gccTc->resetToolchain(compilerCommand);
|
||||||
|
|
||||||
tc->setDetection(Toolchain::AutoDetection);
|
tc->setDetection(Toolchain::AutoDetection);
|
||||||
result << tc;
|
result << tc;
|
||||||
|
@@ -9,12 +9,12 @@
|
|||||||
|
|
||||||
namespace Android::Internal {
|
namespace Android::Internal {
|
||||||
|
|
||||||
using ToolChainList = QList<ProjectExplorer::Toolchain *>;
|
using ToolchainList = QList<ProjectExplorer::Toolchain *>;
|
||||||
|
|
||||||
class AndroidToolChain : public ProjectExplorer::GccToolchain
|
class AndroidToolchain : public ProjectExplorer::GccToolchain
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
~AndroidToolChain() override;
|
~AndroidToolchain() override;
|
||||||
|
|
||||||
bool isValid() const override;
|
bool isValid() const override;
|
||||||
void addToEnvironment(Utils::Environment &env) const override;
|
void addToEnvironment(Utils::Environment &env) const override;
|
||||||
@@ -30,7 +30,7 @@ protected:
|
|||||||
DetectedAbisResult detectSupportedAbis() const override;
|
DetectedAbisResult detectSupportedAbis() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
explicit AndroidToolChain();
|
explicit AndroidToolchain();
|
||||||
|
|
||||||
friend class AndroidToolchainFactory;
|
friend class AndroidToolchainFactory;
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ class AndroidToolchainFactory : public ProjectExplorer::ToolchainFactory
|
|||||||
public:
|
public:
|
||||||
AndroidToolchainFactory();
|
AndroidToolchainFactory();
|
||||||
|
|
||||||
class AndroidToolChainInformation
|
class AndroidToolchainInformation
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Utils::Id language;
|
Utils::Id language;
|
||||||
@@ -51,8 +51,8 @@ public:
|
|||||||
QString version;
|
QString version;
|
||||||
};
|
};
|
||||||
|
|
||||||
static ToolChainList autodetectToolChains(const ToolChainList &alreadyKnown);
|
static ToolchainList autodetectToolchains(const ToolchainList &alreadyKnown);
|
||||||
static ToolChainList autodetectToolChainsFromNdks(const ToolChainList &alreadyKnown,
|
static ToolchainList autodetectToolchainsFromNdks(const ToolchainList &alreadyKnown,
|
||||||
const QList<Utils::FilePath> &ndkLocations,
|
const QList<Utils::FilePath> &ndkLocations,
|
||||||
const bool isCustom = false);
|
const bool isCustom = false);
|
||||||
};
|
};
|
||||||
|
@@ -59,7 +59,7 @@ void AutoTestUnitTests::initTestCase()
|
|||||||
m_isQt4 = qtVersion->qtVersionString().startsWith('4');
|
m_isQt4 = qtVersion->qtVersionString().startsWith('4');
|
||||||
else
|
else
|
||||||
QSKIP("Could not figure out which Qt version is used for default kit.");
|
QSKIP("Could not figure out which Qt version is used for default kit.");
|
||||||
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolChain(m_kit);
|
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(m_kit);
|
||||||
if (!toolchain)
|
if (!toolchain)
|
||||||
QSKIP("This test requires that there is a kit with a toolchain.");
|
QSKIP("This test requires that there is a kit with a toolchain.");
|
||||||
|
|
||||||
|
@@ -56,7 +56,7 @@ bool LoadProjectScenario::init()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolChain(m_kit);
|
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(m_kit);
|
||||||
if (!toolchain) {
|
if (!toolchain) {
|
||||||
qWarning() << "This test requires that there is a kit with a toolchain.";
|
qWarning() << "This test requires that there is a kit with a toolchain.";
|
||||||
return false;
|
return false;
|
||||||
|
@@ -144,8 +144,8 @@ void AutotoolsBuildSystem::updateCppCodeModel()
|
|||||||
cxxflags = cflags;
|
cxxflags = cflags;
|
||||||
|
|
||||||
const FilePath includeFileBaseDir = projectDirectory();
|
const FilePath includeFileBaseDir = projectDirectory();
|
||||||
rpp.setFlagsForC({kitInfo.cToolChain, cflags, includeFileBaseDir});
|
rpp.setFlagsForC({kitInfo.cToolchain, cflags, includeFileBaseDir});
|
||||||
rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxflags, includeFileBaseDir});
|
rpp.setFlagsForCxx({kitInfo.cxxToolchain, cxxflags, includeFileBaseDir});
|
||||||
|
|
||||||
const QString absSrc = project()->projectDirectory().toString();
|
const QString absSrc = project()->projectDirectory().toString();
|
||||||
BuildConfiguration *bc = target()->activeBuildConfiguration();
|
BuildConfiguration *bc = target()->activeBuildConfiguration();
|
||||||
|
@@ -1034,7 +1034,7 @@ static bool canAnalyzeProject(Project *project)
|
|||||||
|| project->projectLanguages().contains(cxx);
|
|| project->projectLanguages().contains(cxx);
|
||||||
return projectSupportsLanguage
|
return projectSupportsLanguage
|
||||||
&& CppModelManager::projectInfo(project)
|
&& CppModelManager::projectInfo(project)
|
||||||
&& ToolchainKitAspect::cxxToolChain(target->kit());
|
&& ToolchainKitAspect::cxxToolchain(target->kit());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@@ -148,7 +148,7 @@ static QList<Target *> validTargets(Project *project)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolChain(kit);
|
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
QTC_ASSERT(toolchain, return false);
|
QTC_ASSERT(toolchain, return false);
|
||||||
|
|
||||||
if (Core::ICore::clangExecutable(CLANG_BINDIR).isEmpty()) {
|
if (Core::ICore::clangExecutable(CLANG_BINDIR).isEmpty()) {
|
||||||
|
@@ -50,7 +50,7 @@ void ClangToolsUnitTests::initTestCase()
|
|||||||
if (!m_kit)
|
if (!m_kit)
|
||||||
QSKIP("This test requires at least one valid kit with a valid Qt");
|
QSKIP("This test requires at least one valid kit with a valid Qt");
|
||||||
|
|
||||||
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolChain(m_kit);
|
const Toolchain * const toolchain = ToolchainKitAspect::cxxToolchain(m_kit);
|
||||||
if (!toolchain)
|
if (!toolchain)
|
||||||
QSKIP("This test requires that there is a kit with a toolchain.");
|
QSKIP("This test requires that there is a kit with a toolchain.");
|
||||||
|
|
||||||
@@ -87,7 +87,7 @@ void ClangToolsUnitTests::testProject()
|
|||||||
QFETCH(int, expectedDiagCountClazy);
|
QFETCH(int, expectedDiagCountClazy);
|
||||||
QFETCH(ClangDiagnosticConfig, diagnosticConfig);
|
QFETCH(ClangDiagnosticConfig, diagnosticConfig);
|
||||||
if (projectFilePath.contains("mingw")) {
|
if (projectFilePath.contains("mingw")) {
|
||||||
const auto toolchain = ToolchainKitAspect::cxxToolChain(m_kit);
|
const auto toolchain = ToolchainKitAspect::cxxToolchain(m_kit);
|
||||||
if (toolchain->typeId() != ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID)
|
if (toolchain->typeId() != ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID)
|
||||||
QSKIP("This test is mingw specific, does not run for other toolchains");
|
QSKIP("This test is mingw specific, does not run for other toolchains");
|
||||||
}
|
}
|
||||||
|
@@ -1091,7 +1091,7 @@ static bool isQnx(const Kit *k)
|
|||||||
|
|
||||||
static bool isWindowsARM64(const Kit *k)
|
static bool isWindowsARM64(const Kit *k)
|
||||||
{
|
{
|
||||||
Toolchain *toolchain = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *toolchain = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (!toolchain)
|
if (!toolchain)
|
||||||
return false;
|
return false;
|
||||||
const Abi targetAbi = toolchain->targetAbi();
|
const Abi targetAbi = toolchain->targetAbi();
|
||||||
@@ -1124,7 +1124,7 @@ static CommandLine defaultInitialCMakeCommand(const Kit *k, const QString &build
|
|||||||
const QString sysRoot = SysRootKitAspect::sysRoot(k).path();
|
const QString sysRoot = SysRootKitAspect::sysRoot(k).path();
|
||||||
if (!sysRoot.isEmpty()) {
|
if (!sysRoot.isEmpty()) {
|
||||||
cmd.addArg("-DCMAKE_SYSROOT:PATH=" + sysRoot);
|
cmd.addArg("-DCMAKE_SYSROOT:PATH=" + sysRoot);
|
||||||
if (Toolchain *tc = ToolchainKitAspect::cxxToolChain(k)) {
|
if (Toolchain *tc = ToolchainKitAspect::cxxToolchain(k)) {
|
||||||
const QString targetTriple = tc->originalTargetTriple();
|
const QString targetTriple = tc->originalTargetTriple();
|
||||||
cmd.addArg("-DCMAKE_C_COMPILER_TARGET:STRING=" + targetTriple);
|
cmd.addArg("-DCMAKE_C_COMPILER_TARGET:STRING=" + targetTriple);
|
||||||
cmd.addArg("-DCMAKE_CXX_COMPILER_TARGET:STRING=" + targetTriple);
|
cmd.addArg("-DCMAKE_CXX_COMPILER_TARGET:STRING=" + targetTriple);
|
||||||
|
@@ -336,7 +336,7 @@ void CMakeBuildStep::setupOutputFormatter(Utils::OutputFormatter *formatter)
|
|||||||
formatter->addLineParser(progressParser);
|
formatter->addLineParser(progressParser);
|
||||||
cmakeParser->setSourceDirectory(project()->projectDirectory());
|
cmakeParser->setSourceDirectory(project()->projectDirectory());
|
||||||
formatter->addLineParsers({cmakeParser, new GnuMakeParser});
|
formatter->addLineParsers({cmakeParser, new GnuMakeParser});
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit());
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
OutputTaskParser *xcodeBuildParser = nullptr;
|
OutputTaskParser *xcodeBuildParser = nullptr;
|
||||||
if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
|
if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
|
||||||
xcodeBuildParser = new XcodebuildParser;
|
xcodeBuildParser = new XcodebuildParser;
|
||||||
|
@@ -1351,10 +1351,10 @@ void CMakeBuildSystem::updateProjectData()
|
|||||||
addTargetFlagForIos(cFlags, cxxFlags, this, [this] {
|
addTargetFlagForIos(cFlags, cxxFlags, this, [this] {
|
||||||
return m_configurationFromCMake.stringValueOf("CMAKE_OSX_DEPLOYMENT_TARGET");
|
return m_configurationFromCMake.stringValueOf("CMAKE_OSX_DEPLOYMENT_TARGET");
|
||||||
});
|
});
|
||||||
if (kitInfo.cxxToolChain)
|
if (kitInfo.cxxToolchain)
|
||||||
rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxFlags, includeFileBaseDir});
|
rpp.setFlagsForCxx({kitInfo.cxxToolchain, cxxFlags, includeFileBaseDir});
|
||||||
if (kitInfo.cToolChain)
|
if (kitInfo.cToolchain)
|
||||||
rpp.setFlagsForC({kitInfo.cToolChain, cFlags, includeFileBaseDir});
|
rpp.setFlagsForC({kitInfo.cToolchain, cFlags, includeFileBaseDir});
|
||||||
}
|
}
|
||||||
|
|
||||||
m_cppCodeModelUpdater->update({p, kitInfo, buildConfiguration()->environment(), rpps},
|
m_cppCodeModelUpdater->update({p, kitInfo, buildConfiguration()->environment(), rpps},
|
||||||
|
@@ -681,7 +681,7 @@ QVariant CMakeGeneratorKitAspectFactory::defaultValue(const Kit *k) const
|
|||||||
|
|
||||||
if (tool->filePath().osType() == OsTypeWindows) {
|
if (tool->filePath().osType() == OsTypeWindows) {
|
||||||
// *sigh* Windows with its zoo of incompatible stuff again...
|
// *sigh* Windows with its zoo of incompatible stuff again...
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (tc && tc->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) {
|
if (tc && tc->typeId() == ProjectExplorer::Constants::MINGW_TOOLCHAIN_TYPEID) {
|
||||||
it = std::find_if(known.constBegin(),
|
it = std::find_if(known.constBegin(),
|
||||||
known.constEnd(),
|
known.constEnd(),
|
||||||
@@ -1135,8 +1135,8 @@ Tasks CMakeConfigurationKitAspectFactory::validate(const Kit *k) const
|
|||||||
return Tasks();
|
return Tasks();
|
||||||
|
|
||||||
const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k);
|
const QtSupport::QtVersion *const version = QtSupport::QtKitAspect::qtVersion(k);
|
||||||
const Toolchain *const tcC = ToolchainKitAspect::cToolChain(k);
|
const Toolchain *const tcC = ToolchainKitAspect::cToolchain(k);
|
||||||
const Toolchain *const tcCxx = ToolchainKitAspect::cxxToolChain(k);
|
const Toolchain *const tcCxx = ToolchainKitAspect::cxxToolchain(k);
|
||||||
const CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
|
const CMakeConfig config = CMakeConfigurationKitAspect::configuration(k);
|
||||||
|
|
||||||
const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0);
|
const bool isQt4 = version && version->qtVersion() < QVersionNumber(5, 0, 0);
|
||||||
|
@@ -56,7 +56,7 @@ struct DirectoryData
|
|||||||
QString toolset;
|
QString toolset;
|
||||||
FilePath sysroot;
|
FilePath sysroot;
|
||||||
QtProjectImporter::QtVersionData qt;
|
QtProjectImporter::QtVersionData qt;
|
||||||
QVector<ToolchainDescription> toolChains;
|
QVector<ToolchainDescription> toolchains;
|
||||||
};
|
};
|
||||||
|
|
||||||
static FilePaths scanDirectory(const FilePath &path, const QString &prefix)
|
static FilePaths scanDirectory(const FilePath &path, const QString &prefix)
|
||||||
@@ -464,7 +464,7 @@ static QMakeAndCMakePrefixPath qtInfoFromCMakeCache(const CMakeConfig &config,
|
|||||||
return {qmakeLocation, resultedPrefixPath};
|
return {qmakeLocation, resultedPrefixPath};
|
||||||
}
|
}
|
||||||
|
|
||||||
static QVector<ToolchainDescription> extractToolChainsFromCache(const CMakeConfig &config)
|
static QVector<ToolchainDescription> extractToolchainsFromCache(const CMakeConfig &config)
|
||||||
{
|
{
|
||||||
QVector<ToolchainDescription> result;
|
QVector<ToolchainDescription> result;
|
||||||
bool haveCCxxCompiler = false;
|
bool haveCCxxCompiler = false;
|
||||||
@@ -563,7 +563,7 @@ void updateConfigWithDirectoryData(CMakeConfig &config, const std::unique_ptr<Di
|
|||||||
return ci.key == key;
|
return ci.key == key;
|
||||||
});
|
});
|
||||||
|
|
||||||
auto tcd = Utils::findOrDefault(data->toolChains,
|
auto tcd = Utils::findOrDefault(data->toolchains,
|
||||||
[&language](const ToolchainDescription &t) {
|
[&language](const ToolchainDescription &t) {
|
||||||
return t.language == language;
|
return t.language == language;
|
||||||
});
|
});
|
||||||
@@ -790,8 +790,8 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
|
|||||||
CMakeConfigItem::PATH,
|
CMakeConfigItem::PATH,
|
||||||
cmakePrefixPath.toUtf8());
|
cmakePrefixPath.toUtf8());
|
||||||
|
|
||||||
// ToolChains:
|
// Toolchains:
|
||||||
data->toolChains = extractToolChainsFromCache(config);
|
data->toolchains = extractToolchainsFromCache(config);
|
||||||
|
|
||||||
// Update QT_QMAKE_EXECUTABLE and CMAKE_C|XX_COMPILER config values
|
// Update QT_QMAKE_EXECUTABLE and CMAKE_C|XX_COMPILER config values
|
||||||
updateConfigWithDirectoryData(config, data);
|
updateConfigWithDirectoryData(config, data);
|
||||||
@@ -888,8 +888,8 @@ QList<void *> CMakeProjectImporter::examineDirectory(const FilePath &importPath,
|
|||||||
if (!qmake.isEmpty())
|
if (!qmake.isEmpty())
|
||||||
data->qt = findOrCreateQtVersion(qmake);
|
data->qt = findOrCreateQtVersion(qmake);
|
||||||
|
|
||||||
// ToolChains:
|
// Toolchains:
|
||||||
data->toolChains = extractToolChainsFromCache(config);
|
data->toolchains = extractToolchainsFromCache(config);
|
||||||
|
|
||||||
qCInfo(cmInputLog) << "Offering to import" << importPath.toUserOutput();
|
qCInfo(cmInputLog) << "Offering to import" << importPath.toUserOutput();
|
||||||
result.push_back(static_cast<void *>(data.release()));
|
result.push_back(static_cast<void *>(data.release()));
|
||||||
@@ -933,11 +933,11 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
|||||||
|
|
||||||
const bool compilersMatch = [k, data] {
|
const bool compilersMatch = [k, data] {
|
||||||
const QList<Id> allLanguages = ToolchainManager::allLanguages();
|
const QList<Id> allLanguages = ToolchainManager::allLanguages();
|
||||||
for (const ToolchainDescription &tcd : data->toolChains) {
|
for (const ToolchainDescription &tcd : data->toolchains) {
|
||||||
if (!Utils::contains(allLanguages,
|
if (!Utils::contains(allLanguages,
|
||||||
[&tcd](const Id &language) { return language == tcd.language; }))
|
[&tcd](const Id &language) { return language == tcd.language; }))
|
||||||
continue;
|
continue;
|
||||||
Toolchain *tc = ToolchainKitAspect::toolChain(k, tcd.language);
|
Toolchain *tc = ToolchainKitAspect::toolchain(k, tcd.language);
|
||||||
if ((!tc || !tc->matchesCompilerCommand(tcd.compilerPath))) {
|
if ((!tc || !tc->matchesCompilerCommand(tcd.compilerPath))) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -946,11 +946,11 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
|||||||
}();
|
}();
|
||||||
const bool noCompilers = [k, data] {
|
const bool noCompilers = [k, data] {
|
||||||
const QList<Id> allLanguages = ToolchainManager::allLanguages();
|
const QList<Id> allLanguages = ToolchainManager::allLanguages();
|
||||||
for (const ToolchainDescription &tcd : data->toolChains) {
|
for (const ToolchainDescription &tcd : data->toolchains) {
|
||||||
if (!Utils::contains(allLanguages,
|
if (!Utils::contains(allLanguages,
|
||||||
[&tcd](const Id &language) { return language == tcd.language; }))
|
[&tcd](const Id &language) { return language == tcd.language; }))
|
||||||
continue;
|
continue;
|
||||||
Toolchain *tc = ToolchainKitAspect::toolChain(k, tcd.language);
|
Toolchain *tc = ToolchainKitAspect::toolchain(k, tcd.language);
|
||||||
if (tc && tc->matchesCompilerCommand(tcd.compilerPath)) {
|
if (tc && tc->matchesCompilerCommand(tcd.compilerPath)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -995,7 +995,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const
|
|||||||
|
|
||||||
SysRootKitAspect::setSysRoot(k, data->sysroot);
|
SysRootKitAspect::setSysRoot(k, data->sysroot);
|
||||||
|
|
||||||
for (const ToolchainDescription &cmtcd : data->toolChains) {
|
for (const ToolchainDescription &cmtcd : data->toolchains) {
|
||||||
const ToolChainData tcd = findOrCreateToolChains(cmtcd);
|
const ToolChainData tcd = findOrCreateToolChains(cmtcd);
|
||||||
QTC_ASSERT(!tcd.tcs.isEmpty(), continue);
|
QTC_ASSERT(!tcd.tcs.isEmpty(), continue);
|
||||||
|
|
||||||
@@ -1004,7 +1004,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const
|
|||||||
addTemporaryData(ToolchainKitAspect::id(), tc->id(), k);
|
addTemporaryData(ToolchainKitAspect::id(), tc->id(), k);
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolchainKitAspect::setToolChain(k, tcd.tcs.at(0));
|
ToolchainKitAspect::setToolchain(k, tcd.tcs.at(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data->cmakePresetDisplayname.isEmpty()) {
|
if (!data->cmakePresetDisplayname.isEmpty()) {
|
||||||
@@ -1143,11 +1143,11 @@ void CMakeProjectPlugin::testCMakeProjectImporterQt()
|
|||||||
Environment::systemEnvironment());
|
Environment::systemEnvironment());
|
||||||
QCOMPARE(realQmake.path(), expectedQmake);
|
QCOMPARE(realQmake.path(), expectedQmake);
|
||||||
}
|
}
|
||||||
void CMakeProjectPlugin::testCMakeProjectImporterToolChain_data()
|
void CMakeProjectPlugin::testCMakeProjectImporterToolchain_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<QStringList>("cache");
|
QTest::addColumn<QStringList>("cache");
|
||||||
QTest::addColumn<QByteArrayList>("expectedLanguages");
|
QTest::addColumn<QByteArrayList>("expectedLanguages");
|
||||||
QTest::addColumn<QStringList>("expectedToolChains");
|
QTest::addColumn<QStringList>("expectedToolchains");
|
||||||
|
|
||||||
QTest::newRow("Empty input")
|
QTest::newRow("Empty input")
|
||||||
<< QStringList() << QByteArrayList() << QStringList();
|
<< QStringList() << QByteArrayList() << QStringList();
|
||||||
@@ -1180,13 +1180,13 @@ void CMakeProjectPlugin::testCMakeProjectImporterToolChain_data()
|
|||||||
<< QStringList({"/usr/bin/g++", "/usr/bin/clang", "/tmp/strange/compiler"});
|
<< QStringList({"/usr/bin/g++", "/usr/bin/clang", "/tmp/strange/compiler"});
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMakeProjectPlugin::testCMakeProjectImporterToolChain()
|
void CMakeProjectPlugin::testCMakeProjectImporterToolchain()
|
||||||
{
|
{
|
||||||
QFETCH(QStringList, cache);
|
QFETCH(QStringList, cache);
|
||||||
QFETCH(QByteArrayList, expectedLanguages);
|
QFETCH(QByteArrayList, expectedLanguages);
|
||||||
QFETCH(QStringList, expectedToolChains);
|
QFETCH(QStringList, expectedToolchains);
|
||||||
|
|
||||||
QCOMPARE(expectedLanguages.count(), expectedToolChains.count());
|
QCOMPARE(expectedLanguages.count(), expectedToolchains.count());
|
||||||
|
|
||||||
CMakeConfig config;
|
CMakeConfig config;
|
||||||
for (const QString &c : std::as_const(cache)) {
|
for (const QString &c : std::as_const(cache)) {
|
||||||
@@ -1197,11 +1197,11 @@ void CMakeProjectPlugin::testCMakeProjectImporterToolChain()
|
|||||||
config.append(CMakeConfigItem(key.toUtf8(), value.toUtf8()));
|
config.append(CMakeConfigItem(key.toUtf8(), value.toUtf8()));
|
||||||
}
|
}
|
||||||
|
|
||||||
const QVector<ToolchainDescription> tcs = extractToolChainsFromCache(config);
|
const QVector<ToolchainDescription> tcs = extractToolchainsFromCache(config);
|
||||||
QCOMPARE(tcs.count(), expectedLanguages.count());
|
QCOMPARE(tcs.count(), expectedLanguages.count());
|
||||||
for (int i = 0; i < tcs.count(); ++i) {
|
for (int i = 0; i < tcs.count(); ++i) {
|
||||||
QCOMPARE(tcs.at(i).language, expectedLanguages.at(i));
|
QCOMPARE(tcs.at(i).language, expectedLanguages.at(i));
|
||||||
QCOMPARE(tcs.at(i).compilerPath.toString(), expectedToolChains.at(i));
|
QCOMPARE(tcs.at(i).compilerPath.toString(), expectedToolchains.at(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -407,8 +407,8 @@ void CMakeManager::buildFile(Node *node)
|
|||||||
return extension;
|
return extension;
|
||||||
|
|
||||||
const auto toolchain = ProjectFile::isCxx(sourceKind)
|
const auto toolchain = ProjectFile::isCxx(sourceKind)
|
||||||
? ToolchainKitAspect::cxxToolChain(target->kit())
|
? ToolchainKitAspect::cxxToolchain(target->kit())
|
||||||
: ToolchainKitAspect::cToolChain(target->kit());
|
: ToolchainKitAspect::cToolchain(target->kit());
|
||||||
using namespace ProjectExplorer::Constants;
|
using namespace ProjectExplorer::Constants;
|
||||||
static QSet<Id> objIds{
|
static QSet<Id> objIds{
|
||||||
CLANG_CL_TOOLCHAIN_TYPEID,
|
CLANG_CL_TOOLCHAIN_TYPEID,
|
||||||
|
@@ -28,8 +28,8 @@ private slots:
|
|||||||
void testCMakeProjectImporterQt_data();
|
void testCMakeProjectImporterQt_data();
|
||||||
void testCMakeProjectImporterQt();
|
void testCMakeProjectImporterQt();
|
||||||
|
|
||||||
void testCMakeProjectImporterToolChain_data();
|
void testCMakeProjectImporterToolchain_data();
|
||||||
void testCMakeProjectImporterToolChain();
|
void testCMakeProjectImporterToolchain();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@@ -108,7 +108,7 @@ QString compilerPath(QString pathFlag)
|
|||||||
Toolchain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Utils::Id &language)
|
Toolchain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Utils::Id &language)
|
||||||
{
|
{
|
||||||
if (flags.empty())
|
if (flags.empty())
|
||||||
return ToolchainKitAspect::toolChain(kit, language);
|
return ToolchainKitAspect::toolchain(kit, language);
|
||||||
|
|
||||||
// Try exact compiler match.
|
// Try exact compiler match.
|
||||||
const Utils::FilePath compiler = Utils::FilePath::fromUserInput(compilerPath(flags.front()));
|
const Utils::FilePath compiler = Utils::FilePath::fromUserInput(compilerPath(flags.front()));
|
||||||
@@ -131,7 +131,7 @@ Toolchain *toolchainFromFlags(const Kit *kit, const QStringList &flags, const Ut
|
|||||||
return toolchain;
|
return toolchain;
|
||||||
}
|
}
|
||||||
|
|
||||||
toolchain = ToolchainKitAspect::toolChain(kit, language);
|
toolchain = ToolchainKitAspect::toolchain(kit, language);
|
||||||
qWarning() << "No matching toolchain found, use the default.";
|
qWarning() << "No matching toolchain found, use the default.";
|
||||||
return toolchain;
|
return toolchain;
|
||||||
}
|
}
|
||||||
@@ -179,21 +179,21 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile,
|
|||||||
|
|
||||||
if (fileKind == CppEditor::ProjectFile::Kind::CHeader
|
if (fileKind == CppEditor::ProjectFile::Kind::CHeader
|
||||||
|| fileKind == CppEditor::ProjectFile::Kind::CSource) {
|
|| fileKind == CppEditor::ProjectFile::Kind::CSource) {
|
||||||
if (!kitInfo.cToolChain) {
|
if (!kitInfo.cToolchain) {
|
||||||
kitInfo.cToolChain = toolchainFromFlags(kit,
|
kitInfo.cToolchain = toolchainFromFlags(kit,
|
||||||
originalFlags,
|
originalFlags,
|
||||||
ProjectExplorer::Constants::C_LANGUAGE_ID);
|
ProjectExplorer::Constants::C_LANGUAGE_ID);
|
||||||
}
|
}
|
||||||
addDriverModeFlagIfNeeded(kitInfo.cToolChain, flags, originalFlags);
|
addDriverModeFlagIfNeeded(kitInfo.cToolchain, flags, originalFlags);
|
||||||
rpp.setFlagsForC({kitInfo.cToolChain, flags, workingDir});
|
rpp.setFlagsForC({kitInfo.cToolchain, flags, workingDir});
|
||||||
} else {
|
} else {
|
||||||
if (!kitInfo.cxxToolChain) {
|
if (!kitInfo.cxxToolchain) {
|
||||||
kitInfo.cxxToolChain = toolchainFromFlags(kit,
|
kitInfo.cxxToolchain = toolchainFromFlags(kit,
|
||||||
originalFlags,
|
originalFlags,
|
||||||
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
}
|
}
|
||||||
addDriverModeFlagIfNeeded(kitInfo.cxxToolChain, flags, originalFlags);
|
addDriverModeFlagIfNeeded(kitInfo.cxxToolchain, flags, originalFlags);
|
||||||
rpp.setFlagsForCxx({kitInfo.cxxToolChain, flags, workingDir});
|
rpp.setFlagsForCxx({kitInfo.cxxToolchain, flags, workingDir});
|
||||||
}
|
}
|
||||||
|
|
||||||
return rpp;
|
return rpp;
|
||||||
@@ -350,8 +350,8 @@ void CompilationDatabaseBuildSystem::buildTreeAndProjectParts()
|
|||||||
ProjectExplorer::KitInfo kitInfo(k);
|
ProjectExplorer::KitInfo kitInfo(k);
|
||||||
QTC_ASSERT(kitInfo.isValid(), return);
|
QTC_ASSERT(kitInfo.isValid(), return);
|
||||||
// Reset toolchains to pick them based on the database entries.
|
// Reset toolchains to pick them based on the database entries.
|
||||||
kitInfo.cToolChain = nullptr;
|
kitInfo.cToolchain = nullptr;
|
||||||
kitInfo.cxxToolChain = nullptr;
|
kitInfo.cxxToolchain = nullptr;
|
||||||
RawProjectParts rpps;
|
RawProjectParts rpps;
|
||||||
|
|
||||||
QTC_ASSERT(m_parser, return);
|
QTC_ASSERT(m_parser, return);
|
||||||
|
@@ -106,7 +106,7 @@ ConanInstallStep::ConanInstallStep(BuildStepList *bsl, Id id)
|
|||||||
setSummaryUpdater([this]() -> QString {
|
setSummaryUpdater([this]() -> QString {
|
||||||
QList<Toolchain *> tcList = ToolchainKitAspect::toolChains(target()->kit());
|
QList<Toolchain *> tcList = ToolchainKitAspect::toolChains(target()->kit());
|
||||||
if (tcList.isEmpty())
|
if (tcList.isEmpty())
|
||||||
return "<b>" + ToolchainKitAspect::msgNoToolChainInTarget() + "</b>";
|
return "<b>" + ToolchainKitAspect::msgNoToolchainInTarget() + "</b>";
|
||||||
ProcessParameters param;
|
ProcessParameters param;
|
||||||
setupProcessParameters(¶m);
|
setupProcessParameters(¶m);
|
||||||
return param.summary(displayName());
|
return param.summary(displayName());
|
||||||
|
@@ -135,7 +135,7 @@ void CppcheckPluginPrivate::updateManualRunAction()
|
|||||||
const Target *target = ProjectManager::startupTarget();
|
const Target *target = ProjectManager::startupTarget();
|
||||||
const Utils::Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID;
|
const Utils::Id cxx = ProjectExplorer::Constants::CXX_LANGUAGE_ID;
|
||||||
const bool canRun = target && project->projectLanguages().contains(cxx)
|
const bool canRun = target && project->projectLanguages().contains(cxx)
|
||||||
&& ToolchainKitAspect::cxxToolChain(target->kit());
|
&& ToolchainKitAspect::cxxToolchain(target->kit());
|
||||||
manualRunAction->setEnabled(canRun);
|
manualRunAction->setEnabled(canRun);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -412,9 +412,9 @@ void CppModelManager::showPreprocessedFile(bool inNextSplit)
|
|||||||
const Toolchain * tc = nullptr;
|
const Toolchain * tc = nullptr;
|
||||||
const ProjectFile classifier(filePath, ProjectFile::classify(filePath.toString()));
|
const ProjectFile classifier(filePath, ProjectFile::classify(filePath.toString()));
|
||||||
if (classifier.isC()) {
|
if (classifier.isC()) {
|
||||||
tc = ToolchainKitAspect::cToolChain(project->activeTarget()->kit());
|
tc = ToolchainKitAspect::cToolchain(project->activeTarget()->kit());
|
||||||
} else if (classifier.isCxx() || classifier.isHeader()) {
|
} else if (classifier.isCxx() || classifier.isHeader()) {
|
||||||
tc = ToolchainKitAspect::cxxToolChain(project->activeTarget()->kit());
|
tc = ToolchainKitAspect::cxxToolchain(project->activeTarget()->kit());
|
||||||
} else {
|
} else {
|
||||||
showFallbackWarning(Tr::tr("Could not determine which compiler to invoke."));
|
showFallbackWarning(Tr::tr("Could not determine which compiler to invoke."));
|
||||||
useBuiltinPreprocessor();
|
useBuiltinPreprocessor();
|
||||||
@@ -1968,7 +1968,7 @@ void CppModelManager::setupFallbackProjectPart()
|
|||||||
// TODO: Use different fallback toolchain for different kinds of files?
|
// TODO: Use different fallback toolchain for different kinds of files?
|
||||||
const Kit * const defaultKit = KitManager::isLoaded() ? KitManager::defaultKit() : nullptr;
|
const Kit * const defaultKit = KitManager::isLoaded() ? KitManager::defaultKit() : nullptr;
|
||||||
const Toolchain * const defaultTc = defaultKit
|
const Toolchain * const defaultTc = defaultKit
|
||||||
? ToolchainKitAspect::cxxToolChain(defaultKit) : nullptr;
|
? ToolchainKitAspect::cxxToolchain(defaultKit) : nullptr;
|
||||||
if (defaultKit && defaultTc) {
|
if (defaultKit && defaultTc) {
|
||||||
FilePath sysroot = SysRootKitAspect::sysRoot(defaultKit);
|
FilePath sysroot = SysRootKitAspect::sysRoot(defaultKit);
|
||||||
if (sysroot.isEmpty())
|
if (sysroot.isEmpty())
|
||||||
|
@@ -66,7 +66,7 @@ const QVector<ProjectPart::ConstPtr> ProjectInfoGenerator::createProjectParts(
|
|||||||
if (!cat.hasParts())
|
if (!cat.hasParts())
|
||||||
return result;
|
return result;
|
||||||
|
|
||||||
if (m_projectUpdateInfo.cxxToolChainInfo.isValid()) {
|
if (m_projectUpdateInfo.cxxToolchainInfo.isValid()) {
|
||||||
if (cat.hasCxxSources()) {
|
if (cat.hasCxxSources()) {
|
||||||
result << createProjectPart(projectFilePath,
|
result << createProjectPart(projectFilePath,
|
||||||
rawProjectPart,
|
rawProjectPart,
|
||||||
@@ -87,7 +87,7 @@ const QVector<ProjectPart::ConstPtr> ProjectInfoGenerator::createProjectParts(
|
|||||||
m_cxxToolchainMissing = true;
|
m_cxxToolchainMissing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_projectUpdateInfo.cToolChainInfo.isValid()) {
|
if (m_projectUpdateInfo.cToolchainInfo.isValid()) {
|
||||||
if (cat.hasCSources()) {
|
if (cat.hasCSources()) {
|
||||||
result << createProjectPart(projectFilePath,
|
result << createProjectPart(projectFilePath,
|
||||||
rawProjectPart,
|
rawProjectPart,
|
||||||
@@ -124,12 +124,12 @@ ProjectPart::ConstPtr ProjectInfoGenerator::createProjectPart(
|
|||||||
ToolChainInfo tcInfo;
|
ToolChainInfo tcInfo;
|
||||||
if (language == Language::C) {
|
if (language == Language::C) {
|
||||||
flags = rawProjectPart.flagsForC;
|
flags = rawProjectPart.flagsForC;
|
||||||
tcInfo = m_projectUpdateInfo.cToolChainInfo;
|
tcInfo = m_projectUpdateInfo.cToolchainInfo;
|
||||||
}
|
}
|
||||||
// Use Cxx toolchain for C projects without C compiler in kit and for C++ code
|
// Use Cxx toolchain for C projects without C compiler in kit and for C++ code
|
||||||
if (!tcInfo.isValid()) {
|
if (!tcInfo.isValid()) {
|
||||||
flags = rawProjectPart.flagsForCxx;
|
flags = rawProjectPart.flagsForCxx;
|
||||||
tcInfo = m_projectUpdateInfo.cxxToolChainInfo;
|
tcInfo = m_projectUpdateInfo.cxxToolchainInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
QString explicitTarget;
|
QString explicitTarget;
|
||||||
|
@@ -356,8 +356,8 @@ public:
|
|||||||
ProjectInfoGeneratorTestHelper()
|
ProjectInfoGeneratorTestHelper()
|
||||||
{
|
{
|
||||||
TestToolchain aToolChain;
|
TestToolchain aToolChain;
|
||||||
projectUpdateInfo.cxxToolChainInfo = {&aToolChain, {}, {}};
|
projectUpdateInfo.cxxToolchainInfo = {&aToolChain, {}, {}};
|
||||||
projectUpdateInfo.cToolChainInfo = {&aToolChain, {}, {}};
|
projectUpdateInfo.cToolchainInfo = {&aToolChain, {}, {}};
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectInfo::ConstPtr generate()
|
ProjectInfo::ConstPtr generate()
|
||||||
@@ -426,7 +426,7 @@ void ProjectInfoGeneratorTest::testProjectPartHasLatestLanguageVersionByDefault(
|
|||||||
void ProjectInfoGeneratorTest::testUseMacroInspectionReportForLanguageVersion()
|
void ProjectInfoGeneratorTest::testUseMacroInspectionReportForLanguageVersion()
|
||||||
{
|
{
|
||||||
ProjectInfoGeneratorTestHelper t;
|
ProjectInfoGeneratorTestHelper t;
|
||||||
t.projectUpdateInfo.cxxToolChainInfo.macroInspectionRunner = [](const QStringList &) {
|
t.projectUpdateInfo.cxxToolchainInfo.macroInspectionRunner = [](const QStringList &) {
|
||||||
return TestToolchain::MacroInspectionReport{Macros(), Utils::LanguageVersion::CXX17};
|
return TestToolchain::MacroInspectionReport{Macros(), Utils::LanguageVersion::CXX17};
|
||||||
};
|
};
|
||||||
t.rawProjectPart.files = QStringList{ "foo.cpp" };
|
t.rawProjectPart.files = QStringList{ "foo.cpp" };
|
||||||
|
@@ -364,7 +364,7 @@ void KitDetectorPrivate::autoDetect()
|
|||||||
&& (!qt || qt->qtAbis().contains(tc->targetAbi()));
|
&& (!qt || qt->qtAbis().contains(tc->targetAbi()));
|
||||||
});
|
});
|
||||||
for (Toolchain *toolChain : toolchainsToSet)
|
for (Toolchain *toolChain : toolchainsToSet)
|
||||||
ToolchainKitAspect::setToolChain(k, toolChain);
|
ToolchainKitAspect::setToolchain(k, toolChain);
|
||||||
|
|
||||||
if (cmakeId.isValid())
|
if (cmakeId.isValid())
|
||||||
k->setSticky(CMakeProjectManager::Constants::TOOL_ID, true);
|
k->setSticky(CMakeProjectManager::Constants::TOOL_ID, true);
|
||||||
|
@@ -37,7 +37,7 @@ FilePath MakeCommandBuilder::defaultCommand() const
|
|||||||
{
|
{
|
||||||
if (BuildConfiguration *buildConfig = buildStep()->buildConfiguration()) {
|
if (BuildConfiguration *buildConfig = buildStep()->buildConfiguration()) {
|
||||||
if (Target *target = buildStep()->target()) {
|
if (Target *target = buildStep()->target()) {
|
||||||
if (Toolchain *toolChain = ToolchainKitAspect::cxxToolChain(target->kit()))
|
if (Toolchain *toolChain = ToolchainKitAspect::cxxToolchain(target->kit()))
|
||||||
return toolChain->makeCommand(buildConfig->environment());
|
return toolChain->makeCommand(buildConfig->environment());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -148,7 +148,7 @@ bool IosBuildStep::init()
|
|||||||
if (!AbstractProcessStep::init())
|
if (!AbstractProcessStep::init())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit());
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
if (!tc) {
|
if (!tc) {
|
||||||
emit addTask(Task::compilerMissingTask());
|
emit addTask(Task::compilerMissingTask());
|
||||||
emitFaultyConfigurationMessage();
|
emitFaultyConfigurationMessage();
|
||||||
@@ -195,7 +195,7 @@ QStringList IosBuildStep::defaultArguments() const
|
|||||||
{
|
{
|
||||||
QStringList res;
|
QStringList res;
|
||||||
Kit *kit = target()->kit();
|
Kit *kit = target()->kit();
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
switch (buildConfiguration()->buildType()) {
|
switch (buildConfiguration()->buildType()) {
|
||||||
case BuildConfiguration::Debug :
|
case BuildConfiguration::Debug :
|
||||||
res << "-configuration" << "Debug";
|
res << "-configuration" << "Debug";
|
||||||
|
@@ -171,13 +171,13 @@ static void setupKit(Kit *kit, Id pDeviceType, const ToolChainPair& toolChains,
|
|||||||
{
|
{
|
||||||
DeviceTypeKitAspect::setDeviceTypeId(kit, pDeviceType);
|
DeviceTypeKitAspect::setDeviceTypeId(kit, pDeviceType);
|
||||||
if (toolChains.first)
|
if (toolChains.first)
|
||||||
ToolchainKitAspect::setToolChain(kit, toolChains.first);
|
ToolchainKitAspect::setToolchain(kit, toolChains.first);
|
||||||
else
|
else
|
||||||
ToolchainKitAspect::clearToolChain(kit, ProjectExplorer::Constants::C_LANGUAGE_ID);
|
ToolchainKitAspect::clearToolchain(kit, ProjectExplorer::Constants::C_LANGUAGE_ID);
|
||||||
if (toolChains.second)
|
if (toolChains.second)
|
||||||
ToolchainKitAspect::setToolChain(kit, toolChains.second);
|
ToolchainKitAspect::setToolchain(kit, toolChains.second);
|
||||||
else
|
else
|
||||||
ToolchainKitAspect::clearToolChain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
ToolchainKitAspect::clearToolchain(kit, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
|
|
||||||
QtKitAspect::setQtVersion(kit, qtVersion);
|
QtKitAspect::setQtVersion(kit, qtVersion);
|
||||||
// only replace debugger with the default one if we find an unusable one here
|
// only replace debugger with the default one if we find an unusable one here
|
||||||
@@ -274,8 +274,8 @@ void IosConfigurations::updateAutomaticKitList()
|
|||||||
// we do not compare the sdk (thus automatically upgrading it in place if a
|
// we do not compare the sdk (thus automatically upgrading it in place if a
|
||||||
// new Xcode is used). Change?
|
// new Xcode is used). Change?
|
||||||
return DeviceTypeKitAspect::deviceTypeId(kit) == pDeviceType
|
return DeviceTypeKitAspect::deviceTypeId(kit) == pDeviceType
|
||||||
&& ToolchainKitAspect::cxxToolChain(kit) == platformToolchains.second
|
&& ToolchainKitAspect::cxxToolchain(kit) == platformToolchains.second
|
||||||
&& ToolchainKitAspect::cToolChain(kit) == platformToolchains.first
|
&& ToolchainKitAspect::cToolchain(kit) == platformToolchains.first
|
||||||
&& QtKitAspect::qtVersion(kit) == qtVersion;
|
&& QtKitAspect::qtVersion(kit) == qtVersion;
|
||||||
});
|
});
|
||||||
QTC_ASSERT(!resultingKits.contains(kit), continue);
|
QTC_ASSERT(!resultingKits.contains(kit), continue);
|
||||||
@@ -599,7 +599,7 @@ Toolchains IosToolchainFactory::autoDetect(const ToolchainDetector &detector) co
|
|||||||
toolChain->setDisplayName(target.name);
|
toolChain->setDisplayName(target.name);
|
||||||
toolChain->setPlatformCodeGenFlags(target.backendFlags);
|
toolChain->setPlatformCodeGenFlags(target.backendFlags);
|
||||||
toolChain->setPlatformLinkerFlags(target.backendFlags);
|
toolChain->setPlatformLinkerFlags(target.backendFlags);
|
||||||
toolChain->resetToolChain(l == ProjectExplorer::Constants::CXX_LANGUAGE_ID ?
|
toolChain->resetToolchain(l == ProjectExplorer::Constants::CXX_LANGUAGE_ID ?
|
||||||
platform.cxxCompilerPath : platform.cCompilerPath);
|
platform.cxxCompilerPath : platform.cCompilerPath);
|
||||||
existingClangToolChains.append(toolChain);
|
existingClangToolChains.append(toolChain);
|
||||||
}
|
}
|
||||||
|
@@ -85,10 +85,10 @@ public:
|
|||||||
case McuToolChainPackage::ToolChainType::GCC:
|
case McuToolChainPackage::ToolChainType::GCC:
|
||||||
case McuToolChainPackage::ToolChainType::MinGW:
|
case McuToolChainPackage::ToolChainType::MinGW:
|
||||||
case McuToolChainPackage::ToolChainType::ArmGcc:
|
case McuToolChainPackage::ToolChainType::ArmGcc:
|
||||||
ToolchainKitAspect::setToolChain(k,
|
ToolchainKitAspect::setToolchain(k,
|
||||||
tcPackage->toolChain(
|
tcPackage->toolChain(
|
||||||
ProjectExplorer::Constants::C_LANGUAGE_ID));
|
ProjectExplorer::Constants::C_LANGUAGE_ID));
|
||||||
ToolchainKitAspect::setToolChain(k,
|
ToolchainKitAspect::setToolchain(k,
|
||||||
tcPackage->toolChain(
|
tcPackage->toolChain(
|
||||||
ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
||||||
return;
|
return;
|
||||||
|
@@ -245,7 +245,7 @@ void MesonBuildSystem::parsingCompleted(bool success)
|
|||||||
{project(),
|
{project(),
|
||||||
QtSupport::CppKitInfo(kit()),
|
QtSupport::CppKitInfo(kit()),
|
||||||
buildConfiguration()->environment(),
|
buildConfiguration()->environment(),
|
||||||
m_parser.buildProjectParts(kitInfo.cxxToolChain, kitInfo.cToolChain)});
|
m_parser.buildProjectParts(kitInfo.cxxToolchain, kitInfo.cToolchain)});
|
||||||
}
|
}
|
||||||
setApplicationTargets(m_parser.appsTargets());
|
setApplicationTargets(m_parser.appsTargets());
|
||||||
UNLOCK(true);
|
UNLOCK(true);
|
||||||
|
@@ -169,7 +169,7 @@ void NimBuildSystem::triggerParsing()
|
|||||||
|
|
||||||
FilePath nimPathFromKit(Kit *kit)
|
FilePath nimPathFromKit(Kit *kit)
|
||||||
{
|
{
|
||||||
auto tc = ToolchainKitAspect::toolChain(kit, Constants::C_NIMLANGUAGE_ID);
|
auto tc = ToolchainKitAspect::toolchain(kit, Constants::C_NIMLANGUAGE_ID);
|
||||||
QTC_ASSERT(tc, return {});
|
QTC_ASSERT(tc, return {});
|
||||||
const FilePath command = tc->compilerCommand();
|
const FilePath command = tc->compilerCommand();
|
||||||
return command.isEmpty() ? FilePath() : command.absolutePath();
|
return command.isEmpty() ? FilePath() : command.absolutePath();
|
||||||
|
@@ -159,7 +159,7 @@ CommandLine NimCompilerBuildStep::commandLine()
|
|||||||
auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
|
auto bc = qobject_cast<NimBuildConfiguration *>(buildConfiguration());
|
||||||
QTC_ASSERT(bc, return {});
|
QTC_ASSERT(bc, return {});
|
||||||
|
|
||||||
auto tc = ToolchainKitAspect::toolChain(kit(), Constants::C_NIMLANGUAGE_ID);
|
auto tc = ToolchainKitAspect::toolchain(kit(), Constants::C_NIMLANGUAGE_ID);
|
||||||
QTC_ASSERT(tc, return {});
|
QTC_ASSERT(tc, return {});
|
||||||
|
|
||||||
CommandLine cmd{tc->compilerCommand()};
|
CommandLine cmd{tc->compilerCommand()};
|
||||||
|
@@ -52,7 +52,7 @@ NimProject::NimProject(const FilePath &filePath) : Project(Constants::C_NIM_MIME
|
|||||||
Tasks NimProject::projectIssues(const Kit *k) const
|
Tasks NimProject::projectIssues(const Kit *k) const
|
||||||
{
|
{
|
||||||
Tasks result = Project::projectIssues(k);
|
Tasks result = Project::projectIssues(k);
|
||||||
auto tc = ToolchainKitAspect::toolChain(k, Constants::C_NIMLANGUAGE_ID);
|
auto tc = ToolchainKitAspect::toolchain(k, Constants::C_NIMLANGUAGE_ID);
|
||||||
if (!tc) {
|
if (!tc) {
|
||||||
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No Nim compiler set.")));
|
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No Nim compiler set.")));
|
||||||
return result;
|
return result;
|
||||||
|
@@ -288,7 +288,7 @@ void PerfDataReader::collectArguments(CommandLine *cmd, const QString &exe, cons
|
|||||||
.arg(cmd->executable().osType() == OsTypeWindows ? u';' : u':'));
|
.arg(cmd->executable().osType() == OsTypeWindows ? u';' : u':'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (auto toolChain = ToolchainKitAspect::cxxToolChain(kit)) {
|
if (auto toolChain = ToolchainKitAspect::cxxToolchain(kit)) {
|
||||||
Abi::Architecture architecture = toolChain->targetAbi().architecture();
|
Abi::Architecture architecture = toolChain->targetAbi().architecture();
|
||||||
if (architecture == Abi::ArmArchitecture && toolChain->targetAbi().wordWidth() == 64) {
|
if (architecture == Abi::ArmArchitecture && toolChain->targetAbi().wordWidth() == 64) {
|
||||||
cmd->addArg("--arch");
|
cmd->addArg("--arch");
|
||||||
|
@@ -458,7 +458,7 @@ static const GccToolchain *mingwToolChainFromId(const QByteArray &id)
|
|||||||
QString GccToolchain::originalTargetTriple() const
|
QString GccToolchain::originalTargetTriple() const
|
||||||
{
|
{
|
||||||
if (m_subType == Clang) {
|
if (m_subType == Clang) {
|
||||||
if (const GccToolchain *parentTC = mingwToolChainFromId(m_parentToolChainId))
|
if (const GccToolchain *parentTC = mingwToolChainFromId(m_parentToolchainId))
|
||||||
return parentTC->originalTargetTriple();
|
return parentTC->originalTargetTriple();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -866,7 +866,7 @@ QStringList GccToolchain::suggestedMkspecList() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_subType == Clang) {
|
if (m_subType == Clang) {
|
||||||
if (const Toolchain * const parentTc = ToolchainManager::findToolchain(m_parentToolChainId))
|
if (const Toolchain * const parentTc = ToolchainManager::findToolchain(m_parentToolchainId))
|
||||||
return parentTc->suggestedMkspecList();
|
return parentTc->suggestedMkspecList();
|
||||||
const Abi abi = targetAbi();
|
const Abi abi = targetAbi();
|
||||||
if (abi.os() == Abi::DarwinOS)
|
if (abi.os() == Abi::DarwinOS)
|
||||||
@@ -950,7 +950,7 @@ QList<OutputLineParser *> GccToolchain::createOutputParsers() const
|
|||||||
return GccParser::gccParserSuite();
|
return GccParser::gccParserSuite();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GccToolchain::resetToolChain(const FilePath &path)
|
void GccToolchain::resetToolchain(const FilePath &path)
|
||||||
{
|
{
|
||||||
bool resetDisplayName = (displayName() == defaultDisplayName());
|
bool resetDisplayName = (displayName() == defaultDisplayName());
|
||||||
|
|
||||||
@@ -1021,7 +1021,7 @@ void GccToolchain::toMap(Store &data) const
|
|||||||
data.insert(supportedAbisKeyC, Utils::transform<QStringList>(m_supportedAbis, &Abi::toString));
|
data.insert(supportedAbisKeyC, Utils::transform<QStringList>(m_supportedAbis, &Abi::toString));
|
||||||
|
|
||||||
if (m_subType == Clang) {
|
if (m_subType == Clang) {
|
||||||
data.insert(parentToolChainIdKeyC, m_parentToolChainId);
|
data.insert(parentToolChainIdKeyC, m_parentToolchainId);
|
||||||
data.insert(priorityKeyC, m_priority);
|
data.insert(priorityKeyC, m_priority);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1042,10 +1042,10 @@ void GccToolchain::fromMap(const Store &data)
|
|||||||
|
|
||||||
const QString targetAbiString = data.value(targetAbiKeyC).toString();
|
const QString targetAbiString = data.value(targetAbiKeyC).toString();
|
||||||
if (targetAbiString.isEmpty())
|
if (targetAbiString.isEmpty())
|
||||||
resetToolChain(compilerCommand());
|
resetToolchain(compilerCommand());
|
||||||
|
|
||||||
if (m_subType == Clang) {
|
if (m_subType == Clang) {
|
||||||
m_parentToolChainId = data.value(parentToolChainIdKeyC).toByteArray();
|
m_parentToolchainId = data.value(parentToolChainIdKeyC).toByteArray();
|
||||||
m_priority = data.value(priorityKeyC, PriorityNormal).toInt();
|
m_priority = data.value(priorityKeyC, PriorityNormal).toInt();
|
||||||
syncAutodetectedWithParentToolchains();
|
syncAutodetectedWithParentToolchains();
|
||||||
}
|
}
|
||||||
@@ -1814,13 +1814,13 @@ void GccToolchainConfigWidget::applyImpl()
|
|||||||
|
|
||||||
if (m_subType == GccToolchain::Clang && m_parentToolchainCombo) {
|
if (m_subType == GccToolchain::Clang && m_parentToolchainCombo) {
|
||||||
|
|
||||||
tc->m_parentToolChainId.clear();
|
tc->m_parentToolchainId.clear();
|
||||||
|
|
||||||
const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
|
const QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
|
||||||
if (!parentId.isEmpty()) {
|
if (!parentId.isEmpty()) {
|
||||||
for (const Toolchain *mingwTC : mingwToolChains()) {
|
for (const Toolchain *mingwTC : mingwToolChains()) {
|
||||||
if (parentId == mingwTC->id()) {
|
if (parentId == mingwTC->id()) {
|
||||||
tc->m_parentToolChainId = mingwTC->id();
|
tc->m_parentToolchainId = mingwTC->id();
|
||||||
tc->setTargetAbi(mingwTC->targetAbi());
|
tc->setTargetAbi(mingwTC->targetAbi());
|
||||||
tc->setSupportedAbis(mingwTC->supportedAbis());
|
tc->setSupportedAbis(mingwTC->supportedAbis());
|
||||||
break;
|
break;
|
||||||
@@ -1868,7 +1868,7 @@ bool GccToolchainConfigWidget::isDirtyImpl() const
|
|||||||
if (!m_parentToolchainCombo)
|
if (!m_parentToolchainCombo)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
const GccToolchain *parentTC = mingwToolChainFromId(tc->m_parentToolChainId);
|
const GccToolchain *parentTC = mingwToolChainFromId(tc->m_parentToolchainId);
|
||||||
const QByteArray parentId = parentTC ? parentTC->id() : QByteArray();
|
const QByteArray parentId = parentTC ? parentTC->id() : QByteArray();
|
||||||
return parentId != m_parentToolchainCombo->currentData();
|
return parentId != m_parentToolchainCombo->currentData();
|
||||||
}
|
}
|
||||||
@@ -1967,9 +1967,9 @@ void GccToolchain::syncAutodetectedWithParentToolchains()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!mingwToolChainFromId(m_parentToolChainId)) {
|
if (!mingwToolChainFromId(m_parentToolchainId)) {
|
||||||
const Toolchains mingwTCs = mingwToolChains();
|
const Toolchains mingwTCs = mingwToolChains();
|
||||||
m_parentToolChainId = mingwTCs.isEmpty() ? QByteArray() : mingwTCs.front()->id();
|
m_parentToolchainId = mingwTCs.isEmpty() ? QByteArray() : mingwTCs.front()->id();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Subscribe only autodetected toolchains.
|
// Subscribe only autodetected toolchains.
|
||||||
@@ -1977,8 +1977,8 @@ void GccToolchain::syncAutodetectedWithParentToolchains()
|
|||||||
m_mingwToolchainAddedConnection
|
m_mingwToolchainAddedConnection
|
||||||
= connect(tcManager, &ToolchainManager::toolhainAdded, this, [this](Toolchain *tc) {
|
= connect(tcManager, &ToolchainManager::toolhainAdded, this, [this](Toolchain *tc) {
|
||||||
if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID
|
if (tc->typeId() == Constants::MINGW_TOOLCHAIN_TYPEID
|
||||||
&& !mingwToolChainFromId(m_parentToolChainId)) {
|
&& !mingwToolChainFromId(m_parentToolchainId)) {
|
||||||
m_parentToolChainId = tc->id();
|
m_parentToolchainId = tc->id();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
m_thisToolchainRemovedConnection
|
m_thisToolchainRemovedConnection
|
||||||
@@ -1986,9 +1986,9 @@ void GccToolchain::syncAutodetectedWithParentToolchains()
|
|||||||
if (tc == this) {
|
if (tc == this) {
|
||||||
QObject::disconnect(m_thisToolchainRemovedConnection);
|
QObject::disconnect(m_thisToolchainRemovedConnection);
|
||||||
QObject::disconnect(m_mingwToolchainAddedConnection);
|
QObject::disconnect(m_mingwToolchainAddedConnection);
|
||||||
} else if (m_parentToolChainId == tc->id()) {
|
} else if (m_parentToolchainId == tc->id()) {
|
||||||
const Toolchains mingwTCs = mingwToolChains();
|
const Toolchains mingwTCs = mingwToolChains();
|
||||||
m_parentToolChainId = mingwTCs.isEmpty() ? QByteArray() : mingwTCs.front()->id();
|
m_parentToolchainId = mingwTCs.isEmpty() ? QByteArray() : mingwTCs.front()->id();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -2018,7 +2018,7 @@ bool GccToolchain::matchesCompilerCommand(const FilePath &command) const
|
|||||||
QString GccToolchain::sysRoot() const
|
QString GccToolchain::sysRoot() const
|
||||||
{
|
{
|
||||||
if (m_subType == Clang) {
|
if (m_subType == Clang) {
|
||||||
if (const GccToolchain *parentTC = mingwToolChainFromId(m_parentToolChainId)) {
|
if (const GccToolchain *parentTC = mingwToolChainFromId(m_parentToolchainId)) {
|
||||||
const FilePath mingwCompiler = parentTC->compilerCommand();
|
const FilePath mingwCompiler = parentTC->compilerCommand();
|
||||||
return mingwCompiler.parentDir().parentDir().toString();
|
return mingwCompiler.parentDir().parentDir().toString();
|
||||||
}
|
}
|
||||||
@@ -2033,7 +2033,7 @@ void GccToolchainConfigWidget::updateParentToolChainComboBox()
|
|||||||
auto *tc = static_cast<GccToolchain *>(toolChain());
|
auto *tc = static_cast<GccToolchain *>(toolChain());
|
||||||
QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
|
QByteArray parentId = m_parentToolchainCombo->currentData().toByteArray();
|
||||||
if (tc->isAutoDetected() || m_parentToolchainCombo->count() == 0)
|
if (tc->isAutoDetected() || m_parentToolchainCombo->count() == 0)
|
||||||
parentId = tc->m_parentToolChainId;
|
parentId = tc->m_parentToolchainId;
|
||||||
|
|
||||||
const GccToolchain *parentTC = mingwToolChainFromId(parentId);
|
const GccToolchain *parentTC = mingwToolChainFromId(parentId);
|
||||||
|
|
||||||
|
@@ -59,7 +59,7 @@ public:
|
|||||||
|
|
||||||
bool operator ==(const Toolchain &) const override;
|
bool operator ==(const Toolchain &) const override;
|
||||||
|
|
||||||
void resetToolChain(const Utils::FilePath &);
|
void resetToolchain(const Utils::FilePath &);
|
||||||
void setPlatformCodeGenFlags(const QStringList &);
|
void setPlatformCodeGenFlags(const QStringList &);
|
||||||
QStringList extraCodeModelFlags() const override;
|
QStringList extraCodeModelFlags() const override;
|
||||||
QStringList platformCodeGenFlags() const;
|
QStringList platformCodeGenFlags() const;
|
||||||
@@ -155,7 +155,7 @@ private:
|
|||||||
// "resolved" on macOS from /usr/bin/clang(++) etc to <DeveloperDir>/usr/bin/clang(++)
|
// "resolved" on macOS from /usr/bin/clang(++) etc to <DeveloperDir>/usr/bin/clang(++)
|
||||||
// which is used for comparison with matchesCompilerCommand
|
// which is used for comparison with matchesCompilerCommand
|
||||||
mutable std::optional<Utils::FilePath> m_resolvedCompilerCommand;
|
mutable std::optional<Utils::FilePath> m_resolvedCompilerCommand;
|
||||||
QByteArray m_parentToolChainId;
|
QByteArray m_parentToolchainId;
|
||||||
int m_priority = PriorityNormal;
|
int m_priority = PriorityNormal;
|
||||||
QMetaObject::Connection m_mingwToolchainAddedConnection;
|
QMetaObject::Connection m_mingwToolchainAddedConnection;
|
||||||
QMetaObject::Connection m_thisToolchainRemovedConnection;
|
QMetaObject::Connection m_thisToolchainRemovedConnection;
|
||||||
|
@@ -272,7 +272,7 @@ private:
|
|||||||
cb->addItem(item->displayName(), item->id());
|
cb->addItem(item->displayName(), item->id());
|
||||||
|
|
||||||
cb->setEnabled(cb->count() > 1 && !m_isReadOnly);
|
cb->setEnabled(cb->count() > 1 && !m_isReadOnly);
|
||||||
const int index = indexOf(cb, ToolchainKitAspect::toolChain(m_kit, l));
|
const int index = indexOf(cb, ToolchainKitAspect::toolchain(m_kit, l));
|
||||||
cb->setCurrentIndex(index);
|
cb->setCurrentIndex(index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,9 +295,9 @@ private:
|
|||||||
Toolchain *tc = ToolchainManager::findToolchain(id);
|
Toolchain *tc = ToolchainManager::findToolchain(id);
|
||||||
QTC_ASSERT(!tc || tc->language() == language, return);
|
QTC_ASSERT(!tc || tc->language() == language, return);
|
||||||
if (tc)
|
if (tc)
|
||||||
ToolchainKitAspect::setToolChain(m_kit, tc);
|
ToolchainKitAspect::setToolchain(m_kit, tc);
|
||||||
else
|
else
|
||||||
ToolchainKitAspect::clearToolChain(m_kit, language);
|
ToolchainKitAspect::clearToolchain(m_kit, language);
|
||||||
}
|
}
|
||||||
|
|
||||||
int indexOf(QComboBox *cb, const Toolchain *tc)
|
int indexOf(QComboBox *cb, const Toolchain *tc)
|
||||||
@@ -386,7 +386,7 @@ Tasks ToolchainKitAspectFactory::validate(const Kit *k) const
|
|||||||
|
|
||||||
const QList<Toolchain*> tcList = ToolchainKitAspect::toolChains(k);
|
const QList<Toolchain*> tcList = ToolchainKitAspect::toolChains(k);
|
||||||
if (tcList.isEmpty()) {
|
if (tcList.isEmpty()) {
|
||||||
result << BuildSystemTask(Task::Warning, ToolchainKitAspect::msgNoToolChainInTarget());
|
result << BuildSystemTask(Task::Warning, ToolchainKitAspect::msgNoToolchainInTarget());
|
||||||
} else {
|
} else {
|
||||||
QSet<Abi> targetAbis;
|
QSet<Abi> targetAbis;
|
||||||
for (const Toolchain *tc : tcList) {
|
for (const Toolchain *tc : tcList) {
|
||||||
@@ -407,12 +407,12 @@ void ToolchainKitAspectFactory::fix(Kit *k)
|
|||||||
QTC_ASSERT(ToolchainManager::isLoaded(), return);
|
QTC_ASSERT(ToolchainManager::isLoaded(), return);
|
||||||
const QList<Id> languages = ToolchainManager::allLanguages();
|
const QList<Id> languages = ToolchainManager::allLanguages();
|
||||||
for (const Id l : languages) {
|
for (const Id l : languages) {
|
||||||
const QByteArray tcId = ToolchainKitAspect::toolChainId(k, l);
|
const QByteArray tcId = ToolchainKitAspect::toolchainId(k, l);
|
||||||
if (!tcId.isEmpty() && !ToolchainManager::findToolchain(tcId)) {
|
if (!tcId.isEmpty() && !ToolchainManager::findToolchain(tcId)) {
|
||||||
qWarning("Tool chain set up in kit \"%s\" for \"%s\" not found.",
|
qWarning("Tool chain set up in kit \"%s\" for \"%s\" not found.",
|
||||||
qPrintable(k->displayName()),
|
qPrintable(k->displayName()),
|
||||||
qPrintable(ToolchainManager::displayNameOfLanguageId(l)));
|
qPrintable(ToolchainManager::displayNameOfLanguageId(l)));
|
||||||
ToolchainKitAspect::clearToolChain(k, l); // make sure to clear out no longer known tool chains
|
ToolchainKitAspect::clearToolchain(k, l); // make sure to clear out no longer known tool chains
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -459,9 +459,9 @@ void ToolchainKitAspectFactory::setup(Kit *k)
|
|||||||
bestTc = tc;
|
bestTc = tc;
|
||||||
}
|
}
|
||||||
if (bestTc)
|
if (bestTc)
|
||||||
ToolchainKitAspect::setToolChain(k, bestTc);
|
ToolchainKitAspect::setToolchain(k, bestTc);
|
||||||
else
|
else
|
||||||
ToolchainKitAspect::clearToolChain(k, l);
|
ToolchainKitAspect::clearToolchain(k, l);
|
||||||
}
|
}
|
||||||
|
|
||||||
k->setSticky(id(), lockToolchains);
|
k->setSticky(id(), lockToolchains);
|
||||||
@@ -475,19 +475,19 @@ KitAspect *ToolchainKitAspectFactory::createKitAspect(Kit *k) const
|
|||||||
|
|
||||||
QString ToolchainKitAspectFactory::displayNamePostfix(const Kit *k) const
|
QString ToolchainKitAspectFactory::displayNamePostfix(const Kit *k) const
|
||||||
{
|
{
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
return tc ? tc->displayName() : QString();
|
return tc ? tc->displayName() : QString();
|
||||||
}
|
}
|
||||||
|
|
||||||
KitAspectFactory::ItemList ToolchainKitAspectFactory::toUserOutput(const Kit *k) const
|
KitAspectFactory::ItemList ToolchainKitAspectFactory::toUserOutput(const Kit *k) const
|
||||||
{
|
{
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None")}};
|
return {{Tr::tr("Compiler"), tc ? tc->displayName() : Tr::tr("None")}};
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolchainKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const
|
void ToolchainKitAspectFactory::addToBuildEnvironment(const Kit *k, Environment &env) const
|
||||||
{
|
{
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (tc)
|
if (tc)
|
||||||
tc->addToEnvironment(env);
|
tc->addToEnvironment(env);
|
||||||
}
|
}
|
||||||
@@ -499,25 +499,25 @@ void ToolchainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa
|
|||||||
// Compatibility with Qt Creator < 4.2:
|
// Compatibility with Qt Creator < 4.2:
|
||||||
expander->registerVariable("Compiler:Name", Tr::tr("Compiler"),
|
expander->registerVariable("Compiler:Name", Tr::tr("Compiler"),
|
||||||
[kit] {
|
[kit] {
|
||||||
const Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit);
|
const Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
return tc ? tc->displayName() : Tr::tr("None");
|
return tc ? tc->displayName() : Tr::tr("None");
|
||||||
});
|
});
|
||||||
|
|
||||||
expander->registerVariable("Compiler:Executable", Tr::tr("Path to the compiler executable"),
|
expander->registerVariable("Compiler:Executable", Tr::tr("Path to the compiler executable"),
|
||||||
[kit] {
|
[kit] {
|
||||||
const Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit);
|
const Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
return tc ? tc->compilerCommand().path() : QString();
|
return tc ? tc->compilerCommand().path() : QString();
|
||||||
});
|
});
|
||||||
|
|
||||||
// After 4.2
|
// After 4.2
|
||||||
expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"),
|
expander->registerPrefix("Compiler:Name", Tr::tr("Compiler for different languages"),
|
||||||
[kit](const QString &ls) {
|
[kit](const QString &ls) {
|
||||||
const Toolchain *tc = ToolchainKitAspect::toolChain(kit, findLanguage(ls));
|
const Toolchain *tc = ToolchainKitAspect::toolchain(kit, findLanguage(ls));
|
||||||
return tc ? tc->displayName() : Tr::tr("None");
|
return tc ? tc->displayName() : Tr::tr("None");
|
||||||
});
|
});
|
||||||
expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"),
|
expander->registerPrefix("Compiler:Executable", Tr::tr("Compiler executable for different languages"),
|
||||||
[kit](const QString &ls) {
|
[kit](const QString &ls) {
|
||||||
const Toolchain *tc = ToolchainKitAspect::toolChain(kit, findLanguage(ls));
|
const Toolchain *tc = ToolchainKitAspect::toolchain(kit, findLanguage(ls));
|
||||||
return tc ? tc->compilerCommand().path() : QString();
|
return tc ? tc->compilerCommand().path() : QString();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -525,7 +525,7 @@ void ToolchainKitAspectFactory::addToMacroExpander(Kit *kit, MacroExpander *expa
|
|||||||
QList<OutputLineParser *> ToolchainKitAspectFactory::createOutputParsers(const Kit *k) const
|
QList<OutputLineParser *> ToolchainKitAspectFactory::createOutputParsers(const Kit *k) const
|
||||||
{
|
{
|
||||||
for (const Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) {
|
for (const Id langId : {Constants::CXX_LANGUAGE_ID, Constants::C_LANGUAGE_ID}) {
|
||||||
if (const Toolchain * const tc = ToolchainKitAspect::toolChain(k, langId))
|
if (const Toolchain * const tc = ToolchainKitAspect::toolchain(k, langId))
|
||||||
return tc->createOutputParsers();
|
return tc->createOutputParsers();
|
||||||
}
|
}
|
||||||
return {};
|
return {};
|
||||||
@@ -546,7 +546,7 @@ Id ToolchainKitAspect::id()
|
|||||||
return "PE.Profile.ToolChainsV3";
|
return "PE.Profile.ToolChainsV3";
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray ToolchainKitAspect::toolChainId(const Kit *k, Id language)
|
QByteArray ToolchainKitAspect::toolchainId(const Kit *k, Id language)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(ToolchainManager::isLoaded(), return nullptr);
|
QTC_ASSERT(ToolchainManager::isLoaded(), return nullptr);
|
||||||
if (!k)
|
if (!k)
|
||||||
@@ -555,19 +555,19 @@ QByteArray ToolchainKitAspect::toolChainId(const Kit *k, Id language)
|
|||||||
return value.value(language.toKey(), QByteArray()).toByteArray();
|
return value.value(language.toKey(), QByteArray()).toByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolchain *ToolchainKitAspect::toolChain(const Kit *k, Id language)
|
Toolchain *ToolchainKitAspect::toolchain(const Kit *k, Id language)
|
||||||
{
|
{
|
||||||
return ToolchainManager::findToolchain(toolChainId(k, language));
|
return ToolchainManager::findToolchain(toolchainId(k, language));
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolchain *ToolchainKitAspect::cToolChain(const Kit *k)
|
Toolchain *ToolchainKitAspect::cToolchain(const Kit *k)
|
||||||
{
|
{
|
||||||
return ToolchainManager::findToolchain(toolChainId(k, ProjectExplorer::Constants::C_LANGUAGE_ID));
|
return ToolchainManager::findToolchain(toolchainId(k, ProjectExplorer::Constants::C_LANGUAGE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
Toolchain *ToolchainKitAspect::cxxToolChain(const Kit *k)
|
Toolchain *ToolchainKitAspect::cxxToolchain(const Kit *k)
|
||||||
{
|
{
|
||||||
return ToolchainManager::findToolchain(toolChainId(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
return ToolchainManager::findToolchain(toolchainId(k, ProjectExplorer::Constants::CXX_LANGUAGE_ID));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -583,7 +583,7 @@ QList<Toolchain *> ToolchainKitAspect::toolChains(const Kit *k)
|
|||||||
return filtered(tcList, [](Toolchain *tc) { return tc; });
|
return filtered(tcList, [](Toolchain *tc) { return tc; });
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolchainKitAspect::setToolChain(Kit *k, Toolchain *tc)
|
void ToolchainKitAspect::setToolchain(Kit *k, Toolchain *tc)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(tc, return);
|
QTC_ASSERT(tc, return);
|
||||||
QTC_ASSERT(k, return);
|
QTC_ASSERT(k, return);
|
||||||
@@ -603,7 +603,7 @@ void ToolchainKitAspect::setToolChain(Kit *k, Toolchain *tc)
|
|||||||
* @param k The kit to set up
|
* @param k The kit to set up
|
||||||
* @param tc The toolchain to match other languages for.
|
* @param tc The toolchain to match other languages for.
|
||||||
*/
|
*/
|
||||||
void ToolchainKitAspect::setAllToolChainsToMatch(Kit *k, Toolchain *tc)
|
void ToolchainKitAspect::setAllToolchainsToMatch(Kit *k, Toolchain *tc)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(tc, return);
|
QTC_ASSERT(tc, return);
|
||||||
QTC_ASSERT(k, return);
|
QTC_ASSERT(k, return);
|
||||||
@@ -642,7 +642,7 @@ void ToolchainKitAspect::setAllToolChainsToMatch(Kit *k, Toolchain *tc)
|
|||||||
k->setValue(id(), variantFromStore(result));
|
k->setValue(id(), variantFromStore(result));
|
||||||
}
|
}
|
||||||
|
|
||||||
void ToolchainKitAspect::clearToolChain(Kit *k, Id language)
|
void ToolchainKitAspect::clearToolchain(Kit *k, Id language)
|
||||||
{
|
{
|
||||||
QTC_ASSERT(language.isValid(), return);
|
QTC_ASSERT(language.isValid(), return);
|
||||||
QTC_ASSERT(k, return);
|
QTC_ASSERT(k, return);
|
||||||
@@ -685,7 +685,7 @@ Abi ToolchainKitAspect::targetAbi(const Kit *k)
|
|||||||
return candidates.at(0); // Use basically a random Abi...
|
return candidates.at(0); // Use basically a random Abi...
|
||||||
}
|
}
|
||||||
|
|
||||||
QString ToolchainKitAspect::msgNoToolChainInTarget()
|
QString ToolchainKitAspect::msgNoToolchainInTarget()
|
||||||
{
|
{
|
||||||
return Tr::tr("No compiler set in kit.");
|
return Tr::tr("No compiler set in kit.");
|
||||||
}
|
}
|
||||||
@@ -704,7 +704,7 @@ void ToolchainKitAspectFactory::onKitsLoaded()
|
|||||||
void ToolchainKitAspectFactory::toolChainUpdated(Toolchain *tc)
|
void ToolchainKitAspectFactory::toolChainUpdated(Toolchain *tc)
|
||||||
{
|
{
|
||||||
for (Kit *k : KitManager::kits()) {
|
for (Kit *k : KitManager::kits()) {
|
||||||
if (ToolchainKitAspect::toolChain(k, tc->language()) == tc)
|
if (ToolchainKitAspect::toolchain(k, tc->language()) == tc)
|
||||||
notifyAboutUpdate(k);
|
notifyAboutUpdate(k);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,23 +24,23 @@ public:
|
|||||||
static void setSysRoot(Kit *k, const Utils::FilePath &v);
|
static void setSysRoot(Kit *k, const Utils::FilePath &v);
|
||||||
};
|
};
|
||||||
|
|
||||||
// ToolChainKitAspect
|
// ToolchainKitAspect
|
||||||
|
|
||||||
class PROJECTEXPLORER_EXPORT ToolchainKitAspect
|
class PROJECTEXPLORER_EXPORT ToolchainKitAspect
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static Utils::Id id();
|
static Utils::Id id();
|
||||||
static QByteArray toolChainId(const Kit *k, Utils::Id language);
|
static QByteArray toolchainId(const Kit *k, Utils::Id language);
|
||||||
static Toolchain *toolChain(const Kit *k, Utils::Id language);
|
static Toolchain *toolchain(const Kit *k, Utils::Id language);
|
||||||
static Toolchain *cToolChain(const Kit *k);
|
static Toolchain *cToolchain(const Kit *k);
|
||||||
static Toolchain *cxxToolChain(const Kit *k);
|
static Toolchain *cxxToolchain(const Kit *k);
|
||||||
static QList<Toolchain *> toolChains(const Kit *k);
|
static QList<Toolchain *> toolChains(const Kit *k);
|
||||||
static void setToolChain(Kit *k, Toolchain *tc);
|
static void setToolchain(Kit *k, Toolchain *tc);
|
||||||
static void setAllToolChainsToMatch(Kit *k, Toolchain *tc);
|
static void setAllToolchainsToMatch(Kit *k, Toolchain *tc);
|
||||||
static void clearToolChain(Kit *k, Utils::Id language);
|
static void clearToolchain(Kit *k, Utils::Id language);
|
||||||
static Abi targetAbi(const Kit *k);
|
static Abi targetAbi(const Kit *k);
|
||||||
|
|
||||||
static QString msgNoToolChainInTarget();
|
static QString msgNoToolchainInTarget();
|
||||||
};
|
};
|
||||||
|
|
||||||
// DeviceTypeKitAspect
|
// DeviceTypeKitAspect
|
||||||
|
@@ -347,7 +347,7 @@ void KitManager::restoreKits()
|
|||||||
kit->setSdkProvided(false);
|
kit->setSdkProvided(false);
|
||||||
kit->setAutoDetected(false); // TODO: Why false? What does autodetected mean here?
|
kit->setAutoDetected(false); // TODO: Why false? What does autodetected mean here?
|
||||||
for (Toolchain * const tc : it.value())
|
for (Toolchain * const tc : it.value())
|
||||||
ToolchainKitAspect::setToolChain(kit.get(), tc);
|
ToolchainKitAspect::setToolchain(kit.get(), tc);
|
||||||
if (contains(resultList, [&kit](const std::unique_ptr<Kit> &existingKit) {
|
if (contains(resultList, [&kit](const std::unique_ptr<Kit> &existingKit) {
|
||||||
return ToolchainKitAspect::toolChains(kit.get())
|
return ToolchainKitAspect::toolChains(kit.get())
|
||||||
== ToolchainKitAspect::toolChains(existingKit.get());
|
== ToolchainKitAspect::toolChains(existingKit.get());
|
||||||
|
@@ -1551,12 +1551,12 @@ void ProjectExplorerPlugin::testSourceToBinaryMapping()
|
|||||||
{
|
{
|
||||||
// Find suitable kit.
|
// Find suitable kit.
|
||||||
Kit * const kit = findOr(KitManager::kits(), nullptr, [](const Kit *k) {
|
Kit * const kit = findOr(KitManager::kits(), nullptr, [](const Kit *k) {
|
||||||
return k->isValid() && ToolchainKitAspect::cxxToolChain(k);
|
return k->isValid() && ToolchainKitAspect::cxxToolchain(k);
|
||||||
});
|
});
|
||||||
if (!kit)
|
if (!kit)
|
||||||
QSKIP("The test requires at least one kit with a toolchain.");
|
QSKIP("The test requires at least one kit with a toolchain.");
|
||||||
|
|
||||||
const auto toolchain = ToolchainKitAspect::cxxToolChain(kit);
|
const auto toolchain = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
QVERIFY(toolchain);
|
QVERIFY(toolchain);
|
||||||
if (const auto msvcToolchain = dynamic_cast<Internal::MsvcToolChain *>(toolchain)) {
|
if (const auto msvcToolchain = dynamic_cast<Internal::MsvcToolChain *>(toolchain)) {
|
||||||
while (!msvcToolchain->environmentInitialized()) {
|
while (!msvcToolchain->environmentInitialized()) {
|
||||||
|
@@ -322,7 +322,7 @@ void ProjectImporter::cleanupTemporaryToolChains(Kit *k, const QVariantList &vl)
|
|||||||
Toolchain *tc = toolChainFromVariant(v);
|
Toolchain *tc = toolChainFromVariant(v);
|
||||||
QTC_ASSERT(tc, continue);
|
QTC_ASSERT(tc, continue);
|
||||||
ToolchainManager::deregisterToolchain(tc);
|
ToolchainManager::deregisterToolchain(tc);
|
||||||
ToolchainKitAspect::setToolChain(k, nullptr);
|
ToolchainKitAspect::setToolchain(k, nullptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,7 +331,7 @@ void ProjectImporter::persistTemporaryToolChains(Kit *k, const QVariantList &vl)
|
|||||||
for (const QVariant &v : vl) {
|
for (const QVariant &v : vl) {
|
||||||
Toolchain *tmpTc = toolChainFromVariant(v);
|
Toolchain *tmpTc = toolChainFromVariant(v);
|
||||||
QTC_ASSERT(tmpTc, continue);
|
QTC_ASSERT(tmpTc, continue);
|
||||||
Toolchain *actualTc = ToolchainKitAspect::toolChain(k, tmpTc->language());
|
Toolchain *actualTc = ToolchainKitAspect::toolchain(k, tmpTc->language());
|
||||||
if (tmpTc && actualTc != tmpTc)
|
if (tmpTc && actualTc != tmpTc)
|
||||||
ToolchainManager::deregisterToolchain(tmpTc);
|
ToolchainManager::deregisterToolchain(tmpTc);
|
||||||
}
|
}
|
||||||
|
@@ -142,8 +142,8 @@ KitInfo::KitInfo(Kit *kit)
|
|||||||
{
|
{
|
||||||
// Toolchains
|
// Toolchains
|
||||||
if (kit) {
|
if (kit) {
|
||||||
cToolChain = ToolchainKitAspect::cToolChain(kit);
|
cToolchain = ToolchainKitAspect::cToolchain(kit);
|
||||||
cxxToolChain = ToolchainKitAspect::cxxToolChain(kit);
|
cxxToolchain = ToolchainKitAspect::cxxToolchain(kit);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sysroot
|
// Sysroot
|
||||||
@@ -185,8 +185,8 @@ ProjectUpdateInfo::ProjectUpdateInfo(Project *project,
|
|||||||
const RppGenerator &rppGenerator)
|
const RppGenerator &rppGenerator)
|
||||||
: rawProjectParts(rawProjectParts)
|
: rawProjectParts(rawProjectParts)
|
||||||
, rppGenerator(rppGenerator)
|
, rppGenerator(rppGenerator)
|
||||||
, cToolChainInfo(ToolChainInfo(kitInfo.cToolChain, kitInfo.sysRootPath, env))
|
, cToolchainInfo(ToolChainInfo(kitInfo.cToolchain, kitInfo.sysRootPath, env))
|
||||||
, cxxToolChainInfo(ToolChainInfo(kitInfo.cxxToolChain, kitInfo.sysRootPath, env))
|
, cxxToolchainInfo(ToolChainInfo(kitInfo.cxxToolchain, kitInfo.sysRootPath, env))
|
||||||
{
|
{
|
||||||
if (project) {
|
if (project) {
|
||||||
projectName = project->displayName();
|
projectName = project->displayName();
|
||||||
|
@@ -119,8 +119,8 @@ public:
|
|||||||
bool isValid() const;
|
bool isValid() const;
|
||||||
|
|
||||||
Kit *kit = nullptr;
|
Kit *kit = nullptr;
|
||||||
Toolchain *cToolChain = nullptr;
|
Toolchain *cToolchain = nullptr;
|
||||||
Toolchain *cxxToolChain = nullptr;
|
Toolchain *cxxToolchain = nullptr;
|
||||||
|
|
||||||
Utils::QtMajorVersion projectPartQtVersion = Utils::QtMajorVersion::None;
|
Utils::QtMajorVersion projectPartQtVersion = Utils::QtMajorVersion::None;
|
||||||
|
|
||||||
@@ -171,8 +171,8 @@ public:
|
|||||||
RawProjectParts rawProjectParts;
|
RawProjectParts rawProjectParts;
|
||||||
RppGenerator rppGenerator;
|
RppGenerator rppGenerator;
|
||||||
|
|
||||||
ToolChainInfo cToolChainInfo;
|
ToolChainInfo cToolchainInfo;
|
||||||
ToolChainInfo cxxToolChainInfo;
|
ToolChainInfo cxxToolchainInfo;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace ProjectExplorer
|
} // namespace ProjectExplorer
|
||||||
|
@@ -238,8 +238,8 @@ QVariantMap DefaultPropertyProvider::autoGeneratedProperties(const ProjectExplor
|
|||||||
if (!sysroot.isEmpty())
|
if (!sysroot.isEmpty())
|
||||||
data.insert(QLatin1String(QBS_SYSROOT), sysroot);
|
data.insert(QLatin1String(QBS_SYSROOT), sysroot);
|
||||||
|
|
||||||
Toolchain *tcC = ToolchainKitAspect::cToolChain(k);
|
Toolchain *tcC = ToolchainKitAspect::cToolchain(k);
|
||||||
Toolchain *tcCxx = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tcCxx = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (!tcC && !tcCxx)
|
if (!tcC && !tcCxx)
|
||||||
return data;
|
return data;
|
||||||
|
|
||||||
|
@@ -1005,10 +1005,10 @@ void QbsBuildSystem::updateCppCodeModel()
|
|||||||
|
|
||||||
const QtSupport::CppKitInfo kitInfo(kit());
|
const QtSupport::CppKitInfo kitInfo(kit());
|
||||||
QTC_ASSERT(kitInfo.isValid(), return);
|
QTC_ASSERT(kitInfo.isValid(), return);
|
||||||
const auto cToolchain = std::shared_ptr<Toolchain>(kitInfo.cToolChain
|
const auto cToolchain = std::shared_ptr<Toolchain>(kitInfo.cToolchain
|
||||||
? kitInfo.cToolChain->clone() : nullptr);
|
? kitInfo.cToolchain->clone() : nullptr);
|
||||||
const auto cxxToolchain = std::shared_ptr<Toolchain>(kitInfo.cxxToolChain
|
const auto cxxToolchain = std::shared_ptr<Toolchain>(kitInfo.cxxToolchain
|
||||||
? kitInfo.cxxToolChain->clone() : nullptr);
|
? kitInfo.cxxToolchain->clone() : nullptr);
|
||||||
|
|
||||||
m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), {},
|
m_cppCodeModelUpdater->update({project(), kitInfo, activeParseEnvironment(), {},
|
||||||
[projectData, kitInfo, cToolchain, cxxToolchain] {
|
[projectData, kitInfo, cToolchain, cxxToolchain] {
|
||||||
|
@@ -145,8 +145,8 @@ bool QbsProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
|||||||
&& bgData->cxxCompilerPath.isEmpty()) {
|
&& bgData->cxxCompilerPath.isEmpty()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const Toolchain * const cToolchain = ToolchainKitAspect::cToolChain(k);
|
const Toolchain * const cToolchain = ToolchainKitAspect::cToolchain(k);
|
||||||
const Toolchain * const cxxToolchain = ToolchainKitAspect::cxxToolChain(k);
|
const Toolchain * const cxxToolchain = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (!bgData->cCompilerPath.isEmpty()) {
|
if (!bgData->cCompilerPath.isEmpty()) {
|
||||||
if (!cToolchain)
|
if (!cToolchain)
|
||||||
return false;
|
return false;
|
||||||
@@ -190,7 +190,7 @@ Kit *QbsProjectImporter::createKit(void *directoryData) const
|
|||||||
tcData << findOrCreateToolChains({bgData->cCompilerPath, PEConstants::C_LANGUAGE_ID});
|
tcData << findOrCreateToolChains({bgData->cCompilerPath, PEConstants::C_LANGUAGE_ID});
|
||||||
for (const ToolChainData &tc : std::as_const(tcData)) {
|
for (const ToolChainData &tc : std::as_const(tcData)) {
|
||||||
if (!tc.tcs.isEmpty())
|
if (!tc.tcs.isEmpty())
|
||||||
ToolchainKitAspect::setToolChain(k, tc.tcs.first());
|
ToolchainKitAspect::setToolchain(k, tc.tcs.first());
|
||||||
}
|
}
|
||||||
SysRootKitAspect::setSysRoot(k, bgData->sysroot);
|
SysRootKitAspect::setSysRoot(k, bgData->sysroot);
|
||||||
});
|
});
|
||||||
|
@@ -781,7 +781,7 @@ QmakeBuildConfiguration::LastKitState::LastKitState(Kit *k)
|
|||||||
m_sysroot(SysRootKitAspect::sysRoot(k).toString()),
|
m_sysroot(SysRootKitAspect::sysRoot(k).toString()),
|
||||||
m_mkspec(QmakeKitAspect::mkspec(k))
|
m_mkspec(QmakeKitAspect::mkspec(k))
|
||||||
{
|
{
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
m_toolchain = tc ? tc->id() : QByteArray();
|
m_toolchain = tc ? tc->id() : QByteArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -98,7 +98,7 @@ QString QmakeKitAspect::defaultMkspec(const Kit *k)
|
|||||||
if (!version) // No version, so no qmake
|
if (!version) // No version, so no qmake
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
return version->mkspecFor(ToolchainKitAspect::cxxToolChain(k));
|
return version->mkspecFor(ToolchainKitAspect::cxxToolchain(k));
|
||||||
}
|
}
|
||||||
|
|
||||||
// QmakeKitAspectFactory
|
// QmakeKitAspectFactory
|
||||||
|
@@ -179,7 +179,7 @@ bool QmakeMakeStep::init()
|
|||||||
void QmakeMakeStep::setupOutputFormatter(OutputFormatter *formatter)
|
void QmakeMakeStep::setupOutputFormatter(OutputFormatter *formatter)
|
||||||
{
|
{
|
||||||
formatter->addLineParser(new GnuMakeParser());
|
formatter->addLineParser(new GnuMakeParser());
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit());
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
OutputTaskParser *xcodeBuildParser = nullptr;
|
OutputTaskParser *xcodeBuildParser = nullptr;
|
||||||
if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
|
if (tc && tc->targetAbi().os() == Abi::DarwinOS) {
|
||||||
xcodeBuildParser = new XcodebuildParser;
|
xcodeBuildParser = new XcodebuildParser;
|
||||||
|
@@ -238,7 +238,7 @@ QmakeBuildSystem::QmakeBuildSystem(QmakeBuildConfiguration *bc)
|
|||||||
|
|
||||||
connect(ToolchainManager::instance(), &ToolchainManager::toolchainUpdated,
|
connect(ToolchainManager::instance(), &ToolchainManager::toolchainUpdated,
|
||||||
this, [this](Toolchain *tc) {
|
this, [this](Toolchain *tc) {
|
||||||
if (ToolchainKitAspect::cxxToolChain(kit()) == tc)
|
if (ToolchainKitAspect::cxxToolchain(kit()) == tc)
|
||||||
scheduleUpdateAllNowOrLater();
|
scheduleUpdateAllNowOrLater();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -362,8 +362,8 @@ void QmakeBuildSystem::updateCppCodeModel()
|
|||||||
return pro->variableValue(Variable::IosDeploymentTarget).join(QString());
|
return pro->variableValue(Variable::IosDeploymentTarget).join(QString());
|
||||||
});
|
});
|
||||||
|
|
||||||
rpp.setFlagsForCxx({kitInfo.cxxToolChain, cxxArgs, includeFileBaseDir});
|
rpp.setFlagsForCxx({kitInfo.cxxToolchain, cxxArgs, includeFileBaseDir});
|
||||||
rpp.setFlagsForC({kitInfo.cToolChain, cArgs, includeFileBaseDir});
|
rpp.setFlagsForC({kitInfo.cToolchain, cArgs, includeFileBaseDir});
|
||||||
rpp.setMacros(ProjectExplorer::Macro::toMacros(pro->cxxDefines()));
|
rpp.setMacros(ProjectExplorer::Macro::toMacros(pro->cxxDefines()));
|
||||||
rpp.setPreCompiledHeaders(pro->variableValue(Variable::PrecompiledHeader));
|
rpp.setPreCompiledHeaders(pro->variableValue(Variable::PrecompiledHeader));
|
||||||
rpp.setSelectedForBuilding(pro->includedInExactParse());
|
rpp.setSelectedForBuilding(pro->includedInExactParse());
|
||||||
@@ -757,7 +757,7 @@ Tasks QmakeProject::projectIssues(const Kit *k) const
|
|||||||
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No Qt version set in kit.")));
|
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No Qt version set in kit.")));
|
||||||
else if (!qtFromKit->isValid())
|
else if (!qtFromKit->isValid())
|
||||||
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("Qt version is invalid.")));
|
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("Qt version is invalid.")));
|
||||||
if (!ToolchainKitAspect::cxxToolChain(k))
|
if (!ToolchainKitAspect::cxxToolchain(k))
|
||||||
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No C++ compiler set in kit.")));
|
result.append(createProjectTask(Task::TaskType::Error, Tr::tr("No C++ compiler set in kit.")));
|
||||||
|
|
||||||
// A project can be considered part of more than one Qt version, for instance if it is an
|
// A project can be considered part of more than one Qt version, for instance if it is an
|
||||||
@@ -1308,7 +1308,7 @@ static FilePath destDirFor(const TargetInformation &ti)
|
|||||||
|
|
||||||
FilePaths QmakeBuildSystem::allLibraryTargetFiles(const QmakeProFile *file) const
|
FilePaths QmakeBuildSystem::allLibraryTargetFiles(const QmakeProFile *file) const
|
||||||
{
|
{
|
||||||
const Toolchain *const toolchain = ToolchainKitAspect::cxxToolChain(kit());
|
const Toolchain *const toolchain = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
if (!toolchain)
|
if (!toolchain)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -1467,14 +1467,14 @@ QString QmakeBuildSystem::deviceRoot() const
|
|||||||
void QmakeBuildSystem::warnOnToolChainMismatch(const QmakeProFile *pro) const
|
void QmakeBuildSystem::warnOnToolChainMismatch(const QmakeProFile *pro) const
|
||||||
{
|
{
|
||||||
const BuildConfiguration *bc = buildConfiguration();
|
const BuildConfiguration *bc = buildConfiguration();
|
||||||
testToolChain(ToolchainKitAspect::cToolChain(kit()), getFullPathOf(pro, Variable::QmakeCc, bc));
|
testToolChain(ToolchainKitAspect::cToolchain(kit()), getFullPathOf(pro, Variable::QmakeCc, bc));
|
||||||
testToolChain(ToolchainKitAspect::cxxToolChain(kit()),
|
testToolChain(ToolchainKitAspect::cxxToolchain(kit()),
|
||||||
getFullPathOf(pro, Variable::QmakeCxx, bc));
|
getFullPathOf(pro, Variable::QmakeCxx, bc));
|
||||||
}
|
}
|
||||||
|
|
||||||
FilePath QmakeBuildSystem::executableFor(const QmakeProFile *file)
|
FilePath QmakeBuildSystem::executableFor(const QmakeProFile *file)
|
||||||
{
|
{
|
||||||
const Toolchain *const tc = ToolchainKitAspect::cxxToolChain(kit());
|
const Toolchain *const tc = ToolchainKitAspect::cxxToolchain(kit());
|
||||||
if (!tc)
|
if (!tc)
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
|
@@ -160,7 +160,7 @@ bool QmakeProjectImporter::matchKit(void *directoryData, const Kit *k) const
|
|||||||
|
|
||||||
QtVersion *kitVersion = QtKitAspect::qtVersion(k);
|
QtVersion *kitVersion = QtKitAspect::qtVersion(k);
|
||||||
QString kitSpec = QmakeKitAspect::mkspec(k);
|
QString kitSpec = QmakeKitAspect::mkspec(k);
|
||||||
Toolchain *tc = ToolchainKitAspect::cxxToolChain(k);
|
Toolchain *tc = ToolchainKitAspect::cxxToolchain(k);
|
||||||
if (kitSpec.isEmpty() && kitVersion)
|
if (kitSpec.isEmpty() && kitVersion)
|
||||||
kitSpec = kitVersion->mkspecFor(tc);
|
kitSpec = kitVersion->mkspecFor(tc);
|
||||||
QMakeStepConfig::OsType kitOsType = QMakeStepConfig::NoOsType;
|
QMakeStepConfig::OsType kitOsType = QMakeStepConfig::NoOsType;
|
||||||
@@ -241,7 +241,7 @@ Kit *QmakeProjectImporter::createTemporaryKit(const QtProjectImporter::QtVersion
|
|||||||
Q_UNUSED(osType) // TODO use this to select the right toolchain?
|
Q_UNUSED(osType) // TODO use this to select the right toolchain?
|
||||||
return QtProjectImporter::createTemporaryKit(data, [&data, parsedSpec](Kit *k) -> void {
|
return QtProjectImporter::createTemporaryKit(data, [&data, parsedSpec](Kit *k) -> void {
|
||||||
for (Toolchain *const tc : preferredToolChains(data.qt, parsedSpec))
|
for (Toolchain *const tc : preferredToolChains(data.qt, parsedSpec))
|
||||||
ToolchainKitAspect::setToolChain(k, tc);
|
ToolchainKitAspect::setToolchain(k, tc);
|
||||||
if (parsedSpec != data.qt->mkspec())
|
if (parsedSpec != data.qt->mkspec())
|
||||||
QmakeKitAspect::setMkspec(k, parsedSpec, QmakeKitAspect::MkspecSource::Code);
|
QmakeKitAspect::setMkspec(k, parsedSpec, QmakeKitAspect::MkspecSource::Code);
|
||||||
});
|
});
|
||||||
|
@@ -149,7 +149,7 @@ QMakeStepConfig QMakeStep::deducedArguments() const
|
|||||||
Kit *kit = target()->kit();
|
Kit *kit = target()->kit();
|
||||||
QMakeStepConfig config;
|
QMakeStepConfig config;
|
||||||
Abi targetAbi;
|
Abi targetAbi;
|
||||||
if (Toolchain *tc = ToolchainKitAspect::cxxToolChain(kit)) {
|
if (Toolchain *tc = ToolchainKitAspect::cxxToolchain(kit)) {
|
||||||
targetAbi = tc->targetAbi();
|
targetAbi = tc->targetAbi();
|
||||||
if (HostOsInfo::isWindowsHost()
|
if (HostOsInfo::isWindowsHost()
|
||||||
&& tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
|
&& tc->typeId() == ProjectExplorer::Constants::CLANG_TOOLCHAIN_TYPEID) {
|
||||||
|
@@ -182,7 +182,7 @@ void QnxConfiguration::deactivate()
|
|||||||
for (Kit *kit : kits) {
|
for (Kit *kit : kits) {
|
||||||
if (kit->isAutoDetected()
|
if (kit->isAutoDetected()
|
||||||
&& DeviceTypeKitAspect::deviceTypeId(kit) == Constants::QNX_QNX_OS_TYPE
|
&& DeviceTypeKitAspect::deviceTypeId(kit) == Constants::QNX_QNX_OS_TYPE
|
||||||
&& toolChainsToRemove.contains(ToolchainKitAspect::cxxToolChain(kit))) {
|
&& toolChainsToRemove.contains(ToolchainKitAspect::cxxToolchain(kit))) {
|
||||||
KitManager::deregisterKit(kit);
|
KitManager::deregisterKit(kit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -240,7 +240,7 @@ Toolchains QnxConfiguration::createToolChains(const QnxTarget &target)
|
|||||||
.arg(target.shortDescription()));
|
.arg(target.shortDescription()));
|
||||||
toolChain->sdpPath.setValue(m_envFile.parentDir());
|
toolChain->sdpPath.setValue(m_envFile.parentDir());
|
||||||
toolChain->cpuDir.setValue(target.cpuDir());
|
toolChain->cpuDir.setValue(target.cpuDir());
|
||||||
toolChain->resetToolChain(m_qccCompiler);
|
toolChain->resetToolchain(m_qccCompiler);
|
||||||
ToolchainManager::registerToolchain(toolChain);
|
ToolchainManager::registerToolchain(toolChain);
|
||||||
|
|
||||||
toolChains.append(toolChain);
|
toolChains.append(toolChain);
|
||||||
@@ -258,8 +258,8 @@ void QnxConfiguration::createKit(const QnxTarget &target)
|
|||||||
|
|
||||||
const auto init = [&](Kit *k) {
|
const auto init = [&](Kit *k) {
|
||||||
QtKitAspect::setQtVersion(k, qnxQt);
|
QtKitAspect::setQtVersion(k, qnxQt);
|
||||||
ToolchainKitAspect::setToolChain(k, toolChains[0]);
|
ToolchainKitAspect::setToolchain(k, toolChains[0]);
|
||||||
ToolchainKitAspect::setToolChain(k, toolChains[1]);
|
ToolchainKitAspect::setToolchain(k, toolChains[1]);
|
||||||
|
|
||||||
if (debugger.isValid())
|
if (debugger.isValid())
|
||||||
DebuggerKitAspect::setDebugger(k, debugger);
|
DebuggerKitAspect::setDebugger(k, debugger);
|
||||||
|
@@ -208,7 +208,7 @@ void QnxToolChainConfigWidget::applyImpl()
|
|||||||
tc->setDisplayName(displayName); // reset display name
|
tc->setDisplayName(displayName); // reset display name
|
||||||
tc->sdpPath.setValue(m_sdpPath->filePath());
|
tc->sdpPath.setValue(m_sdpPath->filePath());
|
||||||
tc->setTargetAbi(m_abiWidget->currentAbi());
|
tc->setTargetAbi(m_abiWidget->currentAbi());
|
||||||
tc->resetToolChain(m_compilerCommand->filePath());
|
tc->resetToolchain(m_compilerCommand->filePath());
|
||||||
}
|
}
|
||||||
|
|
||||||
void QnxToolChainConfigWidget::discardImpl()
|
void QnxToolChainConfigWidget::discardImpl()
|
||||||
|
@@ -542,7 +542,7 @@ Tasks QtVersion::validateKit(const Kit *k)
|
|||||||
result << BuildSystemTask(Task::Warning, Tr::tr("Device type is not supported by Qt version."));
|
result << BuildSystemTask(Task::Warning, Tr::tr("Device type is not supported by Qt version."));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Toolchain *tc = ToolchainKitAspect::cxxToolChain(k)) {
|
if (Toolchain *tc = ToolchainKitAspect::cxxToolchain(k)) {
|
||||||
Abi targetAbi = tc->targetAbi();
|
Abi targetAbi = tc->targetAbi();
|
||||||
Abis supportedAbis = tc->supportedAbis();
|
Abis supportedAbis = tc->supportedAbis();
|
||||||
bool fuzzyMatch = false;
|
bool fuzzyMatch = false;
|
||||||
@@ -576,7 +576,7 @@ Tasks QtVersion::validateKit(const Kit *k)
|
|||||||
version->displayName(), qtAbiString);
|
version->displayName(), qtAbiString);
|
||||||
result << BuildSystemTask(fuzzyMatch ? Task::Warning : Task::Error, message);
|
result << BuildSystemTask(fuzzyMatch ? Task::Warning : Task::Error, message);
|
||||||
}
|
}
|
||||||
} else if (ToolchainKitAspect::cToolChain(k)) {
|
} else if (ToolchainKitAspect::cToolchain(k)) {
|
||||||
const QString message = Tr::tr("The kit has a Qt version, but no C++ compiler.");
|
const QString message = Tr::tr("The kit has a Qt version, but no C++ compiler.");
|
||||||
result << BuildSystemTask(Task::Warning, message);
|
result << BuildSystemTask(Task::Warning, message);
|
||||||
}
|
}
|
||||||
|
@@ -226,7 +226,7 @@ void QtKitAspectFactory::fix(Kit *k)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Set a matching toolchain if we don't have one.
|
// Set a matching toolchain if we don't have one.
|
||||||
if (ToolchainKitAspect::cxxToolChain(k))
|
if (ToolchainKitAspect::cxxToolchain(k))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const QString spec = version->mkspec();
|
const QString spec = version->mkspec();
|
||||||
@@ -283,7 +283,7 @@ void QtKitAspectFactory::fix(Kit *k)
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (Toolchain * const bestTc = goodTcs.isEmpty() ? possibleTcs.first() : goodTcs.first())
|
if (Toolchain * const bestTc = goodTcs.isEmpty() ? possibleTcs.first() : goodTcs.first())
|
||||||
ToolchainKitAspect::setAllToolChainsToMatch(k, bestTc);
|
ToolchainKitAspect::setAllToolchainsToMatch(k, bestTc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -405,7 +405,7 @@ void QtKitAspect::setQtVersion(Kit *k, const QtVersion *v)
|
|||||||
|
|
||||||
void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env)
|
void QtKitAspect::addHostBinariesToPath(const Kit *k, Environment &env)
|
||||||
{
|
{
|
||||||
if (const Toolchain *tc = ToolchainKitAspect::cxxToolChain(k))
|
if (const Toolchain *tc = ToolchainKitAspect::cxxToolchain(k))
|
||||||
env.prependOrSetPath(tc->compilerCommand().parentDir());
|
env.prependOrSetPath(tc->compilerCommand().parentDir());
|
||||||
|
|
||||||
if (const QtVersion *qt = qtVersion(k))
|
if (const QtVersion *qt = qtVersion(k))
|
||||||
|
Reference in New Issue
Block a user