summaryrefslogtreecommitdiff
path: root/src/linguist/shared/profileevaluator.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/linguist/shared/profileevaluator.h')
-rw-r--r--src/linguist/shared/profileevaluator.h155
1 files changed, 18 insertions, 137 deletions
diff --git a/src/linguist/shared/profileevaluator.h b/src/linguist/shared/profileevaluator.h
index 2b92603f7..2de40a78f 100644
--- a/src/linguist/shared/profileevaluator.h
+++ b/src/linguist/shared/profileevaluator.h
@@ -42,72 +42,29 @@
#ifndef PROFILEEVALUATOR_H
#define PROFILEEVALUATOR_H
-#include "proparser_global.h"
+#include "qmake_global.h"
+#include "qmakeglobals.h"
+#include "qmakeevaluator.h"
#include "proitems.h"
-#include <QtCore/QHash>
-#include <QtCore/QStringList>
-#ifndef QT_BOOTSTRAPPED
-# include <QtCore/QProcess>
-#endif
-#ifdef PROEVALUATOR_THREAD_SAFE
-# include <QtCore/QMutex>
-# include <QtCore/QWaitCondition>
-#endif
+#include <QHash>
+#include <QStringList>
QT_BEGIN_NAMESPACE
-struct ProFileOption;
-class ProFileParser;
+class QMakeParser;
+class QMakeEvaluator;
+class QMakeHandler;
-class PROPARSER_EXPORT ProFileEvaluatorHandler
+class QMAKE_EXPORT ProFileGlobals : public QMakeGlobals
{
public:
- // qmake/project configuration error
- virtual void configError(const QString &msg) = 0;
- // Some error during evaluation
- virtual void evalError(const QString &filename, int lineNo, const QString &msg) = 0;
- // error() and message() from .pro file
- virtual void fileMessage(const QString &msg) = 0;
-
- enum EvalFileType { EvalProjectFile, EvalIncludeFile, EvalConfigFile, EvalFeatureFile, EvalAuxFile };
- virtual void aboutToEval(ProFile *parent, ProFile *proFile, EvalFileType type) = 0;
- virtual void doneWithEval(ProFile *parent) = 0;
+ QString sysroot;
};
-
-class PROPARSER_EXPORT ProFileEvaluator
+class QMAKE_EXPORT ProFileEvaluator
{
- class Private;
-
public:
- class FunctionDef {
- public:
- FunctionDef(ProFile *pro, int offset) : m_pro(pro), m_offset(offset) { m_pro->ref(); }
- FunctionDef(const FunctionDef &o) : m_pro(o.m_pro), m_offset(o.m_offset) { m_pro->ref(); }
- ~FunctionDef() { m_pro->deref(); }
- FunctionDef &operator=(const FunctionDef &o)
- {
- if (this != &o) {
- m_pro->deref();
- m_pro = o.m_pro;
- m_pro->ref();
- m_offset = o.m_offset;
- }
- return *this;
- }
- ProFile *pro() const { return m_pro; }
- const ushort *tokPtr() const { return m_pro->tokPtr() + m_offset; }
- private:
- ProFile *m_pro;
- int m_offset;
- };
-
- struct FunctionDefs {
- QHash<ProString, FunctionDef> testFunctions;
- QHash<ProString, FunctionDef> replaceFunctions;
- };
-
enum TemplateType {
TT_Unknown = 0,
TT_Application,
@@ -120,23 +77,18 @@ public:
// Call this from a concurrency-free context
static void initialize();
- ProFileEvaluator(ProFileOption *option, ProFileParser *parser, ProFileEvaluatorHandler *handler);
+ ProFileEvaluator(ProFileGlobals *option, QMakeParser *parser, QMakeHandler *handler);
~ProFileEvaluator();
ProFileEvaluator::TemplateType templateType() const;
#ifdef PROEVALUATOR_CUMULATIVE
- void setCumulative(bool on); // Default is true!
+ void setCumulative(bool on); // Default is false
#endif
void setOutputDir(const QString &dir); // Default is empty
- enum LoadFlag {
- LoadProOnly = 0,
- LoadPreFiles = 1,
- LoadPostFiles = 2,
- LoadAll = LoadPreFiles|LoadPostFiles
- };
- Q_DECLARE_FLAGS(LoadFlags, LoadFlag)
- bool accept(ProFile *pro, LoadFlags flags = LoadAll);
+ bool loadNamedSpec(const QString &specDir, bool hostSpec);
+
+ bool accept(ProFile *pro, QMakeEvaluator::LoadFlags flags = QMakeEvaluator::LoadAll);
bool contains(const QString &variableName) const;
QString value(const QString &variableName) const;
@@ -149,82 +101,11 @@ public:
QString propertyValue(const QString &val) const;
private:
- Private *d;
+ QString sysrootify(const QString &path, const QString &baseDir) const;
- friend struct ProFileOption;
+ QMakeEvaluator *d;
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(ProFileEvaluator::LoadFlags)
-
-// This struct is from qmake, but we are not using everything.
-struct PROPARSER_EXPORT ProFileOption
-{
- ProFileOption();
- ~ProFileOption();
-
- //simply global convenience
- //QString libtool_ext;
- //QString pkgcfg_ext;
- //QString prf_ext;
- //QString prl_ext;
- //QString ui_ext;
- //QStringList h_ext;
- //QStringList cpp_ext;
- //QString h_moc_ext;
- //QString cpp_moc_ext;
- //QString obj_ext;
- //QString lex_ext;
- //QString yacc_ext;
- //QString h_moc_mod;
- //QString cpp_moc_mod;
- //QString lex_mod;
- //QString yacc_mod;
- QString dir_sep;
- QString dirlist_sep;
- QString qmakespec;
- QString cachefile;
- QHash<QString, QString> properties;
-#ifndef QT_BOOTSTRAPPED
- QProcessEnvironment environment;
-#endif
- QString sysroot;
-
- //QString pro_ext;
- //QString res_ext;
-
- // -nocache, -cache, -spec, QMAKESPEC
- // -set persistent value
- void setCommandLineArguments(const QStringList &args);
-#ifdef PROEVALUATOR_INIT_PROPS
- bool initProperties(const QString &qmake);
-#endif
-
- private:
- friend class ProFileEvaluator;
- friend class ProFileEvaluator::Private;
-
- void applyHostMode();
- QString getEnv(const QString &) const;
-
- QHash<ProString, ProStringList> base_valuemap; // Cached results of qmake.conf, .qmake.cache & default_pre.prf
- ProFileEvaluator::FunctionDefs base_functions;
- QStringList feature_roots;
- QString qmakespec_name;
- QString precmds, postcmds;
- enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE };
- HOST_MODE host_mode;
- enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE,
- TARG_SYMBIAN_MODE };
- TARG_MODE target_mode;
-#ifdef PROEVALUATOR_THREAD_SAFE
- QMutex mutex;
- QWaitCondition cond;
- bool base_inProgress;
-#endif
-};
-
-Q_DECLARE_TYPEINFO(ProFileEvaluator::FunctionDef, Q_MOVABLE_TYPE);
-
QT_END_NAMESPACE
#endif // PROFILEEVALUATOR_H