From 889740a90f79af302d193008cda4324e7368557c Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Thu, 16 May 2013 15:49:24 +0200 Subject: [PATCH] Android: Extra search directory to find make on windows The sdk should set that extra directory, via the sdktool. E. g. something like sdktool addKeys android MakeExtraSearchDirectory QString:%DIRECTORY% where %DIRECTORY% is the bin directory of the bundled mingw. That is Tools\MinGW\bin for the qt sdk. Also see: Task-number: QTCREATORBUG-9297 Change-Id: I487c67b7fb704dd00cf5c6f4f647c8c4fbe8cd3d Reviewed-by: Ray Donnelly <mingw.android@gmail.com> Reviewed-by: Iikka Eklund <iikka.eklund@digia.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Tim Jenssen <tim.jenssen@digia.com> --- src/plugins/android/androidconfigurations.cpp | 16 ++++++++++++++++ src/plugins/android/androidconfigurations.h | 4 ++++ src/plugins/android/androidtoolchain.cpp | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index f2e923697e9..b0e6dedcf65 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -81,6 +81,7 @@ namespace { const QLatin1String OpenJDKLocationKey("OpenJDKLocation"); const QLatin1String KeystoreLocationKey("KeystoreLocation"); const QLatin1String AutomaticKitCreationKey("AutomatiKitCreation"); + const QLatin1String MakeExtraSearchDirectory("MakeExtraSearchDirectory"); const QLatin1String PartitionSizeKey("PartitionSize"); const QLatin1String ToolchainHostKey("ToolchainHost"); const QLatin1String ArmToolchainPrefix("arm-linux-androideabi"); @@ -156,6 +157,11 @@ AndroidConfig::AndroidConfig(const QSettings &settings) keystoreLocation = FileName::fromString(settings.value(KeystoreLocationKey).toString()); toolchainHost = settings.value(ToolchainHostKey).toString(); automaticKitCreation = settings.value(AutomaticKitCreationKey, true).toBool(); + QString extraDirectory = settings.value(MakeExtraSearchDirectory).toString(); + if (extraDirectory.isEmpty()) + makeExtraSearchDirectories = QStringList(); + else + makeExtraSearchDirectories << extraDirectory; PersistentSettingsReader reader; if (reader.load(FileName::fromString(sdkSettingsFileName())) @@ -170,6 +176,11 @@ AndroidConfig::AndroidConfig(const QSettings &settings) QVariant v = reader.restoreValue(AutomaticKitCreationKey); if (v.isValid()) automaticKitCreation = v.toBool(); + QString extraDirectory = reader.restoreValue(MakeExtraSearchDirectory).toString(); + if (extraDirectory.isEmpty()) + makeExtraSearchDirectories = QStringList(); + else + makeExtraSearchDirectories << extraDirectory; // persistent settings } @@ -599,6 +610,11 @@ QString AndroidConfigurations::bestMatch(const QString &targetAPI) const return QLatin1String("android-8"); } +QStringList AndroidConfigurations::makeExtraSearchDirectories() const +{ + return m_config.makeExtraSearchDirectories; +} + bool equalKits(Kit *a, Kit *b) { return ToolChainKitInformation::toolChain(a) == ToolChainKitInformation::toolChain(b) diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index edd607fba14..04e8ec303fc 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -32,6 +32,7 @@ #include <QObject> #include <QString> +#include <QStringList> #include <QVector> #include <projectexplorer/abi.h> @@ -55,6 +56,7 @@ public: Utils::FileName openJDKLocation; Utils::FileName keystoreLocation; QString toolchainHost; + QStringList makeExtraSearchDirectories; unsigned partitionSize; bool automaticKitCreation; }; @@ -97,6 +99,8 @@ public: QString startAVD(int *apiLevel, const QString &name = QString()) const; QString bestMatch(const QString &targetAPI) const; + QStringList makeExtraSearchDirectories() const; + static ProjectExplorer::Abi::Architecture architectureForToolChainPrefix(const QString &toolchainprefix); static QLatin1String toolchainPrefix(ProjectExplorer::Abi::Architecture architecture); static QLatin1String toolsPrefix(ProjectExplorer::Abi::Architecture architecture); diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index 04ee7586409..65bd22393af 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -204,7 +204,7 @@ QString AndroidToolChain::makeCommand(const Utils::Environment &env) const { QString make = HostOsInfo::isWindowsHost() ? QLatin1String("ma-make.exe") : QLatin1String("make"); - QString tmp = env.searchInPath(make); + QString tmp = env.searchInPath(make, AndroidConfigurations::instance().makeExtraSearchDirectories()); return tmp.isEmpty() ? make : tmp; } -- GitLab