QList<Utils::FileName> GccToolChain::suggestedMkspecList() const { Abi abi = targetAbi(); Abi host = Abi::hostAbi(); // Cross compile: Leave the mkspec alone! if (abi.architecture() != host.architecture() || abi.os() != host.os() || abi.osFlavor() != host.osFlavor()) // Note: This can fail:-( return QList<Utils::FileName>(); if (abi.os() == Abi::MacOS) { QString v = version(); // prefer versioned g++ on mac. This is required to enable building for older Mac OS versions if (v.startsWith(QLatin1String("4.0")) && m_compilerCommand.endsWith(QLatin1String("-4.0"))) return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("macx-g++40")); if (v.startsWith(QLatin1String("4.2")) && m_compilerCommand.endsWith(QLatin1String("-4.2"))) return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("macx-g++42")); return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("macx-g++")); } if (abi.os() == Abi::LinuxOS) { if (abi.osFlavor() != Abi::GenericLinuxFlavor) return QList<Utils::FileName>(); // most likely not a desktop, so leave the mkspec alone. if (abi.wordWidth() == host.wordWidth()) return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("linux-g++")); // no need to explicitly set the word width return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("linux-g++-") + QString::number(m_targetAbi.wordWidth())); } if (abi.os() == Abi::BsdOS && abi.osFlavor() == Abi::FreeBsdFlavor) return QList<Utils::FileName>() << Utils::FileName::fromString(QLatin1String("freebsd-g++")); return QList<Utils::FileName>(); }
bool AndroidToolChain::fromMap(const QVariantMap &data) { if (!GccToolChain::fromMap(data)) return false; if (data.contains(QLatin1String(ANDROID_QT_VERSION_KEY))) { QString command = compilerCommand().toString(); QString ndkPath = AndroidConfigurations::currentConfig().ndkLocation().toString(); if (!command.startsWith(ndkPath)) return false; command = command.mid(ndkPath.length()); if (!command.startsWith(QLatin1String("/toolchains/"))) return false; command = command.mid(12); int index = command.indexOf(QLatin1Char('/')); if (index == -1) return false; command = command.left(index); QRegExp versionRegExp(NDKGccVersionRegExp); index = versionRegExp.indexIn(command); if (index == -1) return false; m_ndkToolChainVersion = command.mid(index + 1); QString platform = command.left(index); setTargetAbi(AndroidConfig::abiForToolChainPrefix(platform)); } else { m_ndkToolChainVersion = data.value(QLatin1String(ANDROID_NDK_TC_VERION)).toString(); } Abi abi = targetAbi(); m_secondaryToolChain = AndroidToolChainFactory::versionCompareLess(AndroidToolChainFactory::versionNumberFromString(m_ndkToolChainVersion), AndroidToolChainFactory::newestToolChainVersionForArch(abi)); return isValid(); }
void GccToolChain::forceTo32Bit(bool f) { if (f == m_forcedTo32Bit) return; if (displayName() == defaultDisplayName()) setDisplayName(typeName()); m_forcedTo32Bit = f; m_targetAbi = Abi(); // Invalidate ABI. updateId(); targetAbi(); }
void GccToolChain::setCompilerPath(const QString &path) { if (path == m_compilerPath) return; if (displayName() == defaultDisplayName()) setDisplayName(typeName()); m_compilerPath = path; m_targetAbi = Abi(); updateId(); if (m_compilerPath.isEmpty()) return; targetAbi(); // update ABI information (and default display name) }
GccToolChain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const { return QList<Abi>() << targetAbi(); }
Utils::FileName ToolChain::suggestedDebugger() const { return ToolChainManager::instance()->defaultDebugger(targetAbi()); }
QList<Utils::FileName> ClangClToolChain::suggestedMkspecList() const { const QString mkspec = QLatin1String("win32-clang-") + Abi::toString(targetAbi().osFlavor()); return QList<Utils::FileName>{Utils::FileName::fromString(mkspec)}; }
GccToolChain::DetectedAbisResult AndroidToolChain::detectSupportedAbis() const { GccToolChain::DetectedAbisResult supportedAbis = GccToolChain::detectSupportedAbis(); supportedAbis.supportedAbis = {targetAbi()}; return supportedAbis; }