From 65b42dd4c8e6aed6ad84dbd4063da3961a779433 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 23 Feb 2012 17:16:03 +0100 Subject: look for mkspecs in the project root, not next to every project qmake would look for mkspecs/ in the directory containing the current project file. this makes completely no sense with recursive projects: a) nobody would make per-project specs and b) specs meant to be global would not be found. consequently, we look for a project root when starting qmake and use only that directory. if .qmake.cache is found/set, we assume that to be the project root. otherwise, we search for mkspecs/ the same way we search for the cache - just to up until we find one or hit the root. if we are shadow-building, search the build dir as well. Change-Id: Ie66b189a40c21203d956e681cbef44a89f98cd17 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/main.cpp | 2 +- qmake/option.cpp | 31 ++++++++++++++++++++++++++++++- qmake/option.h | 3 ++- qmake/project.cpp | 9 +++------ 4 files changed, 36 insertions(+), 9 deletions(-) (limited to 'qmake') diff --git a/qmake/main.cpp b/qmake/main.cpp index 54cf9f9bdf..985afaa8e8 100644 --- a/qmake/main.cpp +++ b/qmake/main.cpp @@ -163,7 +163,7 @@ int runQMake(int argc, char **argv) fn = fn.right(fn.length() - di - 1); } - if (!Option::prepareProject()) { + if (!Option::prepareProject(fn)) { exit_val = 3; break; } diff --git a/qmake/option.cpp b/qmake/option.cpp index 0c649fdd77..16c5390348 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -116,6 +116,7 @@ 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; @@ -576,7 +577,7 @@ void Option::applyHostMode() } } -bool Option::prepareProject() +bool Option::prepareProject(const QString &pfile) { mkfile::project_build_root.clear(); if (mkfile::do_cache) { @@ -601,6 +602,34 @@ bool Option::prepareProject() } } 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; } diff --git a/qmake/option.h b/qmake/option.h index b8a3b561fa..a4d8cccbec 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -108,7 +108,7 @@ 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(); + static bool prepareProject(const QString &pfile); static bool postProcessProject(QMakeProject *); enum StringFixFlags { @@ -202,6 +202,7 @@ 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; diff --git a/qmake/project.cpp b/qmake/project.cpp index 1179812b1b..0e0ac93c5a 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -607,6 +607,9 @@ QStringList qmake_mkspec_paths() 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; @@ -1307,11 +1310,6 @@ QMakeProject::read(uchar cmd) } if(QDir::isRelativePath(qmakespec)) { - if (QFile::exists(Option::output_dir+"/"+qmakespec+"/qmake.conf")) { - qmakespec = Option::mkfile::qmakespec = QFileInfo(Option::output_dir+"/"+qmakespec).absoluteFilePath(); - } else if (QFile::exists(qmakespec+"/qmake.conf")) { - Option::mkfile::qmakespec = QFileInfo(Option::mkfile::qmakespec).absoluteFilePath(); - } else { bool found_mkspec = false; for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) { QString mkspec = (*it) + QLatin1Char('/') + qmakespec; @@ -1326,7 +1324,6 @@ QMakeProject::read(uchar cmd) qmakespec.toLatin1().constData(), mkspec_roots.join("\n\t").toLatin1().constData()); return false; } - } } // parse qmake configuration -- cgit v1.2.3 From 78faefdbb1ccc296c967dde40e2a7a1c78e4cec2 Mon Sep 17 00:00:00 2001 From: Hib Eris Date: Wed, 8 Feb 2012 13:36:28 +0100 Subject: Implement missing replacements when installing .pc files for win32 This implements replacements for win32 makefile generators similar to the replacement functionality in unix makefile generators. To enable Makefile code generation for replacements in win32 makefile generators, you must set QMAKE_STREAM_EDITOR to e.g. sed. When building for win32, sed is normally only available in the mingw/msys build environment and when cross compiling on unix. In these cases QMAKE_STREAM_EDITOR is set to sed in qmake.conf. For other win32 build environments QMAKE_STREAM_EDITOR is not set in qmake.conf and the replacements Makefile code is not generated. Change-Id: Ie5de5d517eafaeaa2544f1e972aec3fe11d0a6f1 Reviewed-by: Oswald Buddenhagen --- qmake/generators/win32/winmakefile.cpp | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'qmake') diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp index a26be16f78..9d983ffc66 100644 --- a/qmake/generators/win32/winmakefile.cpp +++ b/qmake/generators/win32/winmakefile.cpp @@ -649,6 +649,7 @@ void Win32MakefileGenerator::writeStandardParts(QTextStream &t) t << "DEF_FILE = " << varList("DEF_FILE") << endl; t << "RES_FILE = " << varList("RES_FILE") << endl; // Not on mingw, can't see why not though... t << "COPY = " << var("QMAKE_COPY") << endl; + t << "SED = " << var("QMAKE_STREAM_EDITOR") << endl; t << "COPY_FILE = " << var("QMAKE_COPY_FILE") << endl; t << "COPY_DIR = " << var("QMAKE_COPY_DIR") << endl; t << "DEL_FILE = " << var("QMAKE_DEL_FILE") << endl; @@ -852,7 +853,22 @@ QString Win32MakefileGenerator::defaultInstall(const QString &t) } if(!ret.isEmpty()) ret += "\n\t"; - ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\""; + const QString replace_rule("QMAKE_PKGCONFIG_INSTALL_REPLACE"); + if (project->isEmpty(replace_rule) + || project->isActiveConfig("no_sed_meta_install") + || project->isEmpty("QMAKE_STREAM_EDITOR")) { + ret += "-$(INSTALL_FILE) \"" + pkgConfigFileName(true) + "\" \"" + dst_pc + "\""; + } else { + ret += "-$(SED)"; + QStringList replace_rules = project->values(replace_rule); + for (int r = 0; r < replace_rules.size(); ++r) { + const QString match = project->first(replace_rules.at(r) + ".match"), + replace = project->first(replace_rules.at(r) + ".replace"); + if (!match.isEmpty() /*&& match != replace*/) + ret += " -e \"s," + match + "," + replace + ",g\""; + } + ret += " \"" + pkgConfigFileName(true) + "\" >\"" + dst_pc + "\""; + } if(!uninst.isEmpty()) uninst.append("\n\t"); uninst.append("-$(DEL_FILE) \"" + dst_pc + "\""); -- cgit v1.2.3 From 221fe8776b4b156dcdf654e1fc5ab0a1e63cfeab Mon Sep 17 00:00:00 2001 From: Andy Shaw Date: Thu, 26 Jan 2012 22:36:42 +0100 Subject: Add support for XCode 4 into qmake MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This adds support for XCode 4 into qmake and also indirectly fixes a couple of problems that are relevant for XCode 3.2 too Task-number: QTBUG-17247 Change-Id: I722470ad1854bd740cbbd28ff4956057a0e1906b Reviewed-by: David Forstenlechner Reviewed-by: Morten Johan Sørvig (cherry picked from commit b5871311457ca97816c0abbb8b935570bbfb657c) Reviewed-by: Oswald Buddenhagen --- qmake/generators/mac/pbuilder_pbx.cpp | 243 ++++++++++++++++++++++++---------- 1 file changed, 172 insertions(+), 71 deletions(-) (limited to 'qmake') diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp index b78ebd136d..5d6dee1bb9 100644 --- a/qmake/generators/mac/pbuilder_pbx.cpp +++ b/qmake/generators/mac/pbuilder_pbx.cpp @@ -508,6 +508,11 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) //HEADER const int pbVersion = pbuilderVersion(); + QStringList buildConfigGroups; + buildConfigGroups << "PROJECT"; + if (pbVersion >= 46) + buildConfigGroups << "TARGET"; + t << "// !$*UTF8*$!" << "\n" << "{" << "\n" << "\t" << writeSettings("archiveVersion", "1", SettingsNoQuote) << ";" << "\n" @@ -810,7 +815,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) QStringList &libdirs = project->values("QMAKE_PBX_LIBPATHS"), &frameworkdirs = project->values("QMAKE_FRAMEWORKPATH"); QString libs[] = { "QMAKE_LFLAGS", "QMAKE_LIBDIR_FLAGS", "QMAKE_FRAMEWORKPATH_FLAGS", - "QMAKE_LIBS", QString() }; + "QMAKE_LIBS", "QMAKE_LIBS_PRIVATE", QString() }; for(int i = 0; !libs[i].isNull(); i++) { tmp = project->values(libs[i]); for(int x = 0; x < tmp.count();) { @@ -1014,28 +1019,22 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("name", escapeFilePath(grp)) << ";" << "\n" << "\t\t" << "};" << "\n"; } - { //INSTALL BUILDPHASE (copy) + if (!project->isEmpty("DESTDIR")) { QString phase_key = keyFor("QMAKE_PBX_TARGET_COPY_PHASE"); - QString destDir = Option::output_dir; - if (!project->isEmpty("QMAKE_ORIG_DESTDIR")) - destDir = project->first("QMAKE_ORIG_DESTDIR"); + QString destDir = project->first("DESTDIR"); destDir = fixForOutput(destDir); destDir = fileInfo(Option::fixPathToLocalOS(destDir)).absoluteFilePath(); - project->values("QMAKE_PBX_PRESCRIPT_BUILDPHASES").append(phase_key); + project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); t << "\t\t" << phase_key << " = {\n" + << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";" << "\n" << "\t\t\t" << writeSettings("name", "Project Copy") << ";" << "\n" << "\t\t\t" << writeSettings("buildActionMask", "2147483647", SettingsNoQuote) << ";" << "\n" - << "\t\t\t" << writeSettings("dstPath", escapeFilePath(destDir)) << ";" << "\n" - << "\t\t\t" << writeSettings("dstSubfolderSpec", "0", SettingsNoQuote) << ";" << "\n" - << "\t\t\t" << writeSettings("files", keyFor("QMAKE_PBX_TARGET_COPY_FILE"), SettingsAsList, 4) << ";" << "\n" - << "\t\t\t" << writeSettings("isa", "PBXCopyFilesBuildPhase", SettingsNoQuote) << ";" << "\n" + << "\t\t\t" << writeSettings("files", QStringList(), SettingsAsList, 4) << ";" << "\n" + << "\t\t\t" << writeSettings("inputPaths", QStringList(), SettingsAsList, 4) << ";" << "\n" + << "\t\t\t" << writeSettings("outputPaths", QStringList(), SettingsAsList, 4) << ";" << "\n" << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";" << "\n" - << "\t\t" << "};\n" - << "\t\t" << keyFor("QMAKE_PBX_TARGET_COPY_FILE") << " = {\n" - << "\t\t\t" << writeSettings("fileRef", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n" - << "\t\t\t" << writeSettings("isa", "PBXBuildFile", SettingsNoQuote) << ";" << "\n" - << "\t\t\t" << "settings = {\n" - << "\t\t\t" << "};\n" + << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";" << "\n" + << "\t\t\t" << writeSettings("shellScript", fixForOutput("cp -r $BUILT_PRODUCTS_DIR/$FULL_PRODUCT_NAME " + escapeFilePath(destDir))) << ";" << "\n" << "\t\t" << "};\n"; } //BUNDLE_DATA BUILDPHASE (copy) @@ -1113,6 +1112,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("name", "Qt Preprocessor Steps") << ";" << "\n" << "\t\t\t" << writeSettings("productName", "Qt Preprocessor Steps") << ";" << "\n" << "\t\t\t" << writeSettings("productReference", keyFor("QMAKE_PBX_PRESCRIPTS_BUILDREFERENCE")) << ";" << "\n"; + if (pbVersion >= 46) + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST"), SettingsNoQuote) << ";" << "\n"; if(!project->isEmpty("QMAKE_PBX_PRODUCT_TYPE")) t << "\t\t\t" << writeSettings("productType", project->first("QMAKE_PBX_PRODUCT_TYPE")) << ";" << "\n"; else @@ -1217,28 +1218,30 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) t << "\t\t\t\t" << writeSettings("CPLUSPLUS", fixForOutput(findProgram(cCompiler))) << ";" << "\n"; } - t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n" - << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n" - << "\t\t\t\t" << writeSettings("OPTIMIZATION_CFLAGS", QStringList(), SettingsAsList, 5) << ";" << "\n"; - { - QStringList cflags = fixListForOutput("QMAKE_CFLAGS"); - const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); - for(int i = 0; i < prl_defines.size(); ++i) - cflags += "-D" + prl_defines.at(i); - const QStringList &defines = project->values("DEFINES"); - for(int i = 0; i < defines.size(); ++i) - cflags += "-D" + defines.at(i); - t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n"; - } - { - QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS"); - const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); - for(int i = 0; i < prl_defines.size(); ++i) - cxxflags += "-D" + prl_defines.at(i); - const QStringList &defines = project->values("DEFINES"); - for(int i = 0; i < defines.size(); ++i) - cxxflags += "-D" + defines.at(i); - t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n"; + if (pbVersion < 46) { + t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n" + << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n" + << "\t\t\t\t" << writeSettings("OPTIMIZATION_CFLAGS", QStringList(), SettingsAsList, 5) << ";" << "\n"; + { + QStringList cflags = fixListForOutput("QMAKE_CFLAGS"); + const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cflags += "-D" + prl_defines.at(i); + const QStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n"; + } + { + QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS"); + const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cxxflags += "-D" + prl_defines.at(i); + const QStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cxxflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n"; + } } t << "\t\t\t\t" << writeSettings("LEXFLAGS", fixListForOutput("QMAKE_LEXFLAGS")) << ";" << "\n" << "\t\t\t\t" << writeSettings("YACCFLAGS", fixListForOutput("QMAKE_YACCFLAGS")) << ";" << "\n" @@ -1298,7 +1301,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) + fixListForOutput("QMAKE_LFLAGS") + fixListForOutput("QMAKE_LIBDIR_FLAGS") + fixListForOutput("QMAKE_FRAMEWORKPATH_FLAGS") - + fixListForOutput("QMAKE_LIBS"), + + fixListForOutput("QMAKE_LIBS") + + fixListForOutput("QMAKE_LIBS_PRIVATE"), SettingsAsList, 6) << ";" << "\n"; } if(!project->isEmpty("DESTDIR")) { @@ -1318,7 +1322,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) project->isActiveConfig("lib_bundle")) t << "\t\t\t\t" << writeSettings("FRAMEWORK_VERSION", project->first("QMAKE_FRAMEWORK_VERSION")) << ";" << "\n"; } - if(!project->isEmpty("COMPAT_FRAMEWORKPATH")) + if (pbVersion < 46 && !project->isEmpty("COMPAT_FRAMEWORKPATH")) t << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), SettingsAsList, 5) << ";" << "\n"; if(!project->isEmpty("COMPAT_VERSION")) t << "\t\t\t\t" << writeSettings("DYLIB_COMPATIBILITY_VERSION", project->first("COMPAT_VERSION")) << ";" << "\n"; @@ -1334,7 +1338,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) else t << "\t\t\t\t" << writeSettings("SYMROOT", fixForOutput(qmake_getpwd())) << ";" << "\n"; #endif - { + if (pbVersion < 46) { QStringList archs; if(project->isActiveConfig("x86")) archs += "i386"; @@ -1385,6 +1389,8 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("dependencies", project->values("QMAKE_PBX_TARGET_DEPENDS"), SettingsAsList, 4) << ";" << "\n" << "\t\t\t" << writeSettings("productReference", keyFor(pbx_dir + "QMAKE_PBX_REFERENCE")) << ";" << "\n" << "\t\t\t" << writeSettings("shouldUseHeadermap", "1", SettingsNoQuote) << ";" << "\n"; + if (pbVersion >= 46) + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_TARGET"), SettingsNoQuote) << ";" << "\n"; if(pbVersion >= 38) t << "\t\t\t" << writeSettings("isa", "PBXNativeTarget", SettingsNoQuote) << ";" << "\n"; if(project->first("TEMPLATE") == "app") { @@ -1493,6 +1499,16 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) settings.insert(name, value); } } + if (pbVersion >= 46) { + if (project->first("TEMPLATE") == "app") { + settings.insert("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET"))); + } else { + QString lib = project->first("QMAKE_ORIG_TARGET"); + if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib")) + lib.prepend("lib"); + settings.insert("PRODUCT_NAME", escapeFilePath(lib)); + } + } QString name; if(pbVersion >= 42) @@ -1500,42 +1516,121 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) else name = (as_release ? "Deployment" : "Development"); if(pbVersion >= 42) { - QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + name); - project->values("QMAKE_PBX_BUILDCONFIGS").append(key); + for (int i = 0; i < buildConfigGroups.size(); i++) { + QString key = keyFor("QMAKE_PBX_BUILDCONFIG_" + name + buildConfigGroups.at(i)); + project->values("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i)).append(key); + t << "\t\t" << key << " = {" << "\n" + << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";" << "\n" + << "\t\t\t" << "buildSettings = {" << "\n"; + for (QMap::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it) + t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n"; + if (pbVersion >= 46) { + if (buildConfigGroups.at(i) == QLatin1String("PROJECT")) { + t << "\t\t\t\t" << writeSettings("HEADER_SEARCH_PATHS", fixListForOutput("INCLUDEPATH") + QStringList(fixForOutput(specdir())), SettingsAsList, 5) << ";" << "\n" + << "\t\t\t\t" << writeSettings("LIBRARY_SEARCH_PATHS", fixListForOutput("QMAKE_PBX_LIBPATHS"), SettingsAsList, 5) << ";" << "\n" + << "\t\t\t\t" << writeSettings("FRAMEWORK_SEARCH_PATHS", fixListForOutput("QMAKE_FRAMEWORKPATH"), SettingsAsList, 5) << ";" << "\n" + << "\t\t\t\t" << writeSettings("INFOPLIST_FILE", "Info.plist") << ";" << "\n"; + { + QStringList cflags = fixListForOutput("QMAKE_CFLAGS"); + const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cflags += "-D" + prl_defines.at(i); + const QStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CFLAGS", cflags, SettingsAsList, 5) << ";" << "\n"; + } + { + QStringList cxxflags = fixListForOutput("QMAKE_CXXFLAGS"); + const QStringList &prl_defines = project->values("PRL_EXPORT_DEFINES"); + for (int i = 0; i < prl_defines.size(); ++i) + cxxflags += "-D" + prl_defines.at(i); + const QStringList &defines = project->values("DEFINES"); + for (int i = 0; i < defines.size(); ++i) + cxxflags += "-D" + defines.at(i); + t << "\t\t\t\t" << writeSettings("OTHER_CPLUSPLUSFLAGS", cxxflags, SettingsAsList, 5) << ";" << "\n"; + } + if (!project->isActiveConfig("staticlib")) { + t << "\t\t\t\t" << writeSettings("OTHER_LDFLAGS", + fixListForOutput("SUBLIBS") + + fixListForOutput("QMAKE_LFLAGS") + + fixListForOutput("QMAKE_LIBDIR_FLAGS") + + fixListForOutput("QMAKE_FRAMEWORKPATH_FLAGS") + + fixListForOutput("QMAKE_LIBS") + + fixListForOutput("QMAKE_LIBS_PRIVATE"), + SettingsAsList, 6) << ";" << "\n"; + } + { + QStringList archs; + if (project->isActiveConfig("x86")) + archs += "i386"; + if (project->isActiveConfig("ppc")) { + if (!archs.isEmpty()) + archs += " "; + archs += "ppc"; + } + if (project->isActiveConfig("ppc64")) { + if (!archs.isEmpty()) + archs += " "; + archs += "ppc64"; + } + if (project->isActiveConfig("x86_64")) { + if (!archs.isEmpty()) + archs += " "; + archs += "x86_64"; + } + if (!archs.isEmpty()) + t << "\t\t\t\t" << writeSettings("ARCHS", archs) << ";" << "\n"; + } + } else { + if (project->first("TEMPLATE") == "app") { + if (pbVersion < 38 && project->isActiveConfig("app_bundle")) + t << "\t\t\t\t" << writeSettings("WRAPPER_SUFFIX", "app") << ";" << "\n"; + t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", fixForOutput(project->first("QMAKE_ORIG_TARGET"))) << ";" << "\n"; + } else { + if (!project->isActiveConfig("plugin") && project->isActiveConfig("staticlib")) + t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "STATIC") << ";" << "\n"; + else + t << "\t\t\t\t" << writeSettings("LIBRARY_STYLE", "DYNAMIC") << ";" << "\n"; + QString lib = project->first("QMAKE_ORIG_TARGET"); + if (!project->isActiveConfig("lib_bundle") && !project->isActiveConfig("staticlib")) + lib.prepend("lib"); + t << "\t\t\t\t" << writeSettings("PRODUCT_NAME", escapeFilePath(lib)) << ";" << "\n"; + } + } + t << "\t\t\t" << "};" << "\n" + << "\t\t\t" << writeSettings("name", name) << ";" << "\n" + << "\t\t" << "};" << "\n"; + } + } + + QString key = keyFor("QMAKE_PBX_BUILDSTYLE_" + name); + if (project->isActiveConfig("debug") != (bool)as_release) { + project->values("QMAKE_PBX_BUILDSTYLES").append(key); + active_buildstyle = name; + } else if (pbVersion >= 42) { + project->values("QMAKE_PBX_BUILDSTYLES").append(key); + } t << "\t\t" << key << " = {" << "\n" - << "\t\t\t" << writeSettings("isa", "XCBuildConfiguration", SettingsNoQuote) << ";" << "\n" + << "\t\t\t" << writeSettings("buildRules", QStringList(), SettingsAsList, 4) << ";" << "\n" << "\t\t\t" << "buildSettings = {" << "\n"; for(QMap::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it) - t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";\n"; + t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";" << "\n"; t << "\t\t\t" << "};" << "\n" + << "\t\t\t" << writeSettings("isa", "PBXBuildStyle") << ";" << "\n" << "\t\t\t" << writeSettings("name", name) << ";" << "\n" << "\t\t" << "};" << "\n"; } - - QString key = keyFor("QMAKE_PBX_BUILDSTYLE_" + name); - if(project->isActiveConfig("debug") != (bool)as_release) { - project->values("QMAKE_PBX_BUILDSTYLES").append(key); - active_buildstyle = name; - } else if(pbVersion >= 42) { - project->values("QMAKE_PBX_BUILDSTYLES").append(key); - } - t << "\t\t" << key << " = {" << "\n" - << "\t\t\t" << writeSettings("buildRules", QStringList(), SettingsAsList, 4) << ";" << "\n" - << "\t\t\t" << "buildSettings = {" << "\n"; - for(QMap::Iterator set_it = settings.begin(); set_it != settings.end(); ++set_it) - t << "\t\t\t\t" << writeSettings(set_it.key(), set_it.value()) << ";" << "\n"; - t << "\t\t\t" << "};" << "\n" - << "\t\t\t" << writeSettings("isa", "PBXBuildStyle") << ";" << "\n" - << "\t\t\t" << writeSettings("name", name) << ";" << "\n" - << "\t\t" << "};" << "\n"; } if(pbVersion >= 42) { - t << "\t\t" << keyFor("QMAKE_PBX_BUILDCONFIG_LIST") << " = {" << "\n" - << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n" - << "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_PBX_BUILDCONFIGS"), SettingsAsList, 4) << ";" << "\n" - << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n" - << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n" - << "\t\t" << "};" << "\n"; + for (int i = 0; i < buildConfigGroups.size(); i++) { + t << "\t\t" << keyFor("QMAKE_PBX_BUILDCONFIG_LIST_" + buildConfigGroups.at(i)) << " = {" << "\n" + << "\t\t\t" << writeSettings("isa", "XCConfigurationList", SettingsNoQuote) << ";" << "\n" + << "\t\t\t" << writeSettings("buildConfigurations", project->values("QMAKE_PBX_BUILDCONFIGS_" + buildConfigGroups.at(i)), SettingsAsList, 4) << ";" << "\n" + << "\t\t\t" << writeSettings("defaultConfigurationIsVisible", "0", SettingsNoQuote) << ";" << "\n" + << "\t\t\t" << writeSettings("defaultConfigurationIsName", active_buildstyle) << ";" << "\n" + << "\t\t" << "};" << "\n"; + } } //ROOT t << "\t\t" << keyFor("QMAKE_PBX_ROOT") << " = {" << "\n" @@ -1544,7 +1639,7 @@ ProjectBuilderMakefileGenerator::writeMakeParts(QTextStream &t) << "\t\t\t" << writeSettings("isa", "PBXProject", SettingsNoQuote) << ";" << "\n" << "\t\t\t" << writeSettings("mainGroup", keyFor("QMAKE_PBX_ROOT_GROUP")) << ";" << "\n"; if(pbVersion >= 42) - t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST")) << ";" << "\n"; + t << "\t\t\t" << writeSettings("buildConfigurationList", keyFor("QMAKE_PBX_BUILDCONFIG_LIST_PROJECT")) << ";" << "\n"; t << "\t\t\t" << writeSettings("projectDirPath", QStringList()) << ";" << "\n" << "\t\t\t" << writeSettings("targets", project->values("QMAKE_PBX_TARGETS"), SettingsAsList, 4) << ";" << "\n" << "\t\t" << "};" << "\n"; @@ -1693,7 +1788,11 @@ ProjectBuilderMakefileGenerator::pbuilderVersion() const #ifdef Q_OS_DARWIN ret = QLatin1String("34"); QCFType cfurl; - OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl); + // Check for XCode 4 first + OSStatus err = LSFindApplicationForInfo(0, CFSTR("com.apple.dt.Xcode"), 0, 0, &cfurl); + // Now check for XCode 3 + if (err == kLSApplicationNotFoundErr) + err = LSFindApplicationForInfo(0, CFSTR("com.apple.Xcode"), 0, 0, &cfurl); if (err == noErr) { QCFType bundle = CFBundleCreate(0, cfurl); if (bundle) { @@ -1703,7 +1802,9 @@ ProjectBuilderMakefileGenerator::pbuilderVersion() const QStringList versions = QCFString::toQString(str).split(QLatin1Char('.')); int versionMajor = versions.at(0).toInt(); int versionMinor = versions.at(1).toInt(); - if (versionMajor >= 2) { + if (versionMajor >= 3) { + ret = QLatin1String("46"); + } else if (versionMajor >= 2) { ret = QLatin1String("42"); } else if (versionMajor == 1 && versionMinor >= 5) { ret = QLatin1String("39"); -- cgit v1.2.3 From 4494ddfec7e4a74ae1192eed25edf8e3ee294755 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 1 Mar 2012 14:34:48 +0100 Subject: make default_pro.prf advertize dynamically created .qmake.cache moving the detection of .qmake.cache to the qmake startup had the side effect that a suddenly popping up cache would not be picked up by nested projects any more. this is not supposed to work in the first place, but the syncqt hack for building against non-installed modules relies on it. until we have cleaned that up properly, we need a way to notify qmake about the appearance of the cache file. Change-Id: I450646b936e3bb2ef2ed3aba05df58e521ccdc61 Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 0e0ac93c5a..48c5540076 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1177,6 +1177,8 @@ QMakeProject::parse(const QString &t, QHash &place, int nu } if(var == "REQUIRES") // special case to get communicated to backends! doProjectCheckReqs(vallist, place); + else if (var == "_QMAKE_CACHE_") + Option::mkfile::cachefile = varlist.isEmpty() ? QString() : varlist.at(0); } return true; } -- cgit v1.2.3 From 8e5eb1bddcfc71f70604c9d9916659e6cbc66845 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 23 Feb 2012 18:56:11 +0100 Subject: look for features relative to spec only in advertized place that is, spec/../features/ (i.e., mkspecs/features/) - and not any directory up to the root. Change-Id: Ie5fdf2898fba5ac93583571edc24629471604798 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 48c5540076..545adced43 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -578,15 +578,12 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0) feature_roots << Option::mkfile::qmakespec + QLatin1String("/features"); if(!Option::mkfile::qmakespec.isEmpty()) { QFileInfo specfi(Option::mkfile::qmakespec); - QDir specdir(specfi.absoluteFilePath()); - while(!specdir.isRoot()) { - if(!specdir.cdUp() || specdir.isRoot()) - break; - if(QFile::exists(specdir.path() + QLatin1String("/features"))) { + if (!specfi.isRoot()) { + QDir specdir(specfi.absolutePath()); + if (specdir.exists(QLatin1String("features"))) { for(QStringList::Iterator concat_it = concat.begin(); concat_it != concat.end(); ++concat_it) feature_roots << (specdir.path() + (*concat_it)); - break; } } } -- cgit v1.2.3 From 0bb99c6ff36ac78e29cde445400aa279a5b3d978 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 23 Feb 2012 19:01:26 +0100 Subject: cosmetics: remove redundant conditional, add a comment & reshuffle code Change-Id: I71c7e18db63f3581b8c818ad178aeb4f6ccf9446 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 545adced43..6793ed3be6 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -530,9 +530,10 @@ static void qmake_error_msg(const QString &msg) */ QStringList qmake_feature_paths(QMakeProperty *prop=0) { + const QString mkspecs_concat = QLatin1String("/mkspecs"); + const QString base_concat = QLatin1String("/features"); QStringList concat; { - const QString base_concat = QLatin1String("/features"); switch(Option::target_mode) { case Option::TARG_MACX_MODE: //also a unix concat << base_concat + QLatin1String("/mac"); @@ -549,7 +550,7 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0) } concat << base_concat; } - const QString mkspecs_concat = QLatin1String("/mkspecs"); + QStringList feature_roots; QByteArray mkspec_path = qgetenv("QMAKEFEATURES"); if(!mkspec_path.isNull()) @@ -574,9 +575,10 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0) feature_roots << ((*it) + mkspecs_concat + (*concat_it)); } } - if(!Option::mkfile::qmakespec.isEmpty()) - feature_roots << Option::mkfile::qmakespec + QLatin1String("/features"); if(!Option::mkfile::qmakespec.isEmpty()) { + // The spec is already platform-dependent, so no subdirs here. + feature_roots << Option::mkfile::qmakespec + base_concat; + QFileInfo specfi(Option::mkfile::qmakespec); if (!specfi.isRoot()) { QDir specdir(specfi.absolutePath()); -- cgit v1.2.3 From d9bf972e2b5f6bace5b7be350a70b4207e320692 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 29 Feb 2012 19:38:03 +0100 Subject: merge Makefile.win32-g++{,-sh} the only difference is in the copy & del commands. the msys tools are tolerant about windows paths, so this just works. the in-makefile variant detection is stolen from tools/configure/. Change-Id: Ia283c1fe2e2aaa8cd5b1dfd7ae29244115f07d65 Reviewed-by: Marius Storm-Olsen --- qmake/Makefile.win32-g++ | 36 ++++- qmake/Makefile.win32-g++-sh | 343 -------------------------------------------- 2 files changed, 31 insertions(+), 348 deletions(-) delete mode 100644 qmake/Makefile.win32-g++-sh (limited to 'qmake') diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index 585061ed26..d9c3b0300a 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -2,12 +2,38 @@ ifeq "$(SOURCE_PATH)" "" SOURCE_PATH = .. endif -#cmd version - ifeq "$(BUILD_PATH)" "" BUILD_PATH = .. endif +# SHELL is the full path of sh.exe, unless +# 1) it is found in the current directory +# 2) it is not found at all +# 3) it is overridden on the command line with an existing file +# ... otherwise it is always sh.exe. Specifically, SHELL from the +# environment has no effect. +# +# This check will fail if SHELL is explicitly set to a not +# sh-compatible shell. This is not a problem, because configure.exe +# will not do that. +ifeq ($(SHELL), sh.exe) + ifeq ($(wildcard $(CURDIR)/sh.exe), ) + SH = 0 + else + SH = 1 + endif +else + SH = 1 +endif + +ifeq ($(SH), 1) + COPY = cp + DEL = rm -f +else + COPY = copy + DEL = del /f +endif + # # specific stuff for mingw g++ make # @@ -101,16 +127,16 @@ QTOBJS= \ qmake.exe: $(OBJS) $(QTOBJS) $(LINKQMAKE) - -copy qmake.exe $(BUILD_PATH)\bin\qmake.exe + -$(COPY) qmake.exe $(BUILD_PATH)\bin\qmake.exe Makefile: Makefile.win32-g++ @echo "Out of date, please rerun configure" clean:: - -del $(OBJS) $(QTOBJS) $(ADDCLEAN) + -$(DEL) $(OBJS) $(QTOBJS) $(ADDCLEAN) distclean:: clean - -del qmake + -$(DEL) qmake.exe .c.o: $(CXX) $(CFLAGS) $< diff --git a/qmake/Makefile.win32-g++-sh b/qmake/Makefile.win32-g++-sh deleted file mode 100644 index 6dfb486375..0000000000 --- a/qmake/Makefile.win32-g++-sh +++ /dev/null @@ -1,343 +0,0 @@ -ifeq "$(SOURCE_PATH)" "" -SOURCE_PATH = .. -endif - -#sh version - -ifeq "$(BUILD_PATH)" "" -BUILD_PATH = .. -endif - -# -# specific stuff for mingw g++ make -# -CXX = g++ -CFLAGS = -c -o$@ -O \ - -I. -Igenerators -Igenerators/unix \ - -Igenerators/win32 -Igenerators/mac \ - -Igenerators/integrity \ - -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ - -I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION) -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ - -I$(BUILD_PATH)/src/corelib/global \ - -I$(BUILD_PATH)/src/corelib/xml \ - -I$(SOURCE_PATH)/mkspecs/win32-g++ \ - -I$(SOURCE_PATH)/tools/shared \ - -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT \ - -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -DHAVE_QCONFIG_CPP \ - -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_VARIANT -DQT_NO_DATASTREAM \ - -DQT_BOOTSTRAPPED -CXXFLAGS = $(CFLAGS) -LFLAGS = -static-libgcc -s -LIBS = -lole32 -luuid -ladvapi32 -lkernel32 -LINKQMAKE = g++ $(LFLAGS) -o qmake.exe $(OBJS) $(QTOBJS) $(LIBS) -ADDCLEAN = - - -#qmake code -OBJS = project.o main.o makefile.o unixmake.o unixmake2.o mingw_make.o \ - option.o winmakefile.o projectgenerator.o property.o meta.o \ - makefiledeps.o metamakefile.o xmloutput.o pbuilder_pbx.o \ - borland_bmake.o msvc_nmake.o msvc_vcproj.o msvc_vcxproj.o \ - msvc_objectmodel.o msbuild_objectmodel.o registry.o gbuild.o - -ifdef QMAKE_OPENSOURCE_EDITION -CFLAGS += -DQMAKE_OPENSOURCE_EDITION -endif - -#qt code -QTOBJS= \ - qbitarray.o \ - qbuffer.o \ - qbytearray.o \ - qcryptographichash.o \ - qvsnprintf.o \ - qbytearraymatcher.o \ - qconfig.o \ - qdatetime.o \ - qdir.o \ - qdiriterator.o \ - qfile.o \ - qtemporaryfile.o \ - qfileinfo.o \ - qabstractfileengine.o \ - qfilesystementry.o \ - qfilesystemengine.o \ - qfilesystemengine_win.o \ - qfilesystemiterator_win.o \ - qfsfileengine.o \ - qfsfileengine_iterator.o \ - qfsfileengine_win.o \ - qglobal.o \ - qhash.o \ - qiodevice.o \ - qlibraryinfo.o \ - qlist.o \ - qlinkedlist.o \ - qlocale.o \ - qlocale_tools.o \ - qlocale_win.o \ - qmalloc.o \ - qmap.o \ - qregexp.o \ - qtextcodec.o \ - qutfcodec.o \ - qstring.o \ - qstringlist.o \ - qsystemlibrary.o \ - qsystemerror.o \ - qtextstream.o \ - quuid.o \ - qvector.o \ - qurl.o \ - qsettings.o \ - qsettings_win.o \ - qvariant.o \ - qmetatype.o \ - qxmlstream.o \ - qxmlutils.o \ - qnumeric.o \ - qlogging.o - -qmake.exe: $(OBJS) $(QTOBJS) - $(LINKQMAKE) - -cp qmake.exe $(BUILD_PATH)/bin/qmake.exe - -Makefile: Makefile.win32-g++-sh - @echo "Out of date, please rerun configure" - -clean:: - -del $(OBJS) $(QTOBJS) $(ADDCLEAN) - -distclean:: clean - -del qmake - -.c.o: - $(CXX) $(CFLAGS) $< - -.cpp.o: - $(CXX) $(CXXFLAGS) $< - -qconfig.o: $(BUILD_PATH)/src/corelib/global/qconfig.cpp - $(CXX) $(CXXFLAGS) $(BUILD_PATH)/src/corelib/global/qconfig.cpp - -qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp - -qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings.cpp - -qvariant.o: $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp - -qurl.o: $(SOURCE_PATH)/src/corelib/io/qurl.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qurl.cpp - -qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - -qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp - -qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp - -qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp - -qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp - -qmalloc.o: $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp - -qglobal.o: $(SOURCE_PATH)/src/corelib/global/qglobal.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qglobal.cpp - -qhash.o: $(SOURCE_PATH)/src/corelib/tools/qhash.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qhash.cpp - -qbytearray.o: $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp - -qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - -qvsnprintf.o: $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp - -qbytearraymatcher.o: $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp - -qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp - -qstring.o: $(SOURCE_PATH)/src/corelib/tools/qstring.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring.cpp - -qlocale.o: $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp - -qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp - -qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp - -quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp - -qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp - -qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp - -qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - -qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp - -qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp - -qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp - -qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp - -qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp - -qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp - -qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp - -qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp - -qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp - -qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp - -qtextcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp - -qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp - -qvector.o: $(SOURCE_PATH)/src/corelib/tools/qvector.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvector.cpp - -qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp - -qdir.o: $(SOURCE_PATH)/src/corelib/io/qdir.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdir.cpp - -qdiriterator.o: $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp - -qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp - -qfileinfo.o: $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp - -qdatetime.o: $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp - -qstringlist.o: $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp - -qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp - -qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp - -qmap.o: $(SOURCE_PATH)/src/corelib/tools/qmap.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qmap.cpp - -makefile.o: $(SOURCE_PATH)/qmake/generators/makefile.cpp - $(CXX) $(CXXFLAGS) generators/makefile.cpp - -unixmake.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake.cpp - $(CXX) $(CXXFLAGS) generators/unix/unixmake.cpp - -unixmake2.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake2.cpp - $(CXX) $(CXXFLAGS) generators/unix/unixmake2.cpp - -winmakefile.o: $(SOURCE_PATH)/qmake/generators/win32/winmakefile.cpp - $(CXX) $(CXXFLAGS) generators/win32/winmakefile.cpp - -borland_bmake.o: $(SOURCE_PATH)/qmake/generators/win32/borland_bmake.cpp - $(CXX) $(CXXFLAGS) generators/win32/borland_bmake.cpp - -mingw_make.o: $(SOURCE_PATH)/qmake/generators/win32/mingw_make.cpp - $(CXX) $(CXXFLAGS) generators/win32/mingw_make.cpp - -msvc_nmake.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_nmake.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_nmake.cpp - -msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_vcproj.cpp - -msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp - -msvc_vcxproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcxproj.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_vcxproj.cpp - -msbuild_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msbuild_objectmodel.cpp - $(CXX) $(CXXFLAGS) generators/win32/msbuild_objectmodel.cpp - -registry.o: $(SOURCE_PATH)/tools/shared/windows/registry.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/tools/shared/windows/registry.cpp - -gbuild.o: $(SOURCE_PATH)/qmake/generators/integrity/gbuild.cpp - $(CXX) $(CXXFLAGS) generators/integrity/gbuild.cpp - -project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) project.cpp - -meta.o: $(SOURCE_PATH)/qmake/meta.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) meta.cpp - -main.o: $(SOURCE_PATH)/qmake/main.cpp $(SOURCE_PATH)/qmake/project.h - $(CXX) $(CXXFLAGS) main.cpp - -option.o: $(SOURCE_PATH)/qmake/option.cpp $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) option.cpp - -property.o: $(SOURCE_PATH)/qmake/property.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) property.cpp - -projectgenerator.o: $(SOURCE_PATH)/qmake/generators/projectgenerator.cpp - $(CXX) $(CXXFLAGS) generators/projectgenerator.cpp - -pbuilder_pbx.o: $(SOURCE_PATH)/qmake/generators/mac/pbuilder_pbx.cpp - $(CXX) $(CXXFLAGS) generators/mac/pbuilder_pbx.cpp - -makefiledeps.o: $(SOURCE_PATH)/qmake/generators/makefiledeps.cpp - $(CXX) $(CXXFLAGS) generators/makefiledeps.cpp - -metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp - $(CXX) $(CXXFLAGS) generators/metamakefile.cpp - -xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp - $(CXX) $(CXXFLAGS) generators/xmloutput.cpp - -qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp - -qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp - -qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp -- cgit v1.2.3 From 5515b48ac9aa099b09285f0453fae5cdbb73f0a6 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 29 Feb 2012 21:01:15 +0100 Subject: use VPATH to locate sources makes the file a "tad" more concise Change-Id: I81d9721942890659ac93b32f5988f9c005c88e87 Reviewed-by: Marius Storm-Olsen --- qmake/Makefile.win32-g++ | 234 +++-------------------------------------------- 1 file changed, 11 insertions(+), 223 deletions(-) (limited to 'qmake') diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index d9c3b0300a..86ddcf40c7 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -6,6 +6,10 @@ ifeq "$(BUILD_PATH)" "" BUILD_PATH = .. endif +CORESRC = $(SOURCE_PATH)/src/corelib +TOOLSRC = $(SOURCE_PATH)/tools +QMKSRC = $(SOURCE_PATH)/qmake + # SHELL is the full path of sh.exe, unless # 1) it is found in the current directory # 2) it is not found at all @@ -144,227 +148,11 @@ distclean:: clean .cpp.o: $(CXX) $(CXXFLAGS) $< -qconfig.o: $(BUILD_PATH)/src/corelib/global/qconfig.cpp - $(CXX) $(CXXFLAGS) $(BUILD_PATH)/src/corelib/global/qconfig.cpp - -qsettings_win.o: $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings_win.cpp - -qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qsettings.cpp - -qvariant.o: $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qvariant.cpp - -qurl.o: $(SOURCE_PATH)/src/corelib/io/qurl.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qurl.cpp - -qtextstream.o: $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtextstream.cpp - -qdatastream.o: $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdatastream.cpp - -qiodevice.o: $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qiodevice.cpp - -qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp - -qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp - -qmalloc.o: $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qmalloc.cpp - -qglobal.o: $(SOURCE_PATH)/src/corelib/global/qglobal.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qglobal.cpp - -qhash.o: $(SOURCE_PATH)/src/corelib/tools/qhash.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qhash.cpp - -qbytearray.o: $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearray.cpp - -qcryptographichash.o: $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qcryptographichash.cpp - -qvsnprintf.o: $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvsnprintf.cpp - -qbytearraymatcher.o: $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbytearraymatcher.cpp - -qutfcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qutfcodec.cpp - -qstring.o: $(SOURCE_PATH)/src/corelib/tools/qstring.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstring.cpp - -qlocale.o: $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale.cpp - -qlocale_tools.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp - -qlocale_win.o: $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlocale_win.cpp - -quuid.o: $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp - -qbuffer.o: $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qbuffer.cpp - -qlist.o: $(SOURCE_PATH)/src/corelib/tools/qlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlist.cpp - -qlinkedlist.o: $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qlinkedlist.cpp - -qfile.o: $(SOURCE_PATH)/src/corelib/io/qfile.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfile.cpp - -qtemporaryfile.o: $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qtemporaryfile.cpp - -qabstractfileengine.o: $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qabstractfileengine.cpp - -qfilesystementry.o: $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystementry.cpp - -qfilesystemengine.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine.cpp - -qfilesystemengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemengine_win.cpp - -qfilesystemiterator_win.o: $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfilesystemiterator_win.cpp - -qfsfileengine_win.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_win.cpp - -qfsfileengine.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine.cpp - -qfsfileengine_iterator.o: $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfsfileengine_iterator.cpp - -qtextcodec.o: $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/codecs/qtextcodec.cpp - -qregexp.o: $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qregexp.cpp - -qvector.o: $(SOURCE_PATH)/src/corelib/tools/qvector.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qvector.cpp - -qbitarray.o: $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qbitarray.cpp - -qdir.o: $(SOURCE_PATH)/src/corelib/io/qdir.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdir.cpp - -qdiriterator.o: $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qdiriterator.cpp - -qmetatype.o: $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qmetatype.cpp - -qfileinfo.o: $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp - -qdatetime.o: $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp - -qstringlist.o: $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp - -qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp - -qsystemlibrary.o: $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/plugin/qsystemlibrary.cpp - -qmap.o: $(SOURCE_PATH)/src/corelib/tools/qmap.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/tools/qmap.cpp - -makefile.o: $(SOURCE_PATH)/qmake/generators/makefile.cpp - $(CXX) $(CXXFLAGS) generators/makefile.cpp - -unixmake.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake.cpp - $(CXX) $(CXXFLAGS) generators/unix/unixmake.cpp - -unixmake2.o: $(SOURCE_PATH)/qmake/generators/unix/unixmake2.cpp - $(CXX) $(CXXFLAGS) generators/unix/unixmake2.cpp - -winmakefile.o: $(SOURCE_PATH)/qmake/generators/win32/winmakefile.cpp - $(CXX) $(CXXFLAGS) generators/win32/winmakefile.cpp - -borland_bmake.o: $(SOURCE_PATH)/qmake/generators/win32/borland_bmake.cpp - $(CXX) $(CXXFLAGS) generators/win32/borland_bmake.cpp - -mingw_make.o: $(SOURCE_PATH)/qmake/generators/win32/mingw_make.cpp - $(CXX) $(CXXFLAGS) generators/win32/mingw_make.cpp - -msvc_nmake.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_nmake.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_nmake.cpp - -msvc_vcproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcproj.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_vcproj.cpp - -msvc_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_objectmodel.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_objectmodel.cpp - -msvc_vcxproj.o: $(SOURCE_PATH)/qmake/generators/win32/msvc_vcxproj.cpp - $(CXX) $(CXXFLAGS) generators/win32/msvc_vcxproj.cpp - -msbuild_objectmodel.o: $(SOURCE_PATH)/qmake/generators/win32/msbuild_objectmodel.cpp - $(CXX) $(CXXFLAGS) generators/win32/msbuild_objectmodel.cpp - -registry.o: $(SOURCE_PATH)/tools/shared/windows/registry.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/tools/shared/windows/registry.cpp - -gbuild.o: $(SOURCE_PATH)/qmake/generators/integrity/gbuild.cpp - $(CXX) $(CXXFLAGS) generators/integrity/gbuild.cpp - -project.o: $(SOURCE_PATH)/qmake/project.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) project.cpp - -meta.o: $(SOURCE_PATH)/qmake/meta.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) meta.cpp - -main.o: $(SOURCE_PATH)/qmake/main.cpp $(SOURCE_PATH)/qmake/project.h - $(CXX) $(CXXFLAGS) main.cpp - -option.o: $(SOURCE_PATH)/qmake/option.cpp $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) option.cpp - -property.o: $(SOURCE_PATH)/qmake/property.cpp $(SOURCE_PATH)/qmake/project.h $(SOURCE_PATH)/qmake/option.h - $(CXX) $(CXXFLAGS) property.cpp - -projectgenerator.o: $(SOURCE_PATH)/qmake/generators/projectgenerator.cpp - $(CXX) $(CXXFLAGS) generators/projectgenerator.cpp - -pbuilder_pbx.o: $(SOURCE_PATH)/qmake/generators/mac/pbuilder_pbx.cpp - $(CXX) $(CXXFLAGS) generators/mac/pbuilder_pbx.cpp - -makefiledeps.o: $(SOURCE_PATH)/qmake/generators/makefiledeps.cpp - $(CXX) $(CXXFLAGS) generators/makefiledeps.cpp - -metamakefile.o: $(SOURCE_PATH)/qmake/generators/metamakefile.cpp - $(CXX) $(CXXFLAGS) generators/metamakefile.cpp - -xmloutput.o: $(SOURCE_PATH)/qmake/generators/xmloutput.cpp - $(CXX) $(CXXFLAGS) generators/xmloutput.cpp - -qxmlstream.o: $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlstream.cpp - -qxmlutils.o: $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/xml/qxmlutils.cpp +QTVPATH = $(TOOLSRC)/shared/windows:$(CORESRC)/global:$(CORESRC)/kernel:$(CORESRC)/tools:$(CORESRC)/codecs:$(CORESRC)/io:$(CORESRC)/xml:$(CORESRC)/plugin:$(BUILD_PATH)/src/corelib/global +VPATH = $(QMKSRC):$(QMKSRC)/generators:$(QMKSRC)/generators/unix:$(QMKSRC)/generators/mac:$(QMKSRC)/generators/win32:$(QMKSRC)/generators/integrity:$(QTVPATH) -qlogging.o: $(SOURCE_PATH)/src/corelib/global/qlogging.cpp - $(CXX) $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlogging.cpp +project.o: $(QMKSRC)/project.h $(QMKSRC)/option.h +meta.o: $(QMKSRC)/project.h $(QMKSRC)/option.h +main.o: $(QMKSRC)/project.h +option.o: $(QMKSRC)/option.h +property.o: $(QMKSRC)/project.h $(QMKSRC)/option.h -- cgit v1.2.3 From 054051d91f1e1184c58063b1dd1fb2ace3389178 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Wed, 29 Feb 2012 21:26:49 +0100 Subject: remove some bogus include locations nothing to be found in /include. neither in /src/corelib/xml. Change-Id: I381391a64542dc2ac7b421b6646c60a1b7a14639 Reviewed-by: Marius Storm-Olsen --- qmake/Makefile.unix | 2 +- qmake/Makefile.win32 | 2 -- qmake/Makefile.win32-g++ | 2 -- 3 files changed, 1 insertion(+), 5 deletions(-) (limited to 'qmake') diff --git a/qmake/Makefile.unix b/qmake/Makefile.unix index 16af49311b..d9835932d6 100644 --- a/qmake/Makefile.unix +++ b/qmake/Makefile.unix @@ -73,7 +73,7 @@ CPPFLAGS = -g -I. -Igenerators -Igenerators/unix -Igenerators/win32 \ -Igenerators/mac -Igenerators/integrity \ -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore \ -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ - -I$(BUILD_PATH)/src/corelib/global -I$(BUILD_PATH)/src/corelib/xml \ + -I$(BUILD_PATH)/src/corelib/global \ -I$(SOURCE_PATH)/tools/shared \ -DQT_BUILD_QMAKE -DQT_BOOTSTRAPPED \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_NO_COMPONENT -DQT_NO_STL \ diff --git a/qmake/Makefile.win32 b/qmake/Makefile.win32 index 767237fcfc..f640216036 100644 --- a/qmake/Makefile.win32 +++ b/qmake/Makefile.win32 @@ -33,9 +33,7 @@ CFLAGS_BARE = -c -Fo./ \ $(CFLAGS_EXTRA) \ -I. -Igenerators -Igenerators\unix -Igenerators\win32 -Igenerators\mac -Igenerators\integrity \ -I$(BUILD_PATH)\include -I$(BUILD_PATH)\include\QtCore -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION) -I$(BUILD_PATH)\include\QtCore\$(QT_VERSION)\QtCore \ - -I$(SOURCE_PATH)\include -I$(SOURCE_PATH)\include\QtCore -I$(SOURCE_PATH)\include\QtCore\$(QT_VERSION) -I$(SOURCE_PATH)\include\QtCore\$(QT_VERSION)\QtCore \ -I$(BUILD_PATH)\src\corelib\global \ - -I$(BUILD_PATH)\src\corelib\xml \ -I$(SOURCE_PATH)\mkspecs\$(QMAKESPEC) \ -I$(SOURCE_PATH)\tools\shared \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL \ diff --git a/qmake/Makefile.win32-g++ b/qmake/Makefile.win32-g++ index 86ddcf40c7..57e6c1aa4e 100644 --- a/qmake/Makefile.win32-g++ +++ b/qmake/Makefile.win32-g++ @@ -47,9 +47,7 @@ CFLAGS = -c -o$@ -O \ -Igenerators/win32 -Igenerators/mac \ -Igenerators/integrity \ -I$(BUILD_PATH)/include -I$(BUILD_PATH)/include/QtCore -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION) -I$(BUILD_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ - -I$(SOURCE_PATH)/include -I$(SOURCE_PATH)/include/QtCore -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION) -I$(SOURCE_PATH)/include/QtCore/$(QT_VERSION)/QtCore \ -I$(BUILD_PATH)/src/corelib/global \ - -I$(BUILD_PATH)/src/corelib/xml \ -I$(SOURCE_PATH)/mkspecs/win32-g++ \ -I$(SOURCE_PATH)/tools/shared \ -DQT_NO_TEXTCODEC -DQT_NO_UNICODETABLES -DQT_LITE_COMPONENT \ -- cgit v1.2.3 From c3a1af63ae8a7475d093fe4372d86360cebfa541 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 23 Feb 2012 17:30:58 +0100 Subject: search for default spec just like for other ones that way qtbase will find its spec without hacking .qmake.cache. note that passing "-spec default" on the command line would have already triggered the normal path, so artificial limitation did not even provide safety against abuse (it is arguably pointless/counterproductive for other projects than qtbase to have a default spec). Change-Id: Ib0c3e6498fd70cd6f9561951d72a47165878bb33 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 6793ed3be6..2d339ccb63 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1291,26 +1291,12 @@ QMakeProject::read(uchar cmd) } if (cmd & ReadSetup) { // parse mkspec QString qmakespec = fixEnvVariables(Option::mkfile::qmakespec); - QStringList mkspec_roots = qmake_mkspec_paths(); - debug_msg(2, "Looking for mkspec %s in (%s)", qmakespec.toLatin1().constData(), - mkspec_roots.join("::").toLatin1().constData()); - if(qmakespec.isEmpty()) { - for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) { - QString mkspec = (*it) + QLatin1String("/default"); - QFileInfo default_info(mkspec); - if(default_info.exists() && default_info.isDir()) { - qmakespec = mkspec; - break; - } - } - if(qmakespec.isEmpty()) { - fprintf(stderr, "QMAKESPEC has not been set, so configuration cannot be deduced.\n"); - return false; - } - Option::mkfile::qmakespec = 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; -- cgit v1.2.3 From 74a6669fa7c0d6e2cb7d34d56332d620d2a07755 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 23 Feb 2012 19:34:10 +0100 Subject: 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 Reviewed-by: Marius Storm-Olsen --- qmake/option.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ qmake/option.h | 2 ++ qmake/project.cpp | 43 +------------------------------------------ qmake/property.cpp | 4 +--- 4 files changed, 48 insertions(+), 45 deletions(-) (limited to 'qmake') diff --git a/qmake/option.cpp b/qmake/option.cpp index 16c5390348..93a0ffbd9c 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -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) { mkfile::project_build_root.clear(); @@ -630,6 +671,9 @@ bool Option::prepareProject(const QString &pfile) mkfile::project_root.clear(); } + if (!resolveSpec(&Option::mkfile::qmakespec)) + return false; + return true; } diff --git a/qmake/option.h b/qmake/option.h index a4d8cccbec..96549bb5bc 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -108,6 +108,7 @@ struct Option //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 *); @@ -212,6 +213,7 @@ struct Option 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); } diff --git a/qmake/project.cpp b/qmake/project.cpp index 2d339ccb63..0533ab30b5 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -596,24 +596,6 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0) 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() { if(own_prop) @@ -1290,30 +1272,7 @@ QMakeProject::read(uchar cmd) Option::output_dir.mid(Option::mkfile::project_build_root.length()).count('/'); } if (cmd & ReadSetup) { // parse mkspec - QString qmakespec = fixEnvVariables(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 + QString qmakespec = Option::mkfile::qmakespec; while(qmakespec.endsWith(QLatin1Char('/'))) qmakespec.truncate(qmakespec.length()-1); QString spec = qmakespec + QLatin1String("/qmake.conf"); diff --git a/qmake/property.cpp b/qmake/property.cpp index 4221605545..064c8f6082 100644 --- a/qmake/property.cpp +++ b/qmake/property.cpp @@ -49,8 +49,6 @@ QT_BEGIN_NAMESPACE -QStringList qmake_mkspec_paths(); //project.cpp - QMakeProperty::QMakeProperty() : settings(0) { } @@ -107,7 +105,7 @@ QMakeProperty::value(QString v, bool just_check) else if(v == "QT_INSTALL_DEMOS") return QLibraryInfo::location(QLibraryInfo::ExamplesPath); 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") return qmake_version(); #ifdef QT_VERSION_STR -- cgit v1.2.3 From 93ee903da7b10326b40bc43d5f5c659d527e8814 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 21 Feb 2012 12:44:27 +0100 Subject: clean up build pass project initialization instead of messing with the Option singleton, add a way to inject extra config values into QMakeProject. Change-Id: Ia347dcc38af2c72913e30ebf5c2b4044f93b4f5f Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/generators/metamakefile.cpp | 16 ++++++---------- qmake/option.cpp | 1 - qmake/option.h | 2 +- qmake/project.cpp | 18 ++++++++++++++---- qmake/project.h | 3 +++ 5 files changed, 24 insertions(+), 16 deletions(-) (limited to 'qmake') diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp index b9fec023ab..55ab0a5af5 100644 --- a/qmake/generators/metamakefile.cpp +++ b/qmake/generators/metamakefile.cpp @@ -238,25 +238,21 @@ MakefileGenerator //initialize the base QHash basevars; + QStringList basecfgs; if(!project->isEmpty(build + ".CONFIG")) - basevars["CONFIG"] += project->values(build + ".CONFIG"); - basevars["CONFIG"] += build; - basevars["CONFIG"] += "build_pass"; + basecfgs = project->values(build + ".CONFIG"); + basecfgs += build; + basecfgs += "build_pass"; + basevars["CONFIG"] = basecfgs; basevars["BUILD_PASS"] = QStringList(build); QStringList buildname = project->values(build + ".name"); basevars["BUILD_NAME"] = (buildname.isEmpty() ? QStringList(build) : buildname); //create project QMakeProject *build_proj = new QMakeProject(project->properties(), basevars); + build_proj->setExtraConfigs(basecfgs); - //all the user configs must be set again afterwards (for .pro tests and for .prf tests) - const QStringList old_after_user_config = Option::after_user_configs; - const QStringList old_user_config = Option::user_configs; - Option::after_user_configs += basevars["CONFIG"]; - Option::user_configs += basevars["CONFIG"]; build_proj->read(project->projectFile()); - Option::after_user_configs = old_after_user_config; - Option::user_configs = old_user_config; //done return createMakefileGenerator(build_proj); diff --git a/qmake/option.cpp b/qmake/option.cpp index 93a0ffbd9c..c73eb149ec 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -92,7 +92,6 @@ Option::QMAKE_RECURSIVE Option::recursive = Option::QMAKE_RECURSIVE_DEFAULT; QStringList Option::before_user_vars; QStringList Option::after_user_vars; QStringList Option::user_configs; -QStringList Option::after_user_configs; QString Option::user_template; QString Option::user_template_prefix; QStringList Option::shellPath; diff --git a/qmake/option.h b/qmake/option.h index 96549bb5bc..d1bfcd169b 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -173,7 +173,7 @@ struct Option static int warn_level; enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO }; static QMAKE_RECURSIVE recursive; - static QStringList before_user_vars, after_user_vars, user_configs, after_user_configs; + static QStringList before_user_vars, after_user_vars, user_configs; enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE }; static HOST_MODE host_mode; enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE, diff --git a/qmake/project.cpp b/qmake/project.cpp index 0533ab30b5..8aa3ed2ed6 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1326,6 +1326,14 @@ QMakeProject::read(uchar cmd) parse("CONFIG += " + Option::user_configs.join(" "), vars); } + // After user configs, to override them + if (!extra_configs.isEmpty()) { + parser.file = "(extra configs)"; + parser.from_file = false; + parser.line_no = 1; //really arg count now.. duh + parse("CONFIG += " + extra_configs.join(" "), vars); + } + if(cmd & ReadProFile) { // parse project file debug_msg(1, "Project file: reading %s", pfile.toLatin1().constData()); if(pfile != "-" && !QFile::exists(pfile) && !pfile.endsWith(Option::pro_ext)) @@ -1349,12 +1357,14 @@ QMakeProject::read(uchar cmd) } } - //after configs (set in BUILDS) - if ((cmd & ReadSetup) && !Option::after_user_configs.isEmpty()) { - parser.file = "(configs)"; + // Again, to ensure the project does not mess with us. + // Specifically, do not allow a project to override debug/release within a + // debug_and_release build pass - it's too late for that at this point anyway. + if (!extra_configs.isEmpty()) { + parser.file = "(extra configs)"; parser.from_file = false; parser.line_no = 1; //really arg count now.. duh - parse("CONFIG += " + Option::after_user_configs.join(" "), vars); + parse("CONFIG += " + extra_configs.join(" "), vars); } if(cmd & ReadFeatures) { diff --git a/qmake/project.h b/qmake/project.h index ce90be035f..43623a3974 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -84,6 +84,7 @@ class QMakeProject QString pfile, cfile; QMakeProperty *prop; void reset(); + QStringList extra_configs; QHash vars, base_vars; bool parse(const QString &text, QHash &place, int line_count=1); @@ -118,6 +119,8 @@ public: QMakeProject(QMakeProperty *p, const QHash &nvars) { init(p, &nvars); } ~QMakeProject(); + void setExtraConfigs(const QStringList &_cfgs) { extra_configs = _cfgs; } + enum { ReadProFile=0x01, ReadSetup=0x02, ReadFeatures=0x04, ReadAll=0xFF }; inline bool parse(const QString &text) { return parse(text, vars); } bool read(const QString &project, uchar cmd=ReadAll); -- cgit v1.2.3 From dce3821b8a6dfbb041d7ecec8b97c960b0e08c51 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 21 Feb 2012 12:56:47 +0100 Subject: make evaluation of spec+cache independent of build pass context don't inject the build pass specific variables into the project even before evaluating the .spec file and the .qmake.cache. they are not supposed to base configuration on that - feature files should do that later. the immediate advantage of this is that base_vars is never manipulated upfront any more, which allows for cleaner setup paths. also, we can do more caching of the spec+cache contents. Change-Id: I19d7f8bec1fb7c3b54121e26794340b287055ebf Reviewed-by: Joerg Bornemann --- qmake/generators/metamakefile.cpp | 4 ++-- qmake/project.cpp | 4 ++++ qmake/project.h | 3 ++- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'qmake') diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp index 55ab0a5af5..39dd4ab797 100644 --- a/qmake/generators/metamakefile.cpp +++ b/qmake/generators/metamakefile.cpp @@ -243,13 +243,13 @@ MakefileGenerator basecfgs = project->values(build + ".CONFIG"); basecfgs += build; basecfgs += "build_pass"; - basevars["CONFIG"] = basecfgs; basevars["BUILD_PASS"] = QStringList(build); QStringList buildname = project->values(build + ".name"); basevars["BUILD_NAME"] = (buildname.isEmpty() ? QStringList(build) : buildname); //create project - QMakeProject *build_proj = new QMakeProject(project->properties(), basevars); + QMakeProject *build_proj = new QMakeProject(project->properties()); + build_proj->setExtraVars(basevars); build_proj->setExtraConfigs(basecfgs); build_proj->read(project->projectFile()); diff --git a/qmake/project.cpp b/qmake/project.cpp index 8aa3ed2ed6..208d5b7d3e 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1292,6 +1292,10 @@ QMakeProject::read(uchar cmd) vars = base_vars; // start with the base + for (QHash::ConstIterator it = extra_vars.constBegin(); + it != extra_vars.constEnd(); ++it) + vars.insert(it.key(), it.value()); + if(cmd & ReadFeatures) { debug_msg(1, "Processing default_pre: %s", vars["CONFIG"].join("::").toLatin1().constData()); doProjectInclude("default_pre", IncludeFlagFeature, vars); diff --git a/qmake/project.h b/qmake/project.h index 43623a3974..4c99825317 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -85,7 +85,7 @@ class QMakeProject QMakeProperty *prop; void reset(); QStringList extra_configs; - QHash vars, base_vars; + QHash vars, base_vars, extra_vars; bool parse(const QString &text, QHash &place, int line_count=1); enum IncludeStatus { @@ -119,6 +119,7 @@ public: QMakeProject(QMakeProperty *p, const QHash &nvars) { init(p, &nvars); } ~QMakeProject(); + void setExtraVars(const QHash &_vars) { extra_vars = _vars; } void setExtraConfigs(const QStringList &_cfgs) { extra_configs = _cfgs; } enum { ReadProFile=0x01, ReadSetup=0x02, ReadFeatures=0x04, ReadAll=0xFF }; -- cgit v1.2.3 From a30074bab8446640d41060637b99394136bea7d7 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 20 Feb 2012 22:19:11 +0100 Subject: remove now unused QMakeProject c'tors Change-Id: Ia65d49df50a5610bbd88417ca90ac348a774a1e1 Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/project.cpp | 7 +++---- qmake/project.h | 7 ++----- 2 files changed, 5 insertions(+), 9 deletions(-) (limited to 'qmake') diff --git a/qmake/project.cpp b/qmake/project.cpp index 208d5b7d3e..7a5c953f02 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -614,10 +614,8 @@ QMakeProject::~QMakeProject() void -QMakeProject::init(QMakeProperty *p, const QHash *vars) +QMakeProject::init(QMakeProperty *p) { - if(vars) - base_vars = *vars; if(!p) { prop = new QMakeProperty; own_prop = true; @@ -631,7 +629,8 @@ QMakeProject::init(QMakeProperty *p, const QHash *vars) QMakeProject::QMakeProject(QMakeProject *p, const QHash *vars) { - init(p->properties(), vars ? vars : &p->variables()); + init(p->properties()); + base_vars = vars ? *vars : p->variables(); for(QHash::iterator it = p->replaceFunctions.begin(); it != p->replaceFunctions.end(); ++it) { it.value()->ref(); replaceFunctions.insert(it.key(), it.value()); diff --git a/qmake/project.h b/qmake/project.h index 4c99825317..6422ed1f32 100644 --- a/qmake/project.h +++ b/qmake/project.h @@ -106,17 +106,14 @@ class QMakeProject bool doProjectCheckReqs(const QStringList &deps, QHash &place); bool doVariableReplace(QString &str, QHash &place); QStringList doVariableReplaceExpand(const QString &str, QHash &place, bool *ok=0); - void init(QMakeProperty *, const QHash *); + void init(QMakeProperty *); QStringList &values(const QString &v, QHash &place); void validateModes(); void resolveSpec(QString *spec, const QString &qmakespec); public: - QMakeProject() { init(0, 0); } - QMakeProject(QMakeProperty *p) { init(p, 0); } + QMakeProject(QMakeProperty *p = 0) { init(p); } QMakeProject(QMakeProject *p, const QHash *nvars=0); - QMakeProject(const QHash &nvars) { init(0, &nvars); } - QMakeProject(QMakeProperty *p, const QHash &nvars) { init(p, &nvars); } ~QMakeProject(); void setExtraVars(const QHash &_vars) { extra_vars = _vars; } -- cgit v1.2.3 From c679b2f0a65a630f7490b37529e2186a8cd9c78b Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Thu, 2 Feb 2012 19:31:57 +0100 Subject: get rid of Option::user_configs merge them into before_user_vars. they are evaluated right after another anyway. Change-Id: I11859284b363fee01233f6e20989444fef711d0d Reviewed-by: Joerg Bornemann Reviewed-by: Marius Storm-Olsen --- qmake/generators/makefile.cpp | 4 ---- qmake/generators/projectgenerator.cpp | 2 -- qmake/option.cpp | 8 ++++++-- qmake/option.h | 2 +- qmake/project.cpp | 8 -------- 5 files changed, 7 insertions(+), 17 deletions(-) (limited to 'qmake') diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp index 59a615e63a..8544dce2fc 100644 --- a/qmake/generators/makefile.cpp +++ b/qmake/generators/makefile.cpp @@ -2235,10 +2235,6 @@ QString MakefileGenerator::buildArgs(const QString &outdir) ret += " -win32"; } - //configs - for(QStringList::Iterator it = Option::user_configs.begin(); - it != Option::user_configs.end(); ++it) - ret += " -config " + (*it); //arguments for(QStringList::Iterator it = Option::before_user_vars.begin(); it != Option::before_user_vars.end(); ++it) { diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp index a2eb45ef40..9a181a43f5 100644 --- a/qmake/generators/projectgenerator.cpp +++ b/qmake/generators/projectgenerator.cpp @@ -344,8 +344,6 @@ ProjectGenerator::writeMakefile(QTextStream &t) t << "######################################################################" << endl; t << "# Automatically generated by qmake (" << qmake_version() << ") " << QDateTime::currentDateTime().toString() << endl; t << "######################################################################" << endl << endl; - if(!Option::user_configs.isEmpty()) - t << "CONFIG += " << Option::user_configs.join(" ") << endl; int i; for(i = 0; i < Option::before_user_vars.size(); ++i) t << Option::before_user_vars[i] << endl; diff --git a/qmake/option.cpp b/qmake/option.cpp index c73eb149ec..cf72351f1f 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -91,7 +91,6 @@ QString Option::output_dir; Option::QMAKE_RECURSIVE Option::recursive = Option::QMAKE_RECURSIVE_DEFAULT; QStringList Option::before_user_vars; QStringList Option::after_user_vars; -QStringList Option::user_configs; QString Option::user_template; QString Option::user_template_prefix; QStringList Option::shellPath; @@ -219,6 +218,8 @@ bool usage(const char *a0) int Option::parseCommandLine(int argc, char **argv, int skip) { + QStringList user_configs; + bool before = true; for(int x = skip; x < argc; x++) { if(*argv[x] == '-' && strlen(argv[x]) > 1) { /* options */ @@ -303,7 +304,7 @@ Option::parseCommandLine(int argc, char **argv, int skip) } else if(opt == "nr" || opt == "norecursive") { Option::recursive = Option::QMAKE_RECURSIVE_NO; } else if(opt == "config") { - Option::user_configs += argv[++x]; + user_configs += argv[++x]; } else { if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE || Option::qmake_mode == Option::QMAKE_GENERATE_PRL) { @@ -376,6 +377,9 @@ Option::parseCommandLine(int argc, char **argv, int skip) } } + if (!user_configs.isEmpty()) + Option::before_user_vars += "CONFIG += " + user_configs.join(" "); + return Option::QMAKE_CMDLINE_SUCCESS; } diff --git a/qmake/option.h b/qmake/option.h index d1bfcd169b..2d0d1114a9 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -173,7 +173,7 @@ struct Option static int warn_level; enum QMAKE_RECURSIVE { QMAKE_RECURSIVE_DEFAULT, QMAKE_RECURSIVE_YES, QMAKE_RECURSIVE_NO }; static QMAKE_RECURSIVE recursive; - static QStringList before_user_vars, after_user_vars, user_configs; + static QStringList before_user_vars, after_user_vars; enum HOST_MODE { HOST_UNKNOWN_MODE, HOST_UNIX_MODE, HOST_WIN_MODE, HOST_MACX_MODE }; static HOST_MODE host_mode; enum TARG_MODE { TARG_UNKNOWN_MODE, TARG_UNIX_MODE, TARG_WIN_MODE, TARG_MACX_MODE, diff --git a/qmake/project.cpp b/qmake/project.cpp index 7a5c953f02..34e443f5c5 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1321,14 +1321,6 @@ QMakeProject::read(uchar cmd) } } - //commandline configs - if ((cmd & ReadSetup) && !Option::user_configs.isEmpty()) { - parser.file = "(configs)"; - parser.from_file = false; - parser.line_no = 1; //really arg count now.. duh - parse("CONFIG += " + Option::user_configs.join(" "), vars); - } - // After user configs, to override them if (!extra_configs.isEmpty()) { parser.file = "(extra configs)"; -- cgit v1.2.3