Revert "move .qmake.cache search to Option"
We are now moving in the exact opposite direction.
This logically reverts commit 059200a44b
.
Some adjustments were necessary to maintain the project root stuff.
Conflicts:
qmake/main.cpp
qmake/option.cpp
qmake/option.h
qmake/project.cpp
Change-Id: Ic14fa571cbbfe9ac159f92493e49741d70a87eff
Reviewed-by: Joerg Bornemann <joerg.bornemann@nokia.com>
This commit is contained in:
parent
d8b2998dae
commit
4e9cbfc90f
@ -163,11 +163,6 @@ int runQMake(int argc, char **argv)
|
||||
fn = fn.right(fn.length() - di - 1);
|
||||
}
|
||||
|
||||
if (!Option::prepareProject(fn)) {
|
||||
exit_val = 3;
|
||||
break;
|
||||
}
|
||||
|
||||
// read project..
|
||||
if(!project.read(fn)) {
|
||||
fprintf(stderr, "Error processing project file: %s\n",
|
||||
|
@ -114,8 +114,6 @@ bool Option::mkfile::do_dep_heuristics = true;
|
||||
bool Option::mkfile::do_preprocess = false;
|
||||
bool Option::mkfile::do_stub_makefile = false;
|
||||
bool Option::mkfile::do_cache = true;
|
||||
QString Option::mkfile::project_root;
|
||||
QString Option::mkfile::project_build_root;
|
||||
QString Option::mkfile::cachefile;
|
||||
QStringList Option::mkfile::project_files;
|
||||
QString Option::mkfile::qmakespec_commandline;
|
||||
@ -583,62 +581,6 @@ void Option::applyHostMode()
|
||||
}
|
||||
}
|
||||
|
||||
bool Option::prepareProject(const QString &pfile)
|
||||
{
|
||||
mkfile::project_build_root.clear();
|
||||
if (mkfile::do_cache) {
|
||||
if (mkfile::cachefile.isEmpty()) { //find it as it has not been specified
|
||||
QDir dir(output_dir);
|
||||
while (!dir.exists(QLatin1String(".qmake.cache")))
|
||||
if (dir.isRoot() || !dir.cdUp())
|
||||
goto no_cache;
|
||||
mkfile::cachefile = dir.filePath(QLatin1String(".qmake.cache"));
|
||||
mkfile::project_build_root = dir.path();
|
||||
} else {
|
||||
QFileInfo fi(mkfile::cachefile);
|
||||
mkfile::cachefile = QDir::cleanPath(fi.absoluteFilePath());
|
||||
mkfile::project_build_root = QDir::cleanPath(fi.absolutePath());
|
||||
}
|
||||
|
||||
if (mkfile::qmakespec.isEmpty()) {
|
||||
QMakeProject cproj;
|
||||
if (!cproj.read(mkfile::cachefile, QMakeProject::ReadProFile))
|
||||
return false;
|
||||
mkfile::qmakespec = cproj.first(QLatin1String("QMAKESPEC"));
|
||||
}
|
||||
}
|
||||
no_cache:
|
||||
|
||||
QString srcpath = (pfile != "-")
|
||||
? QDir::cleanPath(QFileInfo(pfile).absolutePath()) : qmake_getpwd();
|
||||
if (srcpath != output_dir || mkfile::project_build_root.isEmpty()) {
|
||||
QDir srcdir(srcpath);
|
||||
QDir dstdir(output_dir);
|
||||
do {
|
||||
if (!mkfile::project_build_root.isEmpty()) {
|
||||
// If we already know the build root, just match up the source root with it.
|
||||
if (dstdir.path() == mkfile::project_build_root) {
|
||||
mkfile::project_root = srcdir.path();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Look for mkspecs/ in source and build. First to win determines the root.
|
||||
if (dstdir.exists("mkspecs") || srcdir.exists("mkspecs")) {
|
||||
mkfile::project_build_root = dstdir.path();
|
||||
mkfile::project_root = srcdir.path();
|
||||
if (mkfile::project_root == mkfile::project_build_root)
|
||||
mkfile::project_root.clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (!srcdir.isRoot() && srcdir.cdUp() && !dstdir.isRoot() && dstdir.cdUp());
|
||||
} else {
|
||||
mkfile::project_root.clear();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Option::postProcessProject(QMakeProject *project)
|
||||
{
|
||||
Option::cpp_ext = project->variables()["QMAKE_EXT_CPP"];
|
||||
|
@ -109,7 +109,6 @@ struct Option
|
||||
//both of these must be called..
|
||||
static int init(int argc=0, char **argv=0); //parse cmdline
|
||||
static void applyHostMode();
|
||||
static bool prepareProject(const QString &pfile);
|
||||
static bool postProcessProject(QMakeProject *);
|
||||
|
||||
enum StringFixFlags {
|
||||
@ -203,8 +202,6 @@ struct Option
|
||||
static bool do_dep_heuristics;
|
||||
static bool do_preprocess;
|
||||
static bool do_stub_makefile;
|
||||
static QString project_root;
|
||||
static QString project_build_root;
|
||||
static QString cachefile;
|
||||
static int cachefile_depth;
|
||||
static QStringList project_files;
|
||||
|
@ -164,6 +164,9 @@ struct parser_info {
|
||||
bool from_file;
|
||||
} parser;
|
||||
|
||||
static QString project_root;
|
||||
static QString project_build_root;
|
||||
|
||||
static QString remove_quotes(const QString &arg)
|
||||
{
|
||||
const ushort SINGLEQUOTE = '\'';
|
||||
@ -612,10 +615,10 @@ QStringList qmake_mkspec_paths()
|
||||
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;
|
||||
if (!project_build_root.isEmpty())
|
||||
ret << project_build_root + concat;
|
||||
if (!project_root.isEmpty())
|
||||
ret << project_root + concat;
|
||||
ret << QLibraryInfo::location(QLibraryInfo::DataPath) + concat;
|
||||
ret.removeDuplicates();
|
||||
|
||||
@ -1298,11 +1301,61 @@ QMakeProject::read(uchar cmd)
|
||||
if(!Option::user_template_prefix.isEmpty())
|
||||
base_vars["TEMPLATE_PREFIX"] = QStringList(Option::user_template_prefix);
|
||||
|
||||
project_build_root.clear();
|
||||
|
||||
if (Option::mkfile::do_cache) { // parse the cache
|
||||
if (Option::output_dir.startsWith(Option::mkfile::project_build_root))
|
||||
if (Option::mkfile::cachefile.isEmpty()) { //find it as it has not been specified
|
||||
QDir dir(Option::output_dir);
|
||||
while (!dir.exists(QLatin1String(".qmake.cache")))
|
||||
if (dir.isRoot() || !dir.cdUp())
|
||||
goto no_cache;
|
||||
Option::mkfile::cachefile = dir.filePath(QLatin1String(".qmake.cache"));
|
||||
project_build_root = dir.path();
|
||||
} else {
|
||||
QFileInfo fi(Option::mkfile::cachefile);
|
||||
Option::mkfile::cachefile = QDir::cleanPath(fi.absoluteFilePath());
|
||||
project_build_root = QDir::cleanPath(fi.absolutePath());
|
||||
}
|
||||
|
||||
QHash<QString, QStringList> cache;
|
||||
if (!read(Option::mkfile::cachefile, cache)) {
|
||||
Option::mkfile::cachefile.clear();
|
||||
goto no_cache;
|
||||
}
|
||||
if (Option::mkfile::qmakespec.isEmpty() && !cache["QMAKESPEC"].isEmpty())
|
||||
Option::mkfile::qmakespec = cache["QMAKESPEC"].first();
|
||||
|
||||
if (Option::output_dir.startsWith(project_build_root))
|
||||
Option::mkfile::cachefile_depth =
|
||||
Option::output_dir.mid(Option::mkfile::project_build_root.length()).count('/');
|
||||
Option::output_dir.mid(project_build_root.length()).count('/');
|
||||
}
|
||||
no_cache:
|
||||
|
||||
if (qmake_getpwd() != Option::output_dir || project_build_root.isEmpty()) {
|
||||
QDir srcdir(qmake_getpwd());
|
||||
QDir dstdir(Option::output_dir);
|
||||
do {
|
||||
if (!project_build_root.isEmpty()) {
|
||||
// If we already know the build root, just match up the source root with it.
|
||||
if (dstdir.path() == project_build_root) {
|
||||
project_root = srcdir.path();
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
// Look for mkspecs/ in source and build. First to win determines the root.
|
||||
if (dstdir.exists("mkspecs") || srcdir.exists("mkspecs")) {
|
||||
project_build_root = dstdir.path();
|
||||
project_root = srcdir.path();
|
||||
if (project_root == project_build_root)
|
||||
project_root.clear();
|
||||
break;
|
||||
}
|
||||
}
|
||||
} while (!srcdir.isRoot() && srcdir.cdUp() && !dstdir.isRoot() && dstdir.cdUp());
|
||||
} else {
|
||||
project_root.clear();
|
||||
}
|
||||
|
||||
{ // parse mkspec
|
||||
QString qmakespec = Option::mkfile::qmakespec;
|
||||
if (qmakespec.isEmpty())
|
||||
|
Loading…
Reference in New Issue
Block a user