}
}
-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);
- }
- if (!Option::mkfile::project_build_root.isEmpty())
- ret << Option::mkfile::project_build_root + concat;
- if (!Option::mkfile::project_root.isEmpty())
- ret << Option::mkfile::project_root + concat;
- ret << QLibraryInfo::location(QLibraryInfo::HostDataPath) + concat;
- ret.removeDuplicates();
- 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)
{
mkfile::project_build_root.clear();
mkfile::project_root.clear();
}
- if (!resolveSpec(&Option::mkfile::qmakespec))
- return false;
-
return true;
}
//both of these must be called..
static int init(int argc=0, char **argv=0); //parse cmdline
static void applyHostMode();
- static QStringList mkspecPaths();
static bool prepareProject(const QString &pfile);
static bool postProcessProject(QMakeProject *);
private:
static int parseCommandLine(int, char **, int=0);
- static bool resolveSpec(QString *spec);
};
inline QString fixEnvVariables(const QString &x) { return Option::fixString(x, Option::FixEnvVars); }
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);
+ }
+ if (!Option::mkfile::project_build_root.isEmpty())
+ 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;
+ ret.removeDuplicates();
+
+ return ret;
+}
+
QMakeProject::~QMakeProject()
{
if(own_prop)
}
{ // parse mkspec
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('/')))
qmakespec.truncate(qmakespec.length()-1);
QString spec = qmakespec + QLatin1String("/qmake.conf");
QT_BEGIN_NAMESPACE
+QStringList qmake_mkspec_paths(); //project.cpp
+
static const struct {
const char *name;
QLibraryInfo::LibraryLocation loc;
if (!val.isNull())
return val;
else if(v == "QMAKE_MKSPECS")
- return Option::mkspecPaths().join(Option::dirlist_sep);
+ return qmake_mkspec_paths().join(Option::dirlist_sep);
else if(v == "QMAKE_VERSION")
return qmake_version();
#ifdef QT_VERSION_STR