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>(); }
void AbiWidget::setCustomAbi(const Abi ¤t) { bool blocked = blockSignals(true); d->m_architectureComboBox->setCurrentIndex(static_cast<int>(current.architecture())); d->m_osComboBox->setCurrentIndex(static_cast<int>(current.os())); osChanged(); for (int i = 0; i < d->m_osFlavorComboBox->count(); ++i) { if (d->m_osFlavorComboBox->itemData(i).toInt() == current.osFlavor()) { d->m_osFlavorComboBox->setCurrentIndex(i); break; } } d->m_binaryFormatComboBox->setCurrentIndex(static_cast<int>(current.binaryFormat())); for (int i = 0; i < d->m_wordWidthComboBox->count(); ++i) { if (d->m_wordWidthComboBox->itemData(i).toInt() == current.wordWidth()) { d->m_wordWidthComboBox->setCurrentIndex(i); break; } } if (d->isCustom()) d->m_abi->setItemData(0, current.toString()); blockSignals(blocked); emit abiChanged(); }
static ToolChain *findMsvcToolChain(const QList<ToolChain *> &list, unsigned char wordWidth, Abi::OSFlavor flavor) { return Utils::findOrDefault(list, [wordWidth, flavor] (const ToolChain *tc) { const Abi abi = tc->targetAbi(); return abi.osFlavor() == flavor && wordWidth == abi.wordWidth();} ); }
bool Abi::isCompatibleWith(const Abi &other) const { bool isCompat = (architecture() == other.architecture() || other.architecture() == Abi::UnknownArchitecture) && (os() == other.os() || other.os() == Abi::UnknownOS) && (osFlavor() == other.osFlavor() || other.osFlavor() == Abi::UnknownFlavor) && (binaryFormat() == other.binaryFormat() || other.binaryFormat() == Abi::UnknownFormat) && ((wordWidth() == other.wordWidth() && wordWidth() != 0) || other.wordWidth() == 0); // *-linux-generic-* is compatible with *-linux-* (both ways): This is for the benefit of // people building Qt themselves using e.g. a meego toolchain. // // We leave it to the specific targets to catch filter out the tool chains that do not // work for them. if (!isCompat && (architecture() == other.architecture() || other.architecture() == Abi::UnknownArchitecture) && ((os() == other.os()) && (os() == LinuxOS)) && (osFlavor() == GenericLinuxFlavor || other.osFlavor() == GenericLinuxFlavor) && (binaryFormat() == other.binaryFormat() || other.binaryFormat() == Abi::UnknownFormat) && ((wordWidth() == other.wordWidth() && wordWidth() != 0) || other.wordWidth() == 0)) isCompat = true; return isCompat; }
void AbiWidget::setCustomAbi(const Abi ¤t) { d->m_architectureComboBox->setCurrentIndex(static_cast<int>(current.architecture())); d->m_osComboBox->setCurrentIndex(static_cast<int>(current.os())); osChanged(); for (int i = 0; i < d->m_osFlavorComboBox->count(); ++i) { if (d->m_osFlavorComboBox->itemData(i).toInt() == current.osFlavor()) { d->m_osFlavorComboBox->setCurrentIndex(i); break; } } d->m_binaryFormatComboBox->setCurrentIndex(static_cast<int>(current.binaryFormat())); for (int i = 0; i < d->m_wordWidthComboBox->count(); ++i) { if (d->m_wordWidthComboBox->itemData(i).toInt() == current.wordWidth()) { d->m_wordWidthComboBox->setCurrentIndex(i); break; } } }
Abi QmlProjectRunConfiguration::abi() const { Abi hostAbi = Abi::hostAbi(); return Abi(hostAbi.architecture(), hostAbi.os(), hostAbi.osFlavor(), Abi::RuntimeQmlFormat, hostAbi.wordWidth()); }