diff --git a/src/plugins/qt4projectmanager/qmakestep.cpp b/src/plugins/qt4projectmanager/qmakestep.cpp
index d67e3bd5e7f0c9bab18a14856cb8d2399a0b600b..dfc101c658e4cf7674560ff4d20c4185feba05cf 100644
--- a/src/plugins/qt4projectmanager/qmakestep.cpp
+++ b/src/plugins/qt4projectmanager/qmakestep.cpp
@@ -30,6 +30,7 @@
 #include "qmakestep.h"
 
 #include "projectexplorer/projectexplorerconstants.h"
+#include <proparser/profileevaluator.h>
 #include "qmakeparser.h"
 #include "qt4buildconfiguration.h"
 #include "qt4project.h"
@@ -309,9 +310,19 @@ void QMakeStep::setUserArguments(const QString &arguments)
 QStringList QMakeStep::parserArguments()
 {
     QStringList result;
-    for (Utils::QtcProcess::ConstArgIterator ait(allArguments()); ait.next(); )
-        if (ait.value().contains(QLatin1Char('=')))
-            result << ait.value();
+    for (Utils::QtcProcess::ConstArgIterator ait(allArguments()); ait.next(); ) {
+        const QString &arg = ait.value();
+        if (arg.contains(QLatin1Char('='))) {
+            result << arg;
+        } else {
+            for (int i = 0; i < ProFileOption::modeMapSize; ++i) {
+                if (QLatin1String(ProFileOption::modeMap[i].qmakeOption) == arg) {
+                    result << arg;
+                    break;
+                }
+            }
+        }
+    }
     return result;
 }
 
diff --git a/src/shared/proparser/profileevaluator.cpp b/src/shared/proparser/profileevaluator.cpp
index e4371a1a395bf3d08b17c50c89549f815a7dbb53..3b22a0a0344c242c13e5d46e6ede7e51c3ec411a 100644
--- a/src/shared/proparser/profileevaluator.cpp
+++ b/src/shared/proparser/profileevaluator.cpp
@@ -90,6 +90,18 @@ ProFileOption::ProFileOption()
 #endif
     qmakespec = QString::fromLocal8Bit(qgetenv("QMAKESPEC").data());
 
+    setHostTargetMode();
+#ifdef PROEVALUATOR_THREAD_SAFE
+    base_inProgress = false;
+#endif
+}
+
+ProFileOption::~ProFileOption()
+{
+}
+
+void ProFileOption::setHostTargetMode()
+{
 #if defined(Q_OS_WIN32)
     target_mode = TARG_WIN_MODE;
 #elif defined(Q_OS_MAC)
@@ -99,15 +111,15 @@ ProFileOption::ProFileOption()
 #else
     target_mode = TARG_UNIX_MODE;
 #endif
-
-#ifdef PROEVALUATOR_THREAD_SAFE
-    base_inProgress = false;
-#endif
 }
 
-ProFileOption::~ProFileOption()
-{
-}
+const struct ProFileOption::TargetModeMapElement ProFileOption::modeMap[] = {
+    { "-unix", TARG_UNIX_MODE },
+    { "-macx", TARG_MACX_MODE },
+    { "-win32", TARG_WIN_MODE }
+};
+const int ProFileOption::modeMapSize
+    = sizeof ProFileOption::modeMap / sizeof ProFileOption::modeMap[0];
 
 ///////////////////////////////////////////////////////////////////////
 //
@@ -3224,6 +3236,19 @@ void ProFileEvaluator::setOutputDir(const QString &dir)
 void ProFileEvaluator::setCommandLineArguments(const QStringList &args)
 {
     d->m_cmdArgs = args;
+
+    d->m_option->setHostTargetMode();
+    bool targetModeSet = false;
+    for (int i = args.count() - 1; !targetModeSet && i >= 0; --i) {
+        for (int j = 0; j < ProFileOption::modeMapSize; ++j) {
+            const ProFileOption::TargetModeMapElement &mapElem = ProFileOption::modeMap[j];
+            if (args.at(i) == QLatin1String(mapElem.qmakeOption)) {
+                d->m_option->target_mode = mapElem.targetMode;
+                targetModeSet = true;
+                break;
+            }
+        }
+    }
 }
 
 QT_END_NAMESPACE
diff --git a/src/shared/proparser/profileevaluator.h b/src/shared/proparser/profileevaluator.h
index 0442e2e72a5b8ef24b4493b1ca5126b1b294536e..d02928d94f95e0d3dabffd6c4522cb42ed44605b 100644
--- a/src/shared/proparser/profileevaluator.h
+++ b/src/shared/proparser/profileevaluator.h
@@ -175,7 +175,15 @@ struct ProFileOption
     //QString pro_ext;
     //QString res_ext;
 
+    static const struct TargetModeMapElement {
+        const char * const qmakeOption;
+        const TARG_MODE targetMode;
+    } modeMap[];
+    static const int modeMapSize;
+
   private:
+    void setHostTargetMode();
+
     friend class ProFileEvaluator;
     friend class ProFileEvaluator::Private;
     QHash<ProString, ProStringList> base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf