forked from qt-creator/qt-creator
the rationale is that postprocessing which is done by the generators (in some cases right at the point of emitting code to the makefile) should be abstracted inside the "medium-level" class which also does the path resolution done by the generators. along the way we also make minor fixes to the processing: - we pay attention to CONFIG+=no_include_pwd - we add the build dir as well when shadow building Change-Id: Ib389942fdc0470e05c1aa49e3615b6ac00241662 Reviewed-by: Daniel Teske <daniel.teske@theqtcompany.com>
105 lines
3.5 KiB
C++
105 lines
3.5 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
|
|
** Contact: http://www.qt-project.org/legal
|
|
**
|
|
** This file is part of Qt Creator.
|
|
**
|
|
** 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://www.qt.io/licensing. For further information
|
|
** use the contact form at http://www.qt.io/contact-us.
|
|
**
|
|
** GNU Lesser General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU Lesser
|
|
** General Public License version 2.1 or version 3 as published by the Free
|
|
** Software Foundation and appearing in the file LICENSE.LGPLv21 and
|
|
** LICENSE.LGPLv3 included in the packaging of this file. Please review the
|
|
** following information to ensure the GNU Lesser General Public License
|
|
** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
|
|
** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
|
|
**
|
|
** 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.
|
|
**
|
|
****************************************************************************/
|
|
|
|
#ifndef PROFILEEVALUATOR_H
|
|
#define PROFILEEVALUATOR_H
|
|
|
|
#include "qmake_global.h"
|
|
#include "qmakeglobals.h"
|
|
#include "qmakeevaluator.h"
|
|
#include "proitems.h"
|
|
|
|
#include <QHash>
|
|
#include <QStringList>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
class QMakeVfs;
|
|
class QMakeParser;
|
|
class QMakeEvaluator;
|
|
class QMakeHandler;
|
|
|
|
class QMAKE_EXPORT ProFileGlobals : public QMakeGlobals
|
|
{
|
|
public:
|
|
QString sysroot;
|
|
};
|
|
|
|
class QMAKE_EXPORT ProFileEvaluator
|
|
{
|
|
public:
|
|
enum TemplateType {
|
|
TT_Unknown = 0,
|
|
TT_Application,
|
|
TT_Library,
|
|
TT_Script,
|
|
TT_Aux,
|
|
TT_Subdirs
|
|
};
|
|
|
|
// Call this from a concurrency-free context
|
|
static void initialize();
|
|
|
|
ProFileEvaluator(ProFileGlobals *option, QMakeParser *parser, QMakeVfs *vfs,
|
|
QMakeHandler *handler);
|
|
~ProFileEvaluator();
|
|
|
|
ProFileEvaluator::TemplateType templateType() const;
|
|
#ifdef PROEVALUATOR_CUMULATIVE
|
|
void setCumulative(bool on); // Default is false
|
|
#endif
|
|
void setExtraVars(const QHash<QString, QStringList> &extraVars);
|
|
void setExtraConfigs(const QStringList &extraConfigs);
|
|
void setOutputDir(const QString &dir); // Default is empty
|
|
|
|
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;
|
|
QStringList values(const QString &variableName) const;
|
|
QStringList values(const QString &variableName, const ProFile *pro) const;
|
|
QStringList absolutePathValues(const QString &variable, const QString &baseDirectory) const;
|
|
QStringList absoluteFileValues(
|
|
const QString &variable, const QString &baseDirectory, const QStringList &searchDirs,
|
|
const ProFile *pro) const;
|
|
QString propertyValue(const QString &val) const;
|
|
|
|
private:
|
|
QString sysrootify(const QString &path, const QString &baseDir) const;
|
|
|
|
QMakeEvaluator *d;
|
|
};
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // PROFILEEVALUATOR_H
|