/****************************************************************************
**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
**
** This file is part of the qmake application of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and Digia. For licensing terms and
+** conditions see http://qt.digia.com/licensing. For further information
+** use the contact form at http://qt.digia.com/contact-us.
+**
** GNU Lesser General Public License Usage
-** This file may be used under the terms of the GNU Lesser General Public
-** License version 2.1 as published by the Free Software Foundation and
-** appearing in the file LICENSE.LGPL included in the packaging of this
-** file. Please review the following information to ensure the GNU Lesser
-** General Public License version 2.1 requirements will be met:
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
-** In addition, as a special exception, Nokia gives you certain additional
-** rights. These rights are described in the Nokia Qt LGPL Exception
+** In addition, as a special exception, Digia gives you certain additional
+** rights. These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU General
-** Public License version 3.0 as published by the Free Software Foundation
-** and appearing in the file LICENSE.GPL included in the packaging of this
-** file. Please review the following information to ensure the GNU General
-** Public License version 3.0 requirements will be met:
-** http://www.gnu.org/copyleft/gpl.html.
-**
-** Other Usage
-** Alternatively, this file may be used in accordance with the terms and
-** conditions contained in a signed written agreement between you and Nokia.
-**
-**
-**
-**
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
#ifndef OPTION_H
#define OPTION_H
-#include "project.h"
+#include <qmakeglobals.h>
+#include <qmakeparser.h>
+#include <qmakeevaluator.h>
+
#include <qstring.h>
#include <qstringlist.h>
#include <qfile.h>
QT_BEGIN_NAMESPACE
-#define QMAKE_VERSION_MAJOR 2
-#define QMAKE_VERSION_MINOR 1
-#define QMAKE_VERSION_PATCH 0
-const char *qmake_version();
+#define QMAKE_VERSION_STR "3.0"
QString qmake_getpwd();
bool qmake_setpwd(const QString &p);
};
void warn_msg(QMakeWarn t, const char *fmt, ...);
+class QMakeProject;
+
+class EvalHandler : public QMakeHandler {
+public:
+ void message(int type, const QString &msg, const QString &fileName, int lineNo);
+
+ void fileMessage(const QString &msg);
+
+ void aboutToEval(ProFile *, ProFile *, EvalFileType);
+ void doneWithEval(ProFile *);
+};
+
struct Option
{
+ static EvalHandler evalHandler;
+
+ static QMakeGlobals *globals;
+ static ProFileCache *proFileCache;
+ static QMakeParser *parser;
+
//simply global convenience
static QString libtool_ext;
static QString pkgcfg_ext;
static QStringList h_ext;
static QStringList cpp_ext;
static QStringList c_ext;
- static QString h_moc_ext;
static QString cpp_moc_ext;
static QString obj_ext;
static QString lex_ext;
static QString yacc_ext;
static QString h_moc_mod;
- static QString cpp_moc_mod;
static QString lex_mod;
static QString yacc_mod;
static QString dir_sep;
- static QString dirlist_sep;
- static QString sysenv_mod;
static QString pro_ext;
static QString res_ext;
static char field_sep;
//both of these must be called..
static int init(int argc=0, char **argv=0); //parse cmdline
- static void applyHostMode();
static void prepareProject(const QString &pfile);
static bool postProcessProject(QMakeProject *);
static QMAKE_MODE qmake_mode;
//all modes
- static QString qmake_abslocation;
+ static QStringList qmake_args;
static QFile output;
static QString output_dir;
static int debug_level;
static int warn_level;
- enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO };
- static QMAKE_RECURSIVE recursive;
- static QStringList before_user_vars, after_user_vars;
- enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE };
- static HOST_MODE host_mode;
- enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE,
- TARG_INTEGRITY_MODE };
- static TARG_MODE target_mode;
- static QString user_template, user_template_prefix;
- static QStringList shellPath;
+ static bool recursive;
//QMAKE_*_PROPERTY options
struct prop {
//QMAKE_GENERATE_MAKEFILE options
struct mkfile {
- static QString qmakespec;
- static QString xqmakespec;
- static bool do_cache;
static bool do_deps;
static bool do_mocs;
static bool do_dep_heuristics;
static bool do_preprocess;
static bool do_stub_makefile;
- static QString source_root;
- static QString build_root;
- static QString cachefile;
static int cachefile_depth;
static QStringList project_files;
- static QString qmakespec_commandline;
- static QString xqmakespec_commandline;
};
private:
- static int parseCommandLine(int, char **, int=0);
+ static int parseCommandLine(QStringList &args);
};
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }
-inline QStringList splitPathList(const QString &paths) { return paths.isEmpty() ? QStringList() : paths.split(Option::dirlist_sep); }
+inline QStringList splitPathList(const QString &paths) { return paths.isEmpty() ? QStringList() : paths.split(Option::globals->dirlist_sep); }
QT_END_NAMESPACE