summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@qt.io>2019-11-01 07:44:31 +0100
committerAurindam Jana <aurindam.jana@qt.io>2019-11-01 08:56:11 +0000
commit43e40f21a78df87f63cfe2a4aaaf022c5c36c66b (patch)
tree584d03144b0bdc5c4662c182ac1e4f4cb14f7670
parent67ba6a5b9acfcd1543bda6c8e8c5ca747ca4e586 (diff)
downloadqt-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.cpp27
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;
}