From ac3831d3cad0239fa43064799482810b06cc9764 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Fri, 7 Dec 2012 19:52:56 +0200 Subject: [PATCH] Set env vars every time. Change-Id: I1196929031bd754dcbb7a52799dbb2d1b67df776 Reviewed-by: Daniel Teske --- .../android/androidpackagecreationwidget.cpp | 9 +++++ src/plugins/android/androidqtversion.cpp | 40 ++++++++++++++++++- src/plugins/android/androidqtversion.h | 2 + src/plugins/android/androidtoolchain.cpp | 18 ++------- src/plugins/android/androidtoolchain.h | 2 +- 5 files changed, 55 insertions(+), 16 deletions(-) diff --git a/src/plugins/android/androidpackagecreationwidget.cpp b/src/plugins/android/androidpackagecreationwidget.cpp index 9b5aaf7b9f5..d3fc6dfba9c 100644 --- a/src/plugins/android/androidpackagecreationwidget.cpp +++ b/src/plugins/android/androidpackagecreationwidget.cpp @@ -260,6 +260,15 @@ void AndroidPackageCreationWidget::initGui() m_ui->prebundledLibsListView->setModel(m_prebundledLibs); m_ui->permissionsListView->setModel(m_permissionsModel); m_ui->KeystoreLocationLineEdit->setText(m_step->keystorePath().toUserOutput()); + + // Make the buildconfiguration emit a evironmentChanged() signal + // TODO find a better way + Qt4BuildConfiguration *bc = qobject_cast(m_step->target()->activeBuildConfiguration()); + if (!bc) + return; + bool use = bc->useSystemEnvironment(); + bc->setUseSystemEnvironment(!use); + bc->setUseSystemEnvironment(use); } void AndroidPackageCreationWidget::updateAndroidProjectInfo() diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index d815162e5b7..b2932e784be 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -29,11 +29,24 @@ #include "androidqtversion.h" #include "androidconstants.h" -#include "qt4projectmanager/qt4projectmanagerconstants.h" +#include "androidconfigurations.h" +#include "androidmanager.h" +#include + +#include +#include + +#include #include +#include + +#include +#include using namespace Android::Internal; +using namespace ProjectExplorer; +using namespace Qt4ProjectManager; AndroidQtVersion::AndroidQtVersion() : QtSupport::BaseQtVersion() @@ -80,6 +93,31 @@ QList AndroidQtVersion::detectQtAbis() const 32); } +void AndroidQtVersion::addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const +{ + QString ndk_host = QLatin1String( +#if defined(Q_OS_LINUX) + "linux-x86" +#elif defined(Q_OS_WIN) + "windows" +#elif defined(Q_OS_MAC) + "darwin-x86" +#endif + ); + + // this env vars are used by qmake mkspecs to generate makefiles (check QTDIR/mkspecs/android-g++/qmake.conf for more info) + env.set(QLatin1String("ANDROID_NDK_HOST"), ndk_host); + env.set(QLatin1String("ANDROID_NDK_ROOT"), AndroidConfigurations::instance().config().ndkLocation.toUserOutput()); + + Qt4Project *qt4pro = qobject_cast(ProjectExplorerPlugin::instance()->currentProject()); + if (!qt4pro || !qt4pro->activeTarget() + || QtSupport::QtKitInformation::qtVersion(k)->type() != QLatin1String(Constants::ANDROIDQT)) + return; + env.set(QLatin1String("ANDROID_NDK_PLATFORM"), + AndroidConfigurations::instance().bestMatch(AndroidManager::targetSDK(qt4pro->activeTarget()))); + +} + QString AndroidQtVersion::description() const { //: Qt Version is meant for Android diff --git a/src/plugins/android/androidqtversion.h b/src/plugins/android/androidqtversion.h index d6b6dd55d53..2477e87bce9 100644 --- a/src/plugins/android/androidqtversion.h +++ b/src/plugins/android/androidqtversion.h @@ -52,6 +52,8 @@ public: QList detectQtAbis() const; + void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const; + Core::FeatureSet availableFeatures() const; QString platformName() const; QString platformDisplayName() const; diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index ecc83bb4074..1ded5738355 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -30,15 +30,16 @@ #include "androidtoolchain.h" #include "androidconstants.h" #include "androidconfigurations.h" -#include "androidmanager.h" #include "androidqtversion.h" + +#include +#include + #include #include #include -#include #include -#include #include #include @@ -52,7 +53,6 @@ namespace Android { namespace Internal { using namespace ProjectExplorer; -using namespace Qt4ProjectManager; using namespace Utils; static const char ANDROID_QT_VERSION_KEY[] = "Qt4ProjectManager.Android.QtVersion"; @@ -92,11 +92,6 @@ void AndroidToolChain::addToEnvironment(Environment &env) const // TODO this vars should be configurable in projects -> build tab // TODO invalidate all .pro files !!! - Qt4Project *qt4pro = qobject_cast(ProjectExplorerPlugin::instance()->currentProject()); - if (!qt4pro || !qt4pro->activeTarget() - || QtSupport::QtKitInformation::qtVersion(qt4pro->activeTarget()->kit())->type() != QLatin1String(Constants::ANDROIDQT)) - return; - QString ndkHost; switch (HostOsInfo::hostOs()) { case HostOsInfo::HostOsLinux: @@ -111,15 +106,10 @@ void AndroidToolChain::addToEnvironment(Environment &env) const default: break; } - - // this env vars are used by qmake mkspecs to generate makefiles (check QTDIR/mkspecs/android-g++/qmake.conf for more info) env.set(QLatin1String("ANDROID_NDK_HOST"), ndkHost); - env.set(QLatin1String("ANDROID_NDK_ROOT"), AndroidConfigurations::instance().config().ndkLocation.toUserOutput()); env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_PREFIX"), AndroidConfigurations::toolchainPrefix(targetAbi().architecture())); env.set(QLatin1String("ANDROID_NDK_TOOLS_PREFIX"), AndroidConfigurations::toolsPrefix(targetAbi().architecture())); env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_VERSION"), AndroidConfigurations::instance().config().ndkToolchainVersion); - env.set(QLatin1String("ANDROID_NDK_PLATFORM"), - AndroidConfigurations::instance().bestMatch(AndroidManager::targetSDK(qt4pro->activeTarget()))); } bool AndroidToolChain::operator ==(const ToolChain &tc) const diff --git a/src/plugins/android/androidtoolchain.h b/src/plugins/android/androidtoolchain.h index 7a25768f87e..8e170a9efd1 100644 --- a/src/plugins/android/androidtoolchain.h +++ b/src/plugins/android/androidtoolchain.h @@ -55,7 +55,7 @@ public: QVariantMap toMap() const; bool fromMap(const QVariantMap &data); QList suggestedMkspecList() const; - QString makeCommand(const Utils::Environment &env) const; + QString makeCommand(const Utils::Environment &environment) const; void setQtVersionId(int); int qtVersionId() const;