From 0ce1a6ba244c934b5b4504abb980806793d54515 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Mon, 16 Apr 2012 17:12:53 +0200 Subject: don't let the make spec determine the host mode any more (some of) the generators are (moderately) x-platform, so it makes no sense to nail the host platform to a generator (and thus a spec). overriding the host platform is only a debugging mesasure anyway, so one can use the (now undocumented) -unix/-macx/-win32 options for that. Change-Id: If2a059f1feeb2c726e5838625ede1c7add829985 Reviewed-by: Joerg Bornemann Reviewed-by: Mark Brand --- qmake/generators/metamakefile.cpp | 18 +--------------- qmake/generators/metamakefile.h | 3 +-- qmake/option.cpp | 31 +++++++++++++-------------- qmake/option.h | 1 - qmake/project.cpp | 44 ++++++++++++++------------------------- 5 files changed, 33 insertions(+), 64 deletions(-) diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp index a1ab4ada75..3243aebb3b 100644 --- a/qmake/generators/metamakefile.cpp +++ b/qmake/generators/metamakefile.cpp @@ -515,37 +515,21 @@ MetaMakefileGenerator::createMetaGenerator(QMakeProject *proj, const QString &na #endif // QT_QMAKE_PARSER_ONLY bool -MetaMakefileGenerator::modesForGenerator(const QString &gen, - Option::HOST_MODE *host_mode, Option::TARG_MODE *target_mode) +MetaMakefileGenerator::modeForGenerator(const QString &gen, Option::TARG_MODE *target_mode) { if (gen == "UNIX") { #ifdef Q_OS_MAC - *host_mode = Option::HOST_MACX_MODE; *target_mode = Option::TARG_MACX_MODE; -#elif defined(Q_OS_WIN) - *host_mode = Option::HOST_WIN_MODE; - *target_mode = Option::TARG_UNIX_MODE; #else - *host_mode = Option::HOST_UNIX_MODE; *target_mode = Option::TARG_UNIX_MODE; #endif } else if (gen == "MSVC.NET" || gen == "BMAKE" || gen == "MSBUILD") { - *host_mode = Option::HOST_WIN_MODE; *target_mode = Option::TARG_WIN_MODE; } else if (gen == "MINGW") { -#if defined(Q_OS_MAC) - *host_mode = Option::HOST_MACX_MODE; -#elif defined(Q_OS_UNIX) - *host_mode = Option::HOST_UNIX_MODE; -#else - *host_mode = Option::HOST_WIN_MODE; -#endif *target_mode = Option::TARG_WIN_MODE; } else if (gen == "PROJECTBUILDER" || gen == "XCODE") { - *host_mode = Option::HOST_MACX_MODE; *target_mode = Option::TARG_MACX_MODE; } else if (gen == "GBUILD") { - *host_mode = Option::HOST_UNIX_MODE; *target_mode = Option::TARG_INTEGRITY_MODE; } else { fprintf(stderr, "Unknown generator specified: %s\n", gen.toLatin1().constData()); diff --git a/qmake/generators/metamakefile.h b/qmake/generators/metamakefile.h index 4e2e7c502e..a6889fd6cd 100644 --- a/qmake/generators/metamakefile.h +++ b/qmake/generators/metamakefile.h @@ -67,8 +67,7 @@ public: static MetaMakefileGenerator *createMetaGenerator(QMakeProject *proj, const QString &name, bool op=true, bool *success = 0); static MakefileGenerator *createMakefileGenerator(QMakeProject *proj, bool noIO = false); - static bool modesForGenerator(const QString &generator, - Option::HOST_MODE *host_mode, Option::TARG_MODE *target_mode); + static bool modeForGenerator(const QString &generator, Option::TARG_MODE *target_mode); inline QMakeProject *projectFile() const { return project; } diff --git a/qmake/option.cpp b/qmake/option.cpp index 73c2e32abc..defe2bff28 100644 --- a/qmake/option.cpp +++ b/qmake/option.cpp @@ -401,6 +401,13 @@ static QStringList detectShellPath() int Option::init(int argc, char **argv) { +#if defined(Q_OS_MAC) + Option::host_mode = Option::HOST_MACX_MODE; +#elif defined(Q_OS_UNIX) + Option::host_mode = Option::HOST_UNIX_MODE; +#else + Option::host_mode = Option::HOST_WIN_MODE; +#endif Option::application_argv0 = 0; Option::cpp_moc_mod = ""; Option::h_moc_mod = "moc_"; @@ -554,32 +561,24 @@ Option::init(int argc, char **argv) } } else if (Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT) { #if defined(Q_OS_MAC) - Option::host_mode = Option::HOST_MACX_MODE; Option::target_mode = Option::TARG_MACX_MODE; #elif defined(Q_OS_UNIX) - Option::host_mode = Option::HOST_UNIX_MODE; Option::target_mode = Option::TARG_UNIX_MODE; #else - Option::host_mode = Option::HOST_WIN_MODE; Option::target_mode = Option::TARG_WIN_MODE; #endif } //defaults for globals - if (Option::host_mode != Option::HOST_UNKNOWN_MODE) - applyHostMode(); - return QMAKE_CMDLINE_SUCCESS; -} + if (Option::host_mode == Option::HOST_WIN_MODE) { + Option::dir_sep = "\\"; + Option::obj_ext = ".obj"; + } else { + Option::dir_sep = "/"; + Option::obj_ext = ".o"; + } -void Option::applyHostMode() -{ - if (Option::host_mode == Option::HOST_WIN_MODE) { - Option::dir_sep = "\\"; - Option::obj_ext = ".obj"; - } else { - Option::dir_sep = "/"; - Option::obj_ext = ".o"; - } + return QMAKE_CMDLINE_SUCCESS; } void Option::prepareProject(const QString &pfile) diff --git a/qmake/option.h b/qmake/option.h index 88ad989b82..10d696ec68 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -106,7 +106,6 @@ struct Option //both of these must be called.. static int init(int argc=0, char **argv=0); //parse cmdline - static void applyHostMode(); static void prepareProject(const QString &pfile); static bool postProcessProject(QMakeProject *); diff --git a/qmake/project.cpp b/qmake/project.cpp index 360c0958f1..1eb41ecfda 100644 --- a/qmake/project.cpp +++ b/qmake/project.cpp @@ -1600,37 +1600,27 @@ QMakeProject::read(uchar cmd) void QMakeProject::validateModes() { - if (Option::host_mode == Option::HOST_UNKNOWN_MODE - || Option::target_mode == Option::TARG_UNKNOWN_MODE) { - Option::HOST_MODE host_mode; + if (Option::target_mode == Option::TARG_UNKNOWN_MODE) { Option::TARG_MODE target_mode; const QStringList &gen = base_vars.value("MAKEFILE_GENERATOR"); if (gen.isEmpty()) { fprintf(stderr, "%s:%d: Using OS scope before setting MAKEFILE_GENERATOR\n", parser.file.toLatin1().constData(), parser.line_no); - } else if (MetaMakefileGenerator::modesForGenerator(gen.first(), - &host_mode, &target_mode)) { - if (Option::host_mode == Option::HOST_UNKNOWN_MODE) { - Option::host_mode = host_mode; - Option::applyHostMode(); - } - - if (Option::target_mode == Option::TARG_UNKNOWN_MODE) { - const QStringList &tgt = base_vars.value("TARGET_PLATFORM"); - if (!tgt.isEmpty()) { - const QString &os = tgt.first(); - if (os == "unix") - Option::target_mode = Option::TARG_UNIX_MODE; - else if (os == "macx") - Option::target_mode = Option::TARG_MACX_MODE; - else if (os == "win32") - Option::target_mode = Option::TARG_WIN_MODE; - else - fprintf(stderr, "Unknown target platform specified: %s\n", - os.toLatin1().constData()); - } else { - Option::target_mode = target_mode; - } + } else if (MetaMakefileGenerator::modeForGenerator(gen.first(), &target_mode)) { + const QStringList &tgt = base_vars.value("TARGET_PLATFORM"); + if (!tgt.isEmpty()) { + const QString &os = tgt.first(); + if (os == "unix") + Option::target_mode = Option::TARG_UNIX_MODE; + else if (os == "macx") + Option::target_mode = Option::TARG_MACX_MODE; + else if (os == "win32") + Option::target_mode = Option::TARG_WIN_MODE; + else + fprintf(stderr, "Unknown target platform specified: %s\n", + os.toLatin1().constData()); + } else { + Option::target_mode = target_mode; } } } @@ -1752,7 +1742,6 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash