diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2019-11-01 07:44:31 +0100 |
---|---|---|
committer | Aurindam Jana <aurindam.jana@qt.io> | 2019-11-01 08:56:11 +0000 |
commit | 43e40f21a78df87f63cfe2a4aaaf022c5c36c66b (patch) | |
tree | 584d03144b0bdc5c4662c182ac1e4f4cb14f7670 | |
parent | 67ba6a5b9acfcd1543bda6c8e8c5ca747ca4e586 (diff) | |
download | qt-creator-43e40f21a78df87f63cfe2a4aaaf022c5c36c66b.tar.gz |
McuSupport: Detect GNU Toolchain for Arm a bit better
If there is exactly one subdir in the GNU Tools installation dir, pre-
select it.
Change-Id: I14cb2e46863884724d4eef2ecac83513c515ebee
Reviewed-by: Aurindam Jana <aurindam.jana@qt.io>
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptions.cpp | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 710b668c01..9cbd8a5a83 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -234,11 +234,26 @@ static PackageOptions *createQulPackage() static PackageOptions *createArmGccPackage() { - const QString defaultPath = - Utils::HostOsInfo::isWindowsHost() ? - QDir::fromNativeSeparators(qEnvironmentVariable("ProgramFiles(x86)")) - + "/GNU Tools ARM Embedded/" - : QString("%{Env:ARMGCC_DIR}"); + const char envVar[] = "ARMGCC_DIR"; + + QString defaultPath; + if (qEnvironmentVariableIsSet(envVar)) + defaultPath = qEnvironmentVariable(envVar); + if (defaultPath.isEmpty() && Utils::HostOsInfo::isWindowsHost()) { + const QDir installDir( + qEnvironmentVariable("ProgramFiles(x86)") + "/GNU Tools ARM Embedded/"); + if (installDir.exists()) { + // If GNU Tools installation dir has only one sub dir, + // select the sub dir, otherwise the installation dir. + const QFileInfoList subDirs = + installDir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + if (subDirs.count() == 1) + defaultPath = subDirs.first().filePath() + '/'; + } + } + if (defaultPath.isEmpty()) + defaultPath = QDir::homePath(); + auto result = new PackageOptions( PackageOptions::tr("GNU Arm Embedded Toolchain"), defaultPath, @@ -246,7 +261,7 @@ static PackageOptions *createArmGccPackage() Constants::SETTINGS_KEY_PACKAGE_ARMGCC); result->setDownloadUrl( "https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads"); - result->setEnvironmentVariableName("ARMGCC_DIR"); + result->setEnvironmentVariableName(envVar); return result; } |