From c584f3d9a8e9dec113d9036729a6fbee77d4976f Mon Sep 17 00:00:00 2001 From: Kai Koehne Date: Thu, 24 Oct 2013 13:15:17 +0200 Subject: Fix check for ICU on MinGW Newer ICU versions do not generate a .lib file any more ... Also the check doesn't take e.g. static debug builds into account. Instead of trying to enumerate all possible variations, just rely on the header check. That's what we're doing for the other libs, too. Change-Id: Idc0527f0e8ad90f298337d4ab635c7aa6a35c351 Reviewed-by: Jonathan Liu Reviewed-by: Friedemann Kleint Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index c3382a5e0a..15c35a630f 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2103,9 +2103,7 @@ bool Configure::checkAvailability(const QString &part) available = findFile("pcre.h"); else if (part == "ICU") - available = findFile("unicode/utypes.h") && findFile("unicode/ucol.h") && findFile("unicode/ustring.h") - && (findFile("icuin.lib") || findFile("sicuin.lib") - || findFile("libicuin.lib") || findFile("libsicuin.lib")); // "lib" prefix for mingw, 's' prefix for static + available = findFile("unicode/utypes.h") && findFile("unicode/ucol.h") && findFile("unicode/ustring.h"); else if (part == "ANGLE") { available = checkAngleAvailability(); -- cgit v1.2.3 From c760d2dbfdaf743052be620f58c1f123420e9086 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Tue, 8 Oct 2013 19:41:16 +0200 Subject: Rewrite qmake's exclusive-build feature We used to compute the default exclusive build directory, eg 'debug', at configure time, and then set OBJECTS_DIR, MOC_DIR, etc to include this hard-coded default exclusive build directory. We then had to run a post- process step where we replaced the 'debug' part with the current actual exclusive build pass, eg 'release', resulting in long-standing bugs such as QTBUG-491 where we end up replacing parts of the build output dirs that were not part of the original exclusive build directory. We now set the OBJECTS_DIR, MOC_DIR, etc defaults in configure like before, but they do not include any exclusive-build information. The exclusive build directory is handled as a separate step in default_post where we adjust all entries in QMAKE_DIR_REPLACE to be exclusive directories. For backwards compatibility the new exclusive build behavior is only enabled for variables named by QMAKE_DIR_REPLACE_SANE, which for Qt itself applies globally to everything but DESTDIR, and for libs and tools also applies to DESTDIR. The reason for leaving out DESTDIR in the general case is because many tests and examples assume the old behavior for DESTDIR. A side effect of including all the other variables for Qt libs and tools is that the PCH output dir will be uniformly set, which has been an issue on Windows in the past. The addExclusiveBuilds function now takes two or more arguments, each argument being the key for an exclusive build, which can be customized eg. using $$key.{name,target,dir_affix}. Passing more than two arguments results in three/four/etc-way exclusive builds, eg debug/release/profile. Exclusive builds can also be combined, eg static/shared + debug/release by making two calls to the function. We also handle individual targets of combined exclusive builds, eg static/shared + debug/release, meaning it is possible to run 'make debug' to build both static-debug and shared-debug. Task-number: QTBUG-491 Change-Id: I02841dbbd065ac07d413dfb45cfcfe4c013674ac Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 8 -------- 1 file changed, 8 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 15c35a630f..cc35b425a6 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2613,7 +2613,6 @@ void Configure::generateOutputVars() if (dictionary[ "FORCEDEBUGINFO" ] == "yes") qmakeConfig += "force_debug_info"; qmakeConfig += dictionary[ "BUILD" ]; - dictionary[ "QMAKE_OUTDIR" ] = dictionary[ "BUILD" ]; if (buildParts.isEmpty()) { buildParts = defaultBuildParts; @@ -2638,9 +2637,6 @@ void Configure::generateOutputVars() qmakeVars += "QMAKE_QT_VERSION_OVERRIDE = " + version.left(version.indexOf('.')); version.remove(QLatin1Char('.')); } - dictionary[ "QMAKE_OUTDIR" ] += "_shared"; - } else { - dictionary[ "QMAKE_OUTDIR" ] += "_static"; } if (dictionary[ "ACCESSIBILITY" ] == "yes") @@ -2771,10 +2767,6 @@ void Configure::generateOutputVars() if (dictionary.contains("XQMAKESPEC") && dictionary[ "XQMAKESPEC" ].startsWith("linux")) qtConfig += "rpath"; - qmakeVars += QString("OBJECTS_DIR = ") + formatPath(".obj/" + dictionary["QMAKE_OUTDIR"]); - qmakeVars += QString("MOC_DIR = ") + formatPath(".moc/" + dictionary["QMAKE_OUTDIR"]); - qmakeVars += QString("RCC_DIR = ") + formatPath(".rcc/" + dictionary["QMAKE_OUTDIR"]); - if (!qmakeDefines.isEmpty()) qmakeVars += QString("DEFINES += ") + qmakeDefines.join(' '); if (!qmakeIncludes.isEmpty()) -- cgit v1.2.3 From d7a0d243a984f032a8f838e7b44297eac81ef190 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 25 Oct 2013 21:04:35 +0200 Subject: validate qconfig-*.h against qfeatures.txt Change-Id: I59b7e30cfaa2b1bf2c5d4a3e04b5169f3c9439b5 Reviewed-by: Joerg Bornemann --- tools/configure/configureapp.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index cc35b425a6..0fd35dd2fa 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2860,6 +2860,11 @@ void Configure::generateCachefile() moduleStream << "QT_BUILD_PARTS += " << buildParts.join(' ') << endl; if (!skipModules.isEmpty()) moduleStream << "QT_SKIP_MODULES += " << skipModules.join(' ') << endl; + QString qcpath = dictionary["QCONFIG_PATH"]; + QString qlpath = sourcePath + "/src/corelib/global/"; + if (qcpath.startsWith(qlpath)) + qcpath.remove(0, qlpath.length()); + moduleStream << "QT_QCONFIG_PATH = " << qcpath << endl; moduleStream << endl; moduleStream << "host_build {" << endl; -- cgit v1.2.3 From 6a508ee5b21dca0ae4e49ab5f5604345106ed0a9 Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Fri, 25 Oct 2013 17:51:28 +0200 Subject: bring the windows configure -qconfig handling in line with the unix one on the way, this significantly simplifies the code. Change-Id: I24f0a517e62cc4b913ffef5cab096e721653c013 Reviewed-by: Joerg Bornemann Reviewed-by: Thiago Macieira --- tools/configure/configureapp.cpp | 69 ++++++++++------------------------------ tools/configure/configureapp.h | 1 - 2 files changed, 16 insertions(+), 54 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 0fd35dd2fa..5d4ce84941 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1432,20 +1432,7 @@ void Configure::parseCmdLine() void Configure::validateArgs() { // Validate the specified config - - // Get all possible configurations from the file system. - QDir dir; - QStringList filters; - filters << "qconfig-*.h"; - dir.setNameFilters(filters); - dir.setPath(sourcePath + "/src/corelib/global/"); - - QStringList stringList = dir.entryList(); - - QStringList::Iterator it; - for (it = stringList.begin(); it != stringList.end(); ++it) - allConfigs << it->remove("qconfig-").remove(".h"); - allConfigs << "full"; + QString cfgpath = sourcePath + "/src/corelib/global/qconfig-" + dictionary["QCONFIG"] + ".h"; // Try internal configurations first. QStringList possible_configs = QStringList() @@ -1457,23 +1444,22 @@ void Configure::validateArgs() int index = possible_configs.indexOf(dictionary["QCONFIG"]); if (index >= 0) { for (int c = 0; c <= index; c++) { - qmakeConfig += possible_configs[c] + "-config"; + qtConfig += possible_configs[c] + "-config"; } + if (dictionary["QCONFIG"] != "full") + dictionary["QCONFIG_PATH"] = cfgpath; return; } - // If the internal configurations failed, try others. - QStringList::Iterator config; - for (config = allConfigs.begin(); config != allConfigs.end(); ++config) { - if ((*config) == dictionary[ "QCONFIG" ]) - break; - } - if (config == allConfigs.end()) { - dictionary[ "HELP" ] = "yes"; - cout << "No such configuration \"" << qPrintable(dictionary[ "QCONFIG" ]) << "\"" << endl ; + if (!QFileInfo::exists(cfgpath)) { + cfgpath = QFileInfo(dictionary["QCONFIG"]).absoluteFilePath(); + if (!QFileInfo::exists(cfgpath)) { + dictionary[ "HELP" ] = "yes"; + cout << "No such configuration \"" << qPrintable(dictionary["QCONFIG"]) << "\"" << endl ; + return; + } } - else - qmakeConfig += (*config) + "-config"; + dictionary["QCONFIG_PATH"] = cfgpath; } // Output helper functions --------------------------------[ Start ]- @@ -1784,6 +1770,9 @@ bool Configure::displayHelp() desc( "-sysroot ", "Sets as the target compiler's and qmake's sysroot and also sets pkg-config paths."); desc( "-no-gcc-sysroot", "When using -sysroot, it disables the passing of --sysroot to the compiler.\n"); + desc( "-qconfig ", "Use src/corelib/global/qconfig-.h rather than the\n" + "default 'full'.\n"); + desc("NIS", "no", "-no-nis", "Do not compile NIS support."); desc("NIS", "yes", "-nis", "Compile NIS support.\n"); @@ -1935,13 +1924,6 @@ bool Configure::displayHelp() desc("MSVC_MP", "no", "-no-mp", "Do not use multiple processors for compiling with MSVC"); desc("MSVC_MP", "yes", "-mp", "Use multiple processors for compiling with MSVC (-MP).\n"); -/* We do not support -qconfig on Windows yet - - desc( "-qconfig ", "Use src/tools/qconfig-local.h rather than the default.\nPossible values for local:"); - for (int i=0; i", "Run configure with the parameters from file configure_.cache."); desc( "-saveconfig ", "Run configure and save the parameters in file configure_.cache."); desc( "-redo", "Run configure with the same parameters as last time.\n"); @@ -2740,23 +2722,6 @@ void Configure::generateOutputVars() if (dictionary[ "SYSTEM_PROXIES" ] == "yes") qtConfig += "system-proxies"; - // Add config levels -------------------------------------------- - QStringList possible_configs = QStringList() - << "minimal" - << "small" - << "medium" - << "large" - << "full"; - - QString set_config = dictionary["QCONFIG"]; - if (possible_configs.contains(set_config)) { - foreach (const QString &cfg, possible_configs) { - qtConfig += (cfg + "-config"); - if (cfg == set_config) - break; - } - } - if (dictionary.contains("XQMAKESPEC") && (dictionary["QMAKESPEC"] != dictionary["XQMAKESPEC"])) { qmakeConfig += "cross_compile"; dictionary["CROSS_COMPILE"] = "yes"; @@ -3280,10 +3245,8 @@ void Configure::generateConfigfiles() if (dictionary[ "QCONFIG" ] == "full") { tmpStream << "/* Everything */" << endl; } else { - QString configName("qconfig-" + dictionary[ "QCONFIG" ] + ".h"); - tmpStream << "/* Copied from " << configName << "*/" << endl; tmpStream << "#ifndef QT_BOOTSTRAPPED" << endl; - QFile inFile(sourcePath + "/src/corelib/global/" + configName); + QFile inFile(dictionary["QCONFIG_PATH"]); if (inFile.open(QFile::ReadOnly)) { tmpStream << QTextStream(&inFile).readAll(); inFile.close(); diff --git a/tools/configure/configureapp.h b/tools/configure/configureapp.h index 8a22cea6ec..bf0f61639f 100644 --- a/tools/configure/configureapp.h +++ b/tools/configure/configureapp.h @@ -113,7 +113,6 @@ private: QStringList skipModules; QStringList licensedModules; QStringList allSqlDrivers; - QStringList allConfigs; QStringList disabledModules; QStringList enabledModules; QStringList modules; -- cgit v1.2.3 From d8bf317546bcfab0b6b50375218429fa9d470705 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 1 Oct 2013 12:34:20 +0200 Subject: make qreal double by default on all platforms On modern ARM CPUs there is no speed difference between float and double anymore, so let's rather use double for qreal to avoid rounding and precision issues. Like this we also get much better compatibility with our desktop OSes. This is not binary compatible on ARM, but the old behavior can be restored by passing -qreal float to configure. Change-Id: I2a4b61e19a3dfa6b0bd76734cecf2634c97207fc Reviewed-by: Thiago Macieira --- tools/configure/configureapp.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 5d4ce84941..4c323a3540 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -196,6 +196,7 @@ Configure::Configure(int& argc, char** argv) dictionary[ "SLOG2" ] = "no"; dictionary[ "SYSTEM_PROXIES" ] = "no"; dictionary[ "WERROR" ] = "auto"; + dictionary[ "QREAL" ] = "double"; //Only used when cross compiling. dictionary[ "QT_INSTALL_SETTINGS" ] = "/etc/xdg"; @@ -418,6 +419,12 @@ void Configure::parseCmdLine() break; dictionary[ "QCONFIG" ] = configCmdLine.at(i); } + else if (configCmdLine.at(i) == "-qreal") { + ++i; + if (i == argCount) + break; + dictionary[ "QREAL" ] = configCmdLine.at(i); + } else if (configCmdLine.at(i) == "-release") { dictionary[ "BUILD" ] = "release"; @@ -1876,6 +1883,9 @@ bool Configure::displayHelp() desc("PROCESS", "full", "-fully-process", "Generate Makefiles/Project files for the entire Qt\ntree."); desc("PROCESS", "no", "-dont-process", "Do not generate Makefiles/Project files.\n"); + desc( "-qreal [double|float]", "typedef qreal to the specified type. The default is double.\n" + "Note that changing this flag affects binary compatibility.\n"); + desc("RTTI", "no", "-no-rtti", "Do not compile runtime type information."); desc("RTTI", "yes", "-rtti", "Compile runtime type information."); desc("STRIP", "no", "-no-strip", "Do not strip libraries and executables of debug info when installing."); @@ -3298,6 +3308,8 @@ void Configure::generateConfigfiles() if (dictionary[ "NEON" ] == "yes") tmpStream << "#define QT_COMPILER_SUPPORTS_NEON" << endl; + if (dictionary["QREAL"] != "double") + tmpStream << "#define QT_COORD_TYPE " << dictionary["QREAL"] << endl; tmpStream << endl << "// Compile time features" << endl; -- cgit v1.2.3 From d0f8ba748e4ee93b4b2a205421a0340b2d146ce5 Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Thu, 31 Oct 2013 13:31:11 +0100 Subject: Don't build ANGLE while xcompile for QNX Change-Id: Iacc0f4bb776943b21a94b52417a77112facad20f Reviewed-by: Wolfgang Bremer Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 4c323a3540..35231aecd2 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1647,6 +1647,7 @@ void Configure::applySpecSpecifics() dictionary["STACK_PROTECTOR_STRONG"] = "auto"; dictionary["SLOG2"] = "auto"; dictionary["QT_XKBCOMMON"] = "no"; + dictionary[ "ANGLE" ] = "no"; } else if (platform() == ANDROID) { dictionary[ "REDUCE_EXPORTS" ] = "yes"; dictionary[ "BUILD" ] = "release"; -- cgit v1.2.3 From d35c8fe52149f0adb7c81da804a5b98cc54a0abe Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Fri, 1 Nov 2013 09:40:27 +0100 Subject: CMake: Add the qreal typedef type to the Qt5::Core target. This way, a Qt compiled with qreal=float and one linked with qreal=double can not be linked by a single downstream. That is diagnosed at cmake-time. Change-Id: I9183dbcfef181fadea5321d3154948e8258e4a2a Reviewed-by: Oswald Buddenhagen Reviewed-by: Stephen Kelly --- tools/configure/configureapp.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 35231aecd2..c67b245228 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2850,6 +2850,7 @@ void Configure::generateCachefile() moduleStream << " QT_CPU_FEATURES." << dictionary["QT_ARCH"] << " = " << dictionary["QT_CPU_FEATURES"] << endl; moduleStream << "}" << endl; + moduleStream << "QT_COORD_TYPE += " << dictionary["QREAL"] << endl; if (dictionary["QT_EDITION"] != "QT_EDITION_OPENSOURCE") moduleStream << "DEFINES *= QT_EDITION=QT_EDITION_DESKTOP" << endl; -- cgit v1.2.3 From cad65f2632ab887184f33d9b6ccb4b60fa54f481 Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Mon, 11 Nov 2013 16:47:54 +0100 Subject: Detect architecture before auto detection Some compile checks may depend on the architecture, e.g., NEON is only available for ARM, so it makes no sense to check it for this architecture. Therefore we need to run the architecture check before we auto detect settings. Task-number: QTBUG-34743 Change-Id: I53208d25b0ae0fd93cccc7394307b8ee286576a2 Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 3 +++ tools/configure/main.cpp | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index c67b245228..67333457a7 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2212,6 +2212,9 @@ void Configure::autoDetection() { cout << "Running configuration tests..." << endl; + // Auto-detect CPU architectures. + detectArch(); + if (dictionary["C++11"] == "auto") { if (!dictionary["QMAKESPEC"].contains("msvc")) dictionary["C++11"] = tryCompileProject("common/c++11") ? "yes" : "no"; diff --git a/tools/configure/main.cpp b/tools/configure/main.cpp index fb815b287e..1e6aa3f298 100644 --- a/tools/configure/main.cpp +++ b/tools/configure/main.cpp @@ -94,9 +94,6 @@ int runConfigure( int argc, char** argv ) // Auto-detect modules and settings. app.autoDetection(); - // ... and the CPU architectures. - app.detectArch(); - // After reading all command-line arguments, and doing all the // auto-detection, it's time to do some last minute validation. // If the validation fails, we cannot continue. -- cgit v1.2.3 From 6ac1636c7148821726e2024711d828768d7ab87b Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Mon, 11 Nov 2013 16:48:33 +0100 Subject: Autodetect Neon support under Windows This is done to autodetect Neon support for QNX. It might make sense for other platforms as well, so enable the compile check for all target platforms. Task-number: QTBUG-34743 Change-Id: I1d149d1942ce0caa288cb56491e4a0ba455dda7d Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 67333457a7..b751338355 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -183,7 +183,7 @@ Configure::Configure(int& argc, char** argv) dictionary[ "PLUGIN_MANIFESTS" ] = "yes"; dictionary[ "DIRECTWRITE" ] = "no"; dictionary[ "NIS" ] = "no"; - dictionary[ "NEON" ] = "no"; + dictionary[ "NEON" ] = "auto"; dictionary[ "LARGE_FILE" ] = "yes"; dictionary[ "FONT_CONFIG" ] = "no"; dictionary[ "POSIX_IPC" ] = "no"; @@ -2200,6 +2200,8 @@ bool Configure::checkAvailability(const QString &part) available = (platform() == QNX || platform() == BLACKBERRY) && compilerSupportsFlag("qcc -fstack-protector-strong"); } else if (part == "SLOG2") { available = tryCompileProject("unix/slog2"); + } else if (part == "NEON") { + available = (dictionary["QT_ARCH"] == "arm") && tryCompileProject("unix/neon"); } return available; @@ -2298,6 +2300,8 @@ void Configure::autoDetection() dictionary["AVX2"] = checkAvailability("AVX2") ? "yes" : "no"; if (dictionary["IWMMXT"] == "auto") dictionary["IWMMXT"] = checkAvailability("IWMMXT") ? "yes" : "no"; + if (dictionary["NEON"] == "auto") + dictionary["NEON"] = checkAvailability("NEON") ? "yes" : "no"; if (dictionary["OPENSSL"] == "auto") dictionary["OPENSSL"] = checkAvailability("OPENSSL") ? "yes" : "no"; if (dictionary["DBUS"] == "auto") -- cgit v1.2.3 From 98a83d1549ca1c5c4b734a218390441754cf7590 Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Mon, 11 Nov 2013 16:51:09 +0100 Subject: Autodetect Fontconfig for QNX Task-number: QTBUG-34743 Change-Id: Ib9bba874137b1ef081cb7e8450746abbe983ebc9 Reviewed-by: Joerg Bornemann Reviewed-by: Konstantin Ritt Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index b751338355..62a39cdfd5 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -1641,6 +1641,7 @@ void Configure::applySpecSpecifics() dictionary[ "QT_CUPS" ] = "no"; dictionary[ "QT_GLIB" ] = "no"; dictionary[ "QT_ICONV" ] = "no"; + dictionary[ "FONT_CONFIG" ] = "auto"; dictionary["DECORATIONS"] = "default windows styled"; } else if ((platform() == QNX) || (platform() == BLACKBERRY)) { @@ -1648,6 +1649,7 @@ void Configure::applySpecSpecifics() dictionary["SLOG2"] = "auto"; dictionary["QT_XKBCOMMON"] = "no"; dictionary[ "ANGLE" ] = "no"; + dictionary[ "FONT_CONFIG" ] = "auto"; } else if (platform() == ANDROID) { dictionary[ "REDUCE_EXPORTS" ] = "yes"; dictionary[ "BUILD" ] = "release"; @@ -2202,6 +2204,8 @@ bool Configure::checkAvailability(const QString &part) available = tryCompileProject("unix/slog2"); } else if (part == "NEON") { available = (dictionary["QT_ARCH"] == "arm") && tryCompileProject("unix/neon"); + } else if (part == "FONT_CONFIG") { + available = tryCompileProject("unix/fontconfig"); } return available; @@ -2346,6 +2350,9 @@ void Configure::autoDetection() if (dictionary["QT_EVENTFD"] == "auto") dictionary["QT_EVENTFD"] = checkAvailability("QT_EVENTFD") ? "yes" : "no"; + if (dictionary["FONT_CONFIG"] == "auto") + dictionary["FONT_CONFIG"] = checkAvailability("FONT_CONFIG") ? "yes" : "no"; + // Mark all unknown "auto" to the default value.. for (QMap::iterator i = dictionary.begin(); i != dictionary.end(); ++i) { if (i.value() == "auto") @@ -3529,6 +3536,7 @@ void Configure::displayConfig() sout << " JPEG support............" << dictionary[ "JPEG" ] << endl; sout << " PNG support............." << dictionary[ "PNG" ] << endl; sout << " FreeType support........" << dictionary[ "FREETYPE" ] << endl; + sout << " Fontconfig support......" << dictionary[ "FONT_CONFIG" ] << endl; sout << " HarfBuzz-NG support....." << dictionary[ "HARFBUZZ" ] << endl; sout << " PCRE support............" << dictionary[ "PCRE" ] << endl; sout << " ICU support............." << dictionary[ "ICU" ] << endl; -- cgit v1.2.3 From 9c999dcc63e67031c5e5c12b513970f58c89f308 Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Mon, 11 Nov 2013 16:49:31 +0100 Subject: Use compile check instead of searching header for ICU The findFile would need to look though all include paths the compiler is supporting, which can be very hard to support for multiply compilers. It is way easier to use a compile check to catch all include paths the compiler supports. This fix is needed to find correctly ICU under QNX. Task-number: QTBUG-34743 Change-Id: I4f755042a76882b304b058355cf54e37b25df61d Reviewed-by: Joerg Bornemann Reviewed-by: Oswald Buddenhagen --- tools/configure/configureapp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 62a39cdfd5..ff7d8d93bc 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -2098,7 +2098,7 @@ bool Configure::checkAvailability(const QString &part) available = findFile("pcre.h"); else if (part == "ICU") - available = findFile("unicode/utypes.h") && findFile("unicode/ucol.h") && findFile("unicode/ustring.h"); + available = tryCompileProject("unix/icu"); else if (part == "ANGLE") { available = checkAngleAvailability(); -- cgit v1.2.3 From d1990a71323cad1f431969506d8b1c1dfc2fa0ac Mon Sep 17 00:00:00 2001 From: Oswald Buddenhagen Date: Tue, 12 Nov 2013 19:42:41 +0100 Subject: don't automatically display help on error it's entirely pointless to flood the user with information and force him to scroll back when he most likely just made a typo. apart from that, this reduces the data dependencies, thus easing further refactoring. Change-Id: I7b24274d453de54a4f02481a66d77e27d4ab0657 Reviewed-by: Thiago Macieira --- tools/configure/configureapp.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index ff7d8d93bc..57c22a23cc 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -384,7 +384,7 @@ void Configure::parseCmdLine() configCmdLine.clear(); reloadCmdLine(); } else { - dictionary[ "HELP" ] = "yes"; + dictionary[ "DONE" ] = "error"; } i = 0; } @@ -1304,7 +1304,7 @@ void Configure::parseCmdLine() } else { - dictionary[ "HELP" ] = "yes"; + dictionary[ "DONE" ] = "error"; cout << "Unknown option " << configCmdLine.at(i) << endl; break; } @@ -1324,7 +1324,7 @@ void Configure::parseCmdLine() if (dictionary["QMAKESPEC"].toLower() == "features" || !mkspecs.contains(dictionary["QMAKESPEC"], Qt::CaseInsensitive)) { - dictionary[ "HELP" ] = "yes"; + dictionary[ "DONE" ] = "error"; if (dictionary ["QMAKESPEC_FROM"] == "commandline") { cout << "Invalid option \"" << dictionary["QMAKESPEC"] << "\" for -platform." << endl; } else if (dictionary ["QMAKESPEC_FROM"] == "env") { @@ -1362,10 +1362,10 @@ void Configure::parseCmdLine() const QStringList family = devices.filter(dictionary["XQMAKESPEC"], Qt::CaseInsensitive); if (family.isEmpty()) { - dictionary["HELP"] = "yes"; + dictionary[ "DONE" ] = "error"; cout << "Error: No device matching '" << dictionary["XQMAKESPEC"] << "'." << endl; } else if (family.size() > 1) { - dictionary["HELP"] = "yes"; + dictionary[ "DONE" ] = "error"; cout << "Error: Multiple matches for device '" << dictionary["XQMAKESPEC"] << "'. Candidates are:" << endl; @@ -1380,7 +1380,7 @@ void Configure::parseCmdLine() // Ensure that -spec (XQMAKESPEC) exists in the mkspecs folder as well if (dictionary.contains("XQMAKESPEC") && !mkspecs.contains(dictionary["XQMAKESPEC"], Qt::CaseInsensitive)) { - dictionary["HELP"] = "yes"; + dictionary[ "DONE" ] = "error"; cout << "Invalid option \"" << dictionary["XQMAKESPEC"] << "\" for -xplatform." << endl; } } @@ -1432,7 +1432,8 @@ void Configure::parseCmdLine() for (QStringList::Iterator it = disabledModules.begin(); it != disabledModules.end(); ++it) qtConfig.removeAll(*it); - if ((dictionary[ "REDO" ] != "yes") && (dictionary[ "HELP" ] != "yes")) + if ((dictionary[ "REDO" ] != "yes") && (dictionary[ "HELP" ] != "yes") + && (dictionary[ "DONE" ] != "error")) saveCmdLine(); } @@ -1461,7 +1462,7 @@ void Configure::validateArgs() if (!QFileInfo::exists(cfgpath)) { cfgpath = QFileInfo(dictionary["QCONFIG"]).absoluteFilePath(); if (!QFileInfo::exists(cfgpath)) { - dictionary[ "HELP" ] = "yes"; + dictionary[ "DONE" ] = "error"; cout << "No such configuration \"" << qPrintable(dictionary["QCONFIG"]) << "\"" << endl ; return; } @@ -2825,7 +2826,6 @@ void Configure::generateOutputVars() cout << "Configure could not detect your compiler. QMAKESPEC must either" << endl << "be defined as an environment variable, or specified as an" << endl << "argument with -platform" << endl; - dictionary[ "HELP" ] = "yes"; QStringList winPlatforms; QDir mkspecsDir(sourcePath + "/mkspecs"); -- cgit v1.2.3 From ca2440e2b10368c7d8b849ee1b504a7d587dd1a9 Mon Sep 17 00:00:00 2001 From: Andreas Holzammer Date: Thu, 21 Nov 2013 12:58:22 +0100 Subject: Add PPS configure check Plain QNX 6.5.0 does not have a libpps, the new QNX has a libpps and BlackBerry has it as well. So we need a configure check to not open another mkspec for this platform. This fixes the plain QNX 6.5.0 build. Change-Id: Id4b3876f2385bcb5f3df426945532e7e26133f24 Reviewed-by: Oswald Buddenhagen Reviewed-by: Rafael Roquetto --- tools/configure/configureapp.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 57c22a23cc..e2fef2c665 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -194,6 +194,7 @@ Configure::Configure(int& argc, char** argv) dictionary[ "QT_CUPS" ] = "auto"; dictionary[ "CFG_GCC_SYSROOT" ] = "yes"; dictionary[ "SLOG2" ] = "no"; + dictionary[ "PPS" ] = "no"; dictionary[ "SYSTEM_PROXIES" ] = "no"; dictionary[ "WERROR" ] = "auto"; dictionary[ "QREAL" ] = "double"; @@ -879,6 +880,10 @@ void Configure::parseCmdLine() dictionary[ "SLOG2" ] = "no"; } else if (configCmdLine.at(i) == "-slog2") { dictionary[ "SLOG2" ] = "yes"; + } else if (configCmdLine.at(i) == "-no-pps") { + dictionary[ "PPS" ] = "no"; + } else if (configCmdLine.at(i) == "-pps") { + dictionary[ "PPS" ] = "yes"; } else if (configCmdLine.at(i) == "-no-system-proxies") { dictionary[ "SYSTEM_PROXIES" ] = "no"; } else if (configCmdLine.at(i) == "-system-proxies") { @@ -1648,6 +1653,7 @@ void Configure::applySpecSpecifics() } else if ((platform() == QNX) || (platform() == BLACKBERRY)) { dictionary["STACK_PROTECTOR_STRONG"] = "auto"; dictionary["SLOG2"] = "auto"; + dictionary["PPS"] = "auto"; dictionary["QT_XKBCOMMON"] = "no"; dictionary[ "ANGLE" ] = "no"; dictionary[ "FONT_CONFIG" ] = "auto"; @@ -1864,6 +1870,9 @@ bool Configure::displayHelp() if ((platform() == QNX) || (platform() == BLACKBERRY)) { desc("SLOG2", "yes", "-slog2", "Compile with slog2 support."); desc("SLOG2", "no", "-no-slog2", "Do not compile with slog2 support."); + + desc("PPS", "yes", "-pps", "Compile with PPS support."); + desc("PPS", "no", "-no-pps", "Do not compile with PPS support."); } desc("ANGLE", "yes", "-angle", "Use the ANGLE implementation of OpenGL ES 2.0."); @@ -2203,6 +2212,8 @@ bool Configure::checkAvailability(const QString &part) available = (platform() == QNX || platform() == BLACKBERRY) && compilerSupportsFlag("qcc -fstack-protector-strong"); } else if (part == "SLOG2") { available = tryCompileProject("unix/slog2"); + } else if (part == "PPS") { + available = (platform() == QNX || platform() == BLACKBERRY) && tryCompileProject("unix/pps"); } else if (part == "NEON") { available = (dictionary["QT_ARCH"] == "arm") && tryCompileProject("unix/neon"); } else if (part == "FONT_CONFIG") { @@ -2348,6 +2359,10 @@ void Configure::autoDetection() dictionary["SLOG2"] = checkAvailability("SLOG2") ? "yes" : "no"; } + if (dictionary["PPS"] == "auto") { + dictionary["PPS"] = checkAvailability("PPS") ? "yes" : "no"; + } + if (dictionary["QT_EVENTFD"] == "auto") dictionary["QT_EVENTFD"] = checkAvailability("QT_EVENTFD") ? "yes" : "no"; @@ -3174,6 +3189,9 @@ void Configure::generateQConfigPri() if (dictionary[ "SLOG2" ] == "yes") configStream << " slog2"; + if (dictionary[ "PPS" ] == "yes") + configStream << " qqnx_pps"; + if (dictionary["DIRECTWRITE"] == "yes") configStream << " directwrite"; @@ -3540,8 +3558,10 @@ void Configure::displayConfig() sout << " HarfBuzz-NG support....." << dictionary[ "HARFBUZZ" ] << endl; sout << " PCRE support............" << dictionary[ "PCRE" ] << endl; sout << " ICU support............." << dictionary[ "ICU" ] << endl; - if ((platform() == QNX) || (platform() == BLACKBERRY)) + if ((platform() == QNX) || (platform() == BLACKBERRY)) { sout << " SLOG2 support..........." << dictionary[ "SLOG2" ] << endl; + sout << " PPS support............." << dictionary[ "PPS" ] << endl; + } sout << " ANGLE..................." << dictionary[ "ANGLE" ] << endl; sout << endl; -- cgit v1.2.3 From 58f0a9ba5a38295aed1cc278d87077d23e6bf19c Mon Sep 17 00:00:00 2001 From: Joerg Bornemann Date: Fri, 22 Nov 2013 18:36:25 +0100 Subject: do not embed manifests into Qt plugins by default For plugins that are built with a different (but binary compatible) MSVC runtime than Qt is built with, the plugin's embedded manifests prevent a successful loading of the plugin. There's no need for having the plugins tied to a certain CRT version as they are bound to Qt's CRT version. Task-number: QTBUG-1297 Change-Id: I6ae4cadd99ee4657e613b07a40141a7bae08424f Reviewed-by: Oliver Wolff Reviewed-by: Oswald Buddenhagen Reviewed-by: Friedemann Kleint --- tools/configure/configureapp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/configure') diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index e2fef2c665..5ab413a971 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -180,7 +180,7 @@ Configure::Configure(int& argc, char** argv) dictionary[ "WMF_BACKEND" ] = "auto"; dictionary[ "WMSDK" ] = "auto"; dictionary[ "QML_DEBUG" ] = "yes"; - dictionary[ "PLUGIN_MANIFESTS" ] = "yes"; + dictionary[ "PLUGIN_MANIFESTS" ] = "no"; dictionary[ "DIRECTWRITE" ] = "no"; dictionary[ "NIS" ] = "no"; dictionary[ "NEON" ] = "auto"; -- cgit v1.2.3