summaryrefslogtreecommitdiff
path: root/src/shared/proparser/qmakeglobals.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/proparser/qmakeglobals.h')
-rw-r--r--src/shared/proparser/qmakeglobals.h63
1 files changed, 47 insertions, 16 deletions
diff --git a/src/shared/proparser/qmakeglobals.h b/src/shared/proparser/qmakeglobals.h
index 2211274e08..18ae12e687 100644
--- a/src/shared/proparser/qmakeglobals.h
+++ b/src/shared/proparser/qmakeglobals.h
@@ -33,14 +33,18 @@
#include "qmake_global.h"
#include "proitems.h"
-#include <QHash>
-#include <QStringList>
+#ifdef QT_BUILD_QMAKE
+# include <property.h>
+#endif
+
+#include <qhash.h>
+#include <qstringlist.h>
#ifndef QT_BOOTSTRAPPED
-# include <QProcess>
+# include <qprocess.h>
#endif
#ifdef PROEVALUATOR_THREAD_SAFE
-# include <QMutex>
-# include <QWaitCondition>
+# include <qmutex.h>
+# include <qwaitcondition.h>
#endif
QT_BEGIN_NAMESPACE
@@ -76,6 +80,15 @@ public:
QMakeEvaluator *evaluator;
};
+class QMAKE_EXPORT QMakeCmdLineParserState
+{
+public:
+ QMakeCmdLineParserState(const QString &_pwd) : pwd(_pwd), after(false) {}
+ QString pwd;
+ QStringList precmds, preconfigs, postcmds, postconfigs;
+ bool after;
+};
+
class QMAKE_EXPORT QMakeGlobals
{
public:
@@ -85,37 +98,55 @@ public:
bool do_cache;
QString dir_sep;
QString dirlist_sep;
- QString qmakespec;
- QString xqmakespec;
QString cachefile;
-#ifndef QT_BOOTSTRAPPED
+#ifdef PROEVALUATOR_SETENV
QProcessEnvironment environment;
#endif
- QString sysroot;
QString qmake_abslocation;
+
+ QString qmakespec, xqmakespec;
QString user_template, user_template_prefix;
+ QString precmds, postcmds;
- // -nocache, -cache, -spec, QMAKESPEC
- // -set persistent value
- void setCommandLineArguments(const QStringList &args);
+#ifdef PROEVALUATOR_DEBUG
+ int debugLevel;
+#endif
+
+ enum ArgumentReturn { ArgumentUnknown, ArgumentMalformed, ArgumentsOk };
+ ArgumentReturn addCommandLineArguments(QMakeCmdLineParserState &state,
+ QStringList &args, int *pos);
+ void commitCommandLineArguments(QMakeCmdLineParserState &state);
+ void setCommandLineArguments(const QString &pwd, const QStringList &args);
+ void useEnvironment();
void setDirectories(const QString &input_dir, const QString &output_dir);
-#ifdef PROEVALUATOR_INIT_PROPS
- bool initProperties();
+#ifdef QT_BUILD_QMAKE
+ void setQMakeProperty(QMakeProperty *prop) { property = prop; }
+ ProString propertyValue(const ProKey &name) const { return property->value(name); }
#else
+# ifdef PROEVALUATOR_INIT_PROPS
+ bool initProperties();
+# else
void setProperties(const QHash<QString, QString> &props);
-#endif
+# endif
ProString propertyValue(const ProKey &name) const { return properties.value(name); }
+#endif
QString expandEnvVars(const QString &str) const;
+ QString shadowedPath(const QString &fileName) const;
private:
QString getEnv(const QString &) const;
QStringList getPathListEnv(const QString &var) const;
+ QString cleanSpec(QMakeCmdLineParserState &state, const QString &spec);
+
QString source_root, build_root;
- QString precmds, postcmds;
+#ifdef QT_BUILD_QMAKE
+ QMakeProperty *property;
+#else
QHash<ProKey, ProString> properties;
+#endif
#ifdef PROEVALUATOR_THREAD_SAFE
QMutex mutex;