aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android/androidpackageinstallationstep.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/androidpackageinstallationstep.cpp')
-rw-r--r--src/plugins/android/androidpackageinstallationstep.cpp99
1 files changed, 63 insertions, 36 deletions
diff --git a/src/plugins/android/androidpackageinstallationstep.cpp b/src/plugins/android/androidpackageinstallationstep.cpp
index 9017513974..2d4ba1e338 100644
--- a/src/plugins/android/androidpackageinstallationstep.cpp
+++ b/src/plugins/android/androidpackageinstallationstep.cpp
@@ -28,13 +28,14 @@
#include "androidconstants.h"
#include "androidmanager.h"
-#include <projectexplorer/buildsteplist.h>
-#include <projectexplorer/target.h>
+#include <projectexplorer/abstractprocessstep.h>
#include <projectexplorer/buildconfiguration.h>
+#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/gnumakeparser.h>
#include <projectexplorer/kitinformation.h>
#include <projectexplorer/processparameters.h>
#include <projectexplorer/projectexplorerconstants.h>
+#include <projectexplorer/target.h>
#include <projectexplorer/toolchain.h>
#include <utils/hostosinfo.h>
@@ -44,11 +45,44 @@
using namespace ProjectExplorer;
using namespace Utils;
-using namespace Android::Internal;
namespace Android {
+namespace Internal {
+
+class AndroidPackageInstallationStep final : public AbstractProcessStep
+{
+ Q_DECLARE_TR_FUNCTIONS(Android::AndroidPackageInstallationStep)
+
+public:
+ AndroidPackageInstallationStep(BuildStepList *bsl, Utils::Id id);
+
+ BuildStepConfigWidget *createConfigWidget() final;
-AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bsl, Core::Id id)
+ QString nativeAndroidBuildPath() const;
+
+private:
+ bool init() final;
+ void setupOutputFormatter(Utils::OutputFormatter *formatter) override;
+ void doRun() final;
+
+ QStringList m_androidDirsToClean;
+};
+
+class AndroidPackageInstallationStepWidget final : public BuildStepConfigWidget
+{
+ Q_DECLARE_TR_FUNCTIONS(Android::AndroidPackageInstallationStepWidget)
+
+public:
+ AndroidPackageInstallationStepWidget(BuildStep *step)
+ : BuildStepConfigWidget(step)
+ {
+ const QString cmd = static_cast<AndroidPackageInstallationStep *>(step)
+ ->nativeAndroidBuildPath();
+ setSummaryText(tr("<b>Make install:</b> Copy App Files to %1").arg(cmd));
+ }
+};
+
+AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bsl, Utils::Id id)
: AbstractProcessStep(bsl, id)
{
const QString name = tr("Copy application data");
@@ -60,35 +94,24 @@ AndroidPackageInstallationStep::AndroidPackageInstallationStep(BuildStepList *bs
bool AndroidPackageInstallationStep::init()
{
- BuildConfiguration *bc = buildConfiguration();
- QString dirPath = bc->buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY).toString();
- if (HostOsInfo::isWindowsHost())
- if (bc->environment().searchInPath("sh.exe").isEmpty())
- dirPath = QDir::toNativeSeparators(dirPath);
-
- ToolChain *tc = ToolChainKitAspect::toolChain(target()->kit(),
- ProjectExplorer::Constants::CXX_LANGUAGE_ID);
+ ToolChain *tc = ToolChainKitAspect::cxxToolChain(target()->kit());
QTC_ASSERT(tc, return false);
- CommandLine cmd{tc->makeCommand(bc->environment())};
+ QString dirPath = nativeAndroidBuildPath();
const QString innerQuoted = QtcProcess::quoteArg(dirPath);
const QString outerQuoted = QtcProcess::quoteArg("INSTALL_ROOT=" + innerQuoted);
+
+ CommandLine cmd{tc->makeCommand(buildEnvironment())};
cmd.addArgs(outerQuoted + " install", CommandLine::Raw);
ProcessParameters *pp = processParameters();
- pp->setMacroExpander(bc->macroExpander());
- pp->setWorkingDirectory(bc->buildDirectory());
- Environment env = bc->environment();
+ pp->setMacroExpander(macroExpander());
+ pp->setWorkingDirectory(buildDirectory());
+ Environment env = buildEnvironment();
Environment::setupEnglishOutput(&env);
pp->setEnvironment(env);
pp->setCommandLine(cmd);
- setOutputParser(new GnuMakeParser());
- IOutputParser *parser = target()->kit()->createOutputParser();
- if (parser)
- appendOutputParser(parser);
- outputParser()->setWorkingDirectory(pp->effectiveWorkingDirectory());
-
m_androidDirsToClean.clear();
// don't remove gradle's cache, it takes ages to rebuild it.
m_androidDirsToClean << dirPath + "/assets";
@@ -97,6 +120,24 @@ bool AndroidPackageInstallationStep::init()
return AbstractProcessStep::init();
}
+QString AndroidPackageInstallationStep::nativeAndroidBuildPath() const
+{
+ QString buildPath = buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY).toString();
+ if (HostOsInfo::isWindowsHost())
+ if (buildEnvironment().searchInPath("sh.exe").isEmpty())
+ buildPath = QDir::toNativeSeparators(buildPath);
+
+ return buildPath;
+}
+
+void AndroidPackageInstallationStep::setupOutputFormatter(OutputFormatter *formatter)
+{
+ formatter->addLineParser(new GnuMakeParser);
+ formatter->addLineParsers(target()->kit()->createOutputParsers());
+ formatter->addSearchDir(processParameters()->effectiveWorkingDirectory());
+ AbstractProcessStep::setupOutputFormatter(formatter);
+}
+
void AndroidPackageInstallationStep::doRun()
{
QString error;
@@ -119,20 +160,6 @@ BuildStepConfigWidget *AndroidPackageInstallationStep::createConfigWidget()
return new AndroidPackageInstallationStepWidget(this);
}
-
-//
-// AndroidPackageInstallationStepWidget
-//
-
-namespace Internal {
-
-AndroidPackageInstallationStepWidget::AndroidPackageInstallationStepWidget(AndroidPackageInstallationStep *step)
- : BuildStepConfigWidget(step)
-{
- setDisplayName(tr("Make install"));
- setSummaryText("<b>" + tr("Make install") + "</b>");
-}
-
//
// AndroidPackageInstallationStepFactory
//