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