void QmakeKitInformation::setup(Kit *k) { QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k); if (!version) return; FileName spec = QmakeKitInformation::mkspec(k); if (spec.isEmpty()) spec = version->mkspec(); ToolChain *tc = ToolChainKitInformation::toolChain(k); if (!tc || (!tc->suggestedMkspecList().empty() && !tc->suggestedMkspecList().contains(spec))) { ToolChain *possibleTc = 0; foreach (ToolChain *current, ToolChainManager::toolChains()) { if (version->qtAbis().contains(current->targetAbi())) { possibleTc = current; if (current->suggestedMkspecList().contains(spec)) break; } } ToolChainKitInformation::setToolChain(k, possibleTc); }
void QmakeKitInformation::setup(Kit *k) { QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(k); if (!version) return; if (version->type() == "Boot2Qt.QtVersionType") // HACK: Ignore boot2Qt kits! return; FileName spec = QmakeKitInformation::mkspec(k); if (spec.isEmpty()) spec = version->mkspec(); ToolChain *tc = ToolChainKitInformation::toolChain(k, ToolChain::Language::Cxx); if (!tc || (!tc->suggestedMkspecList().empty() && !tc->suggestedMkspecList().contains(spec))) { ToolChain *possibleTc = nullptr; foreach (ToolChain *current, ToolChainManager::toolChains()) { if (current->language() == ToolChain::Language::Cxx && version->qtAbis().contains(current->targetAbi())) { possibleTc = current; if (current->suggestedMkspecList().contains(spec)) break; } } if (possibleTc) ToolChainKitInformation::setToolChain(k, possibleTc); }
Utils::FileName GenericEmbeddedLinuxTarget::mkspec(const Qt4ProjectManager::Qt4BuildConfiguration *bc) const { QtSupport::BaseQtVersion *version = bc->qtVersion(); if (!version) return Utils::FileName(); return version->mkspec(); }
void QbsManager::addProfileFromKit(const ProjectExplorer::Kit *k) { QStringList usedProfileNames = profileNames(); const QString name = ProjectExplorer::Project::makeUnique( QString::fromLatin1("qtc_") + k->fileSystemFriendlyName(), usedProfileNames); setProfileForKit(name, k); QVariantMap data; QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(k); if (qt) { data.insert(QLatin1String(QTCORE_BINPATH), qt->binPath().toUserOutput()); QStringList builds; if (qt->hasDebugBuild()) builds << QLatin1String("debug"); if (qt->hasReleaseBuild()) builds << QLatin1String("release"); data.insert(QLatin1String(QTCORE_BUILDVARIANT), builds); data.insert(QLatin1String(QTCORE_DOCPATH), qt->docsPath().toUserOutput()); data.insert(QLatin1String(QTCORE_INCPATH), qt->headerPath().toUserOutput()); data.insert(QLatin1String(QTCORE_LIBPATH), qt->libraryPath().toUserOutput()); Utils::FileName mkspecPath = qt->mkspecsPath(); mkspecPath.appendPath(qt->mkspec().toString()); data.insert(QLatin1String(QTCORE_MKSPEC), mkspecPath.toUserOutput()); data.insert(QLatin1String(QTCORE_NAMESPACE), qt->qtNamespace()); data.insert(QLatin1String(QTCORE_LIBINFIX), qt->qtLibInfix()); data.insert(QLatin1String(QTCORE_VERSION), qt->qtVersionString()); if (qt->isFrameworkBuild()) data.insert(QLatin1String(QTCORE_FRAMEWORKBUILD), true); } if (ProjectExplorer::SysRootKitInformation::hasSysRoot(k)) data.insert(QLatin1String(QBS_SYSROOT), ProjectExplorer::SysRootKitInformation::sysRoot(k).toUserOutput()); ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(k); if (tc) { // FIXME/CLARIFY: How to pass the sysroot? ProjectExplorer::Abi targetAbi = tc->targetAbi(); QString architecture = ProjectExplorer::Abi::toString(targetAbi.architecture()); if (targetAbi.wordWidth() == 64) architecture.append(QLatin1String("_64")); data.insert(QLatin1String(QBS_ARCHITECTURE), architecture); if (targetAbi.endianness() == ProjectExplorer::Abi::BigEndian) data.insert(QLatin1String(QBS_ENDIANNESS), QLatin1String("big")); else data.insert(QLatin1String(QBS_ENDIANNESS), QLatin1String("little")); if (targetAbi.os() == ProjectExplorer::Abi::WindowsOS) { data.insert(QLatin1String(QBS_TARGETOS), QLatin1String("windows")); data.insert(QLatin1String(QBS_TOOLCHAIN), targetAbi.osFlavor() == ProjectExplorer::Abi::WindowsMSysFlavor ? QStringList() << QLatin1String("mingw") << QLatin1String("gcc") : QStringList() << QLatin1String("msvc")); } else if (targetAbi.os() == ProjectExplorer::Abi::MacOS) { data.insert(QLatin1String(QBS_TARGETOS), QStringList() << QLatin1String("osx") << QLatin1String("darwin") << QLatin1String("unix")); if (tc->type() != QLatin1String("clang")) { data.insert(QLatin1String(QBS_TOOLCHAIN), QLatin1String("gcc")); } else { data.insert(QLatin1String(QBS_TOOLCHAIN), QStringList() << QLatin1String("clang") << QLatin1String("llvm") << QLatin1String("gcc")); } } else if (targetAbi.os() == ProjectExplorer::Abi::LinuxOS) { data.insert(QLatin1String(QBS_TARGETOS), QStringList() << QLatin1String("linux") << QLatin1String("unix")); if (tc->type() != QLatin1String("clang")) { data.insert(QLatin1String(QBS_TOOLCHAIN), QLatin1String("gcc")); } else { data.insert(QLatin1String(QBS_TOOLCHAIN), QStringList() << QLatin1String("clang") << QLatin1String("llvm") << QLatin1String("gcc")); } } Utils::FileName cxx = tc->compilerCommand(); data.insert(QLatin1String(CPP_TOOLCHAINPATH), cxx.toFileInfo().absolutePath()); data.insert(QLatin1String(CPP_COMPILERNAME), cxx.toFileInfo().fileName()); } addProfile(name, data); }