#include "qmakestep.h"
#include "projectexplorer/projectexplorerconstants.h"
+#include <proparser/profileevaluator.h>
#include "qmakeparser.h"
#include "qt4buildconfiguration.h"
#include "qt4project.h"
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;
}
#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)
#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];
///////////////////////////////////////////////////////////////////////
//
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
//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