0eb4dcad89
The group parameter is only used when cross-compiling, mark it as unused otherwise. This is noticeable in the cmake branch because there we build qmake with cmake and apply the same warning flags, as opposed to the bootstrapped qmake build when using ... qmake. The cache file parameter in qmake is unused and the mustEnsureWritability is only used on Windows. Change-Id: I08655d5150f5a967c2340ee7678bad3a4d69914f Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
121 lines
3.8 KiB
C++
121 lines
3.8 KiB
C++
/****************************************************************************
|
|
**
|
|
** Copyright (C) 2016 The Qt Company Ltd.
|
|
** Contact: https://www.qt.io/licensing/
|
|
**
|
|
** This file is part of the qmake application of the Qt Toolkit.
|
|
**
|
|
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
|
|
** 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 The Qt Company. For licensing terms
|
|
** and conditions see https://www.qt.io/terms-conditions. For further
|
|
** information use the contact form at https://www.qt.io/contact-us.
|
|
**
|
|
** GNU General Public License Usage
|
|
** Alternatively, this file may be used under the terms of the GNU
|
|
** General Public License version 3 as published by the Free Software
|
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
|
** included in the packaging of this file. Please review the following
|
|
** information to ensure the GNU General Public License requirements will
|
|
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
|
**
|
|
** $QT_END_LICENSE$
|
|
**
|
|
****************************************************************************/
|
|
|
|
#ifndef MAKEFILEDEPS_H
|
|
#define MAKEFILEDEPS_H
|
|
|
|
#include <proitems.h>
|
|
|
|
#include <qstringlist.h>
|
|
#include <qfileinfo.h>
|
|
#include <qvector.h>
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
struct SourceFile;
|
|
struct SourceDependChildren;
|
|
class SourceFiles;
|
|
|
|
class QMakeLocalFileName
|
|
{
|
|
QString real_name;
|
|
mutable QString local_name;
|
|
public:
|
|
QMakeLocalFileName() = default;
|
|
QMakeLocalFileName(const QString &);
|
|
bool isNull() const { return real_name.isNull(); }
|
|
inline const QString &real() const { return real_name; }
|
|
const QString &local() const;
|
|
|
|
bool operator==(const QMakeLocalFileName &other) const {
|
|
return (this->real_name == other.real_name);
|
|
}
|
|
bool operator!=(const QMakeLocalFileName &other) const {
|
|
return !(*this == other);
|
|
}
|
|
};
|
|
|
|
class QMakeSourceFileInfo
|
|
{
|
|
private:
|
|
//quick project lookups
|
|
SourceFiles *files, *includes;
|
|
bool files_changed;
|
|
QVector<QMakeLocalFileName> depdirs;
|
|
QStringList systemIncludes;
|
|
|
|
//sleezy buffer code
|
|
char *spare_buffer;
|
|
int spare_buffer_size;
|
|
char *getBuffer(int s);
|
|
|
|
//actual guts
|
|
bool findMocs(SourceFile *);
|
|
bool findDeps(SourceFile *);
|
|
void dependTreeWalker(SourceFile *, SourceDependChildren *);
|
|
|
|
protected:
|
|
virtual QMakeLocalFileName fixPathForFile(const QMakeLocalFileName &, bool forOpen=false);
|
|
virtual QMakeLocalFileName findFileForDep(const QMakeLocalFileName &, const QMakeLocalFileName &);
|
|
virtual QFileInfo findFileInfo(const QMakeLocalFileName &);
|
|
|
|
public:
|
|
|
|
QMakeSourceFileInfo();
|
|
virtual ~QMakeSourceFileInfo();
|
|
|
|
QVector<QMakeLocalFileName> dependencyPaths() const { return depdirs; }
|
|
void setDependencyPaths(const QVector<QMakeLocalFileName> &);
|
|
|
|
enum DependencyMode { Recursive, NonRecursive };
|
|
inline void setDependencyMode(DependencyMode mode) { dep_mode = mode; }
|
|
inline DependencyMode dependencyMode() const { return dep_mode; }
|
|
|
|
void setSystemIncludes(const ProStringList &list)
|
|
{ systemIncludes = list.toQStringList(); }
|
|
|
|
enum SourceFileType { TYPE_UNKNOWN, TYPE_C, TYPE_UI, TYPE_QRC };
|
|
enum SourceFileSeek { SEEK_DEPS=0x01, SEEK_MOCS=0x02 };
|
|
void addSourceFiles(const ProStringList &, uchar seek, SourceFileType type=TYPE_C);
|
|
void addSourceFile(const QString &, uchar seek, SourceFileType type=TYPE_C);
|
|
bool containsSourceFile(const QString &, SourceFileType type=TYPE_C);
|
|
bool isSystemInclude(const QString &);
|
|
|
|
int included(const QString &file);
|
|
QStringList dependencies(const QString &file);
|
|
|
|
bool mocable(const QString &file);
|
|
|
|
private:
|
|
DependencyMode dep_mode;
|
|
};
|
|
|
|
QT_END_NAMESPACE
|
|
|
|
#endif // MAKEFILEDEPS_H
|