forked from qt-creator/qt-creator
Recognize mips64 toolchains from the Android NDK
Adapt a couple mips64-related tests at the same time. Change-Id: I9313419cfe561c7e949f343d2008f7b370ad2b39 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -100,18 +100,21 @@ namespace {
|
|||||||
const QLatin1String ArmToolchainPrefix("arm-linux-androideabi");
|
const QLatin1String ArmToolchainPrefix("arm-linux-androideabi");
|
||||||
const QLatin1String X86ToolchainPrefix("x86");
|
const QLatin1String X86ToolchainPrefix("x86");
|
||||||
const QLatin1String MipsToolchainPrefix("mipsel-linux-android");
|
const QLatin1String MipsToolchainPrefix("mipsel-linux-android");
|
||||||
|
const QLatin1String Mips64ToolchainPrefix("mips64el-linux-android");
|
||||||
const QLatin1String AArch64ToolchainPrefix("aarch64-linux-android");
|
const QLatin1String AArch64ToolchainPrefix("aarch64-linux-android");
|
||||||
const QLatin1String X86_64ToolchainPrefix("x86_64");
|
const QLatin1String X86_64ToolchainPrefix("x86_64");
|
||||||
|
|
||||||
const QLatin1String ArmToolsPrefix("arm-linux-androideabi");
|
const QLatin1String ArmToolsPrefix("arm-linux-androideabi");
|
||||||
const QLatin1String X86ToolsPrefix("i686-linux-android");
|
const QLatin1String X86ToolsPrefix("i686-linux-android");
|
||||||
const QLatin1String MipsToolsPrefix("mipsel-linux-android");
|
const QLatin1String MipsToolsPrefix("mipsel-linux-android");
|
||||||
|
const QLatin1String Mips64ToolsPrefix("mips64el-linux-android");
|
||||||
const QLatin1String AArch64ToolsPrefix("aarch64-linux-android");
|
const QLatin1String AArch64ToolsPrefix("aarch64-linux-android");
|
||||||
const QLatin1String X86_64ToolsPrefix("x86_64-linux-android");
|
const QLatin1String X86_64ToolsPrefix("x86_64-linux-android");
|
||||||
|
|
||||||
const QLatin1String ArmToolsDisplayName("arm");
|
const QLatin1String ArmToolsDisplayName("arm");
|
||||||
const QLatin1String X86ToolsDisplayName("i686");
|
const QLatin1String X86ToolsDisplayName("i686");
|
||||||
const QLatin1String MipsToolsDisplayName("mipsel");
|
const QLatin1String MipsToolsDisplayName("mipsel");
|
||||||
|
const QLatin1String Mips64ToolsDisplayName("mips64el");
|
||||||
const QLatin1String AArch64ToolsDisplayName("aarch64");
|
const QLatin1String AArch64ToolsDisplayName("aarch64");
|
||||||
const QLatin1String X86_64ToolsDisplayName("x86_64");
|
const QLatin1String X86_64ToolsDisplayName("x86_64");
|
||||||
|
|
||||||
@@ -172,6 +175,9 @@ Abi AndroidConfig::abiForToolChainPrefix(const QString &toolchainPrefix)
|
|||||||
} else if (toolchainPrefix == X86_64ToolchainPrefix) {
|
} else if (toolchainPrefix == X86_64ToolchainPrefix) {
|
||||||
arch = Abi::X86Architecture;
|
arch = Abi::X86Architecture;
|
||||||
wordWidth = 64;
|
wordWidth = 64;
|
||||||
|
} else if (toolchainPrefix == Mips64ToolchainPrefix) {
|
||||||
|
arch = Abi::MipsArchitecture;
|
||||||
|
wordWidth = 64;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Abi(arch, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, wordWidth);
|
return Abi(arch, Abi::LinuxOS, Abi::AndroidLinuxFlavor, Abi::ElfFormat, wordWidth);
|
||||||
@@ -189,6 +195,8 @@ QLatin1String AndroidConfig::toolchainPrefix(const Abi &abi)
|
|||||||
return X86_64ToolchainPrefix;
|
return X86_64ToolchainPrefix;
|
||||||
return X86ToolchainPrefix;
|
return X86ToolchainPrefix;
|
||||||
case Abi::MipsArchitecture:
|
case Abi::MipsArchitecture:
|
||||||
|
if (abi.wordWidth() == 64)
|
||||||
|
return Mips64ToolchainPrefix;
|
||||||
return MipsToolchainPrefix;
|
return MipsToolchainPrefix;
|
||||||
default:
|
default:
|
||||||
return Unknown;
|
return Unknown;
|
||||||
@@ -207,6 +215,8 @@ QLatin1String AndroidConfig::toolsPrefix(const Abi &abi)
|
|||||||
return X86_64ToolsPrefix;
|
return X86_64ToolsPrefix;
|
||||||
return X86ToolsPrefix;
|
return X86ToolsPrefix;
|
||||||
case Abi::MipsArchitecture:
|
case Abi::MipsArchitecture:
|
||||||
|
if (abi.wordWidth() == 64)
|
||||||
|
return Mips64ToolsPrefix;
|
||||||
return MipsToolsPrefix;
|
return MipsToolsPrefix;
|
||||||
default:
|
default:
|
||||||
return Unknown;
|
return Unknown;
|
||||||
@@ -225,6 +235,8 @@ QLatin1String AndroidConfig::displayName(const Abi &abi)
|
|||||||
return X86_64ToolsDisplayName;
|
return X86_64ToolsDisplayName;
|
||||||
return X86ToolsDisplayName;
|
return X86ToolsDisplayName;
|
||||||
case Abi::MipsArchitecture:
|
case Abi::MipsArchitecture:
|
||||||
|
if (abi.wordWidth() == 64)
|
||||||
|
return Mips64ToolsDisplayName;
|
||||||
return MipsToolsDisplayName;
|
return MipsToolsDisplayName;
|
||||||
default:
|
default:
|
||||||
return Unknown;
|
return Unknown;
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ QList<AndroidToolChainFactory::AndroidToolChainInformation> AndroidToolChainFact
|
|||||||
ati.version = fileName.mid(idx + 1);
|
ati.version = fileName.mid(idx + 1);
|
||||||
QString platform = fileName.left(idx);
|
QString platform = fileName.left(idx);
|
||||||
ati.abi = AndroidConfig::abiForToolChainPrefix(platform);
|
ati.abi = AndroidConfig::abiForToolChainPrefix(platform);
|
||||||
if (ati.abi.architecture() == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
|
if (ati.abi.architecture() == Abi::UnknownArchitecture)
|
||||||
continue;
|
continue;
|
||||||
ati.compilerCommand = AndroidConfigurations::currentConfig().gccPath(ati.abi, lang, ati.version);
|
ati.compilerCommand = AndroidConfigurations::currentConfig().gccPath(ati.abi, lang, ati.version);
|
||||||
result.append(ati);
|
result.append(ati);
|
||||||
@@ -399,7 +399,7 @@ AndroidToolChainFactory::autodetectToolChainsForNdk(const FileName &ndkPath,
|
|||||||
QString version = fileName.mid(idx + 1);
|
QString version = fileName.mid(idx + 1);
|
||||||
QString platform = fileName.left(idx);
|
QString platform = fileName.left(idx);
|
||||||
Abi abi = AndroidConfig::abiForToolChainPrefix(platform);
|
Abi abi = AndroidConfig::abiForToolChainPrefix(platform);
|
||||||
if (abi.architecture() == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
|
if (abi.architecture() == Abi::UnknownArchitecture)
|
||||||
continue;
|
continue;
|
||||||
QList<AndroidToolChain *> toolChainBundle;
|
QList<AndroidToolChain *> toolChainBundle;
|
||||||
for (Core::Id lang : {ProjectExplorer::Constants::CXX_LANGUAGE_ID, ProjectExplorer::Constants::C_LANGUAGE_ID}) {
|
for (Core::Id lang : {ProjectExplorer::Constants::CXX_LANGUAGE_ID, ProjectExplorer::Constants::C_LANGUAGE_ID}) {
|
||||||
@@ -447,7 +447,7 @@ QList<int> AndroidToolChainFactory::newestToolChainVersionForArch(const Abi &abi
|
|||||||
QList<int> version = versionNumberFromString(fileName.mid(idx + 1));
|
QList<int> version = versionNumberFromString(fileName.mid(idx + 1));
|
||||||
QString platform = fileName.left(idx);
|
QString platform = fileName.left(idx);
|
||||||
Abi abi = AndroidConfig::abiForToolChainPrefix(platform);
|
Abi abi = AndroidConfig::abiForToolChainPrefix(platform);
|
||||||
if (abi.architecture() == Abi::UnknownArchitecture) // e.g. mipsel which is not yet supported
|
if (abi.architecture() == Abi::UnknownArchitecture)
|
||||||
continue;
|
continue;
|
||||||
QHash<Abi, QList<int> >::const_iterator it
|
QHash<Abi, QList<int> >::const_iterator it
|
||||||
= m_newestVersionForAbi.constFind(abi);
|
= m_newestVersionForAbi.constFind(abi);
|
||||||
|
|||||||
@@ -1187,6 +1187,14 @@ void ProjectExplorer::ProjectExplorerPlugin::testAbiFromTargetTriplet_data()
|
|||||||
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
||||||
<< int(Abi::ElfFormat) << 32;
|
<< int(Abi::ElfFormat) << 32;
|
||||||
|
|
||||||
|
QTest::newRow("mips64el-linux-android") << int(Abi::MipsArchitecture)
|
||||||
|
<< int(Abi::LinuxOS) << int(Abi::AndroidLinuxFlavor)
|
||||||
|
<< int(Abi::ElfFormat) << 64;
|
||||||
|
|
||||||
|
QTest::newRow("mips64el-unknown-linux-android") << int(Abi::MipsArchitecture)
|
||||||
|
<< int(Abi::LinuxOS) << int(Abi::AndroidLinuxFlavor)
|
||||||
|
<< int(Abi::ElfFormat) << 64;
|
||||||
|
|
||||||
QTest::newRow("mips64-linux-octeon-gnu") << int(Abi::MipsArchitecture)
|
QTest::newRow("mips64-linux-octeon-gnu") << int(Abi::MipsArchitecture)
|
||||||
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
<< int(Abi::LinuxOS) << int(Abi::GenericLinuxFlavor)
|
||||||
<< int(Abi::ElfFormat) << 64;
|
<< int(Abi::ElfFormat) << 64;
|
||||||
|
|||||||
@@ -1637,6 +1637,10 @@ void ProjectExplorerPlugin::testGccAbiGuessing_data()
|
|||||||
<< QString::fromLatin1("powerpc64-suse-linux")
|
<< QString::fromLatin1("powerpc64-suse-linux")
|
||||||
<< QByteArray("#define __SIZEOF_SIZE_T__ 8\n")
|
<< QByteArray("#define __SIZEOF_SIZE_T__ 8\n")
|
||||||
<< QStringList({"ppc-linux-generic-elf-64bit"});
|
<< QStringList({"ppc-linux-generic-elf-64bit"});
|
||||||
|
QTest::newRow("Linux 11 (64bit mips)")
|
||||||
|
<< QString::fromLatin1("mips64el-linux-uclibc")
|
||||||
|
<< QByteArray("#define __SIZEOF_SIZE_T__ 8")
|
||||||
|
<< QStringList({"mips-linux-generic-elf-64bit"});
|
||||||
|
|
||||||
QTest::newRow("Mingw 1 (32bit)")
|
QTest::newRow("Mingw 1 (32bit)")
|
||||||
<< QString::fromLatin1("i686-w64-mingw32")
|
<< QString::fromLatin1("i686-w64-mingw32")
|
||||||
|
|||||||
Reference in New Issue
Block a user