move finding the makespec to Option
this is a one-time operation which depends only on the invocation, so this new home is much more appropriate. Change-Id: I07c66d95a9ae01a664cec17564995311fb78ec9b Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
This commit is contained in:
parent
123eb803ef
commit
74a6669fa7
@ -577,6 +577,47 @@ void Option::applyHostMode()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList Option::mkspecPaths()
|
||||||
|
{
|
||||||
|
QStringList ret;
|
||||||
|
const QString concat = QLatin1String("/mkspecs");
|
||||||
|
|
||||||
|
QByteArray qmakepath = qgetenv("QMAKEPATH");
|
||||||
|
if (!qmakepath.isEmpty()) {
|
||||||
|
const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath));
|
||||||
|
for (QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it)
|
||||||
|
ret << ((*it) + concat);
|
||||||
|
}
|
||||||
|
ret << Option::mkfile::project_build_root + concat;
|
||||||
|
if (!Option::mkfile::project_root.isEmpty())
|
||||||
|
ret << Option::mkfile::project_root + concat;
|
||||||
|
ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Option::resolveSpec(QString *spec)
|
||||||
|
{
|
||||||
|
QString qmakespec = fixEnvVariables(*spec);
|
||||||
|
if (qmakespec.isEmpty())
|
||||||
|
qmakespec = "default";
|
||||||
|
if (QDir::isRelativePath(qmakespec)) {
|
||||||
|
QStringList mkspec_roots = mkspecPaths();
|
||||||
|
debug_msg(2, "Looking for mkspec %s in (%s)", qmakespec.toLatin1().constData(),
|
||||||
|
mkspec_roots.join("::").toLatin1().constData());
|
||||||
|
for (QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
|
||||||
|
QString mkspec = (*it) + QLatin1Char('/') + qmakespec;
|
||||||
|
if (QFile::exists(mkspec)) {
|
||||||
|
*spec = mkspec;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fprintf(stderr, "Could not find mkspecs for your QMAKESPEC(%s) after trying:\n\t%s\n",
|
||||||
|
qmakespec.toLatin1().constData(), mkspec_roots.join("\n\t").toLatin1().constData());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool Option::prepareProject(const QString &pfile)
|
bool Option::prepareProject(const QString &pfile)
|
||||||
{
|
{
|
||||||
mkfile::project_build_root.clear();
|
mkfile::project_build_root.clear();
|
||||||
@ -630,6 +671,9 @@ bool Option::prepareProject(const QString &pfile)
|
|||||||
mkfile::project_root.clear();
|
mkfile::project_root.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!resolveSpec(&Option::mkfile::qmakespec))
|
||||||
|
return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,6 +108,7 @@ struct Option
|
|||||||
//both of these must be called..
|
//both of these must be called..
|
||||||
static int init(int argc=0, char **argv=0); //parse cmdline
|
static int init(int argc=0, char **argv=0); //parse cmdline
|
||||||
static void applyHostMode();
|
static void applyHostMode();
|
||||||
|
static QStringList mkspecPaths();
|
||||||
static bool prepareProject(const QString &pfile);
|
static bool prepareProject(const QString &pfile);
|
||||||
static bool postProcessProject(QMakeProject *);
|
static bool postProcessProject(QMakeProject *);
|
||||||
|
|
||||||
@ -212,6 +213,7 @@ struct Option
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
static int parseCommandLine(int, char **, int=0);
|
static int parseCommandLine(int, char **, int=0);
|
||||||
|
static bool resolveSpec(QString *spec);
|
||||||
};
|
};
|
||||||
|
|
||||||
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }
|
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }
|
||||||
|
@ -596,24 +596,6 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
|
|||||||
return feature_roots;
|
return feature_roots;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList qmake_mkspec_paths()
|
|
||||||
{
|
|
||||||
QStringList ret;
|
|
||||||
const QString concat = QLatin1String("/mkspecs");
|
|
||||||
QByteArray qmakepath = qgetenv("QMAKEPATH");
|
|
||||||
if (!qmakepath.isEmpty()) {
|
|
||||||
const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath));
|
|
||||||
for(QStringList::ConstIterator it = lst.begin(); it != lst.end(); ++it)
|
|
||||||
ret << ((*it) + concat);
|
|
||||||
}
|
|
||||||
ret << Option::mkfile::project_build_root + concat;
|
|
||||||
if (!Option::mkfile::project_root.isEmpty())
|
|
||||||
ret << Option::mkfile::project_root + concat;
|
|
||||||
ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat;
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
QMakeProject::~QMakeProject()
|
QMakeProject::~QMakeProject()
|
||||||
{
|
{
|
||||||
if(own_prop)
|
if(own_prop)
|
||||||
@ -1290,30 +1272,7 @@ QMakeProject::read(uchar cmd)
|
|||||||
Option::output_dir.mid(Option::mkfile::project_build_root.length()).count('/');
|
Option::output_dir.mid(Option::mkfile::project_build_root.length()).count('/');
|
||||||
}
|
}
|
||||||
if (cmd & ReadSetup) { // parse mkspec
|
if (cmd & ReadSetup) { // parse mkspec
|
||||||
QString qmakespec = fixEnvVariables(Option::mkfile::qmakespec);
|
QString qmakespec = Option::mkfile::qmakespec;
|
||||||
if (qmakespec.isEmpty())
|
|
||||||
qmakespec = "default";
|
|
||||||
if(QDir::isRelativePath(qmakespec)) {
|
|
||||||
QStringList mkspec_roots = qmake_mkspec_paths();
|
|
||||||
debug_msg(2, "Looking for mkspec %s in (%s)", qmakespec.toLatin1().constData(),
|
|
||||||
mkspec_roots.join("::").toLatin1().constData());
|
|
||||||
bool found_mkspec = false;
|
|
||||||
for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
|
|
||||||
QString mkspec = (*it) + QLatin1Char('/') + qmakespec;
|
|
||||||
if(QFile::exists(mkspec)) {
|
|
||||||
found_mkspec = true;
|
|
||||||
Option::mkfile::qmakespec = qmakespec = mkspec;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!found_mkspec) {
|
|
||||||
fprintf(stderr, "Could not find mkspecs for your QMAKESPEC(%s) after trying:\n\t%s\n",
|
|
||||||
qmakespec.toLatin1().constData(), mkspec_roots.join("\n\t").toLatin1().constData());
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// parse qmake configuration
|
|
||||||
while(qmakespec.endsWith(QLatin1Char('/')))
|
while(qmakespec.endsWith(QLatin1Char('/')))
|
||||||
qmakespec.truncate(qmakespec.length()-1);
|
qmakespec.truncate(qmakespec.length()-1);
|
||||||
QString spec = qmakespec + QLatin1String("/qmake.conf");
|
QString spec = qmakespec + QLatin1String("/qmake.conf");
|
||||||
|
@ -49,8 +49,6 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
QStringList qmake_mkspec_paths(); //project.cpp
|
|
||||||
|
|
||||||
QMakeProperty::QMakeProperty() : settings(0)
|
QMakeProperty::QMakeProperty() : settings(0)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -107,7 +105,7 @@ QMakeProperty::value(QString v, bool just_check)
|
|||||||
else if(v == "QT_INSTALL_DEMOS")
|
else if(v == "QT_INSTALL_DEMOS")
|
||||||
return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
|
return QLibraryInfo::location(QLibraryInfo::ExamplesPath);
|
||||||
else if(v == "QMAKE_MKSPECS")
|
else if(v == "QMAKE_MKSPECS")
|
||||||
return qmake_mkspec_paths().join(Option::dirlist_sep);
|
return Option::mkspecPaths().join(Option::dirlist_sep);
|
||||||
else if(v == "QMAKE_VERSION")
|
else if(v == "QMAKE_VERSION")
|
||||||
return qmake_version();
|
return qmake_version();
|
||||||
#ifdef QT_VERSION_STR
|
#ifdef QT_VERSION_STR
|
||||||
|
Loading…
x
Reference in New Issue
Block a user