diff --git a/configure b/configure index 8f4aa8206de07e7a933fc19d4142e1f40b4e349b..1eb893d9cc55b2ac842107c08c50b1f981ace940 100755 --- a/configure +++ b/configure @@ -604,6 +604,7 @@ CFG_MYSQL_CONFIG= CFG_PSQL_CONFIG= CFG_DEBUG_RELEASE=no CFG_FORCEDEBUGINFO=no +CFG_RELEASE_TOOLS=no CFG_SHARED=yes CFG_SM=auto CFG_XSHAPE=auto @@ -642,7 +643,6 @@ CFG_BUILD_PARTS="" CFG_NOBUILD_PARTS="" CFG_SKIP_MODULES="" CFG_COMPILE_EXAMPLES=yes -CFG_RELEASE_QMAKE=no CFG_AUDIO_BACKEND=auto CFG_QML_DEBUG=yes CFG_PKGCONFIG=auto @@ -1433,13 +1433,6 @@ while [ "$#" -gt 0 ]; do UNKNOWN_OPT=yes fi ;; - optimized-qmake) - if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then - CFG_RELEASE_QMAKE="$VAL" - else - UNKNOWN_OPT=yes - fi - ;; release) if [ "$VAL" = "yes" ]; then CFG_DEBUG=no @@ -1455,6 +1448,13 @@ while [ "$#" -gt 0 ]; do force-debug-info) CFG_FORCEDEBUGINFO="$VAL" ;; + optimized-qmake|optimized-tools) + if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then + CFG_RELEASE_TOOLS="$VAL" + else + UNKNOWN_OPT=yes + fi + ;; developer-build) CFG_DEV="yes" ;; @@ -2433,6 +2433,9 @@ Configure options: -developer-build ... Compile and link Qt with Qt developer options (including auto-tests exporting) + * -no-optimized-tools ... Do not build optimized host tools even in debug build. + -optimized-tools ...... Build optimized host tools even in debug build. + -opensource ........ Compile and link the Open-Source Edition of Qt. -commercial ........ Compile and link the Commercial Edition of Qt. @@ -2618,9 +2621,6 @@ Additional options: -silent ............ Reduce the build output so that warnings and errors can be seen more easily. - * -no-optimized-qmake ... Do not build qmake optimized. - -optimized-qmake ...... Build qmake optimized. - -no-nis ............ Do not compile NIS support. * -nis ............... Compile NIS support. @@ -3387,6 +3387,10 @@ if [ "$CFG_FORCEDEBUGINFO" = "yes" ]; then QMAKE_CONFIG="$QMAKE_CONFIG force_debug_info" fi +if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then + QT_CONFIG="$QT_CONFIG release_tools" +fi + if [ "$XPLATFORM_MAC" = "yes" ]; then [ "$CFG_PKGCONFIG" = "auto" ] && CFG_PKGCONFIG="no" fi @@ -4017,7 +4021,7 @@ if true; then ###[ '!' -f "$outpath/bin/qmake" ]; setBootstrapVariable QMAKE_LFLAGS setBootstrapVariable QMAKE_LFLAGS_GCSECTIONS - if [ "$CFG_RELEASE_QMAKE" = "yes" ]; then + if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then setBootstrapVariable QMAKE_CFLAGS_RELEASE setBootstrapVariable QMAKE_CXXFLAGS_RELEASE EXTRA_CFLAGS="$EXTRA_CFLAGS \$(QMAKE_CFLAGS_RELEASE)" @@ -7237,10 +7241,12 @@ release="release" [ "$CFG_FORCEDEBUGINFO" = "yes" ] && release="release (with debug info)" [ "$CFG_DEBUG" = "yes" ] && build_mode="debug" || build_mode=$release if [ "$CFG_DEBUG_RELEASE" = "yes" ]; then - echo " Mode ................... debug and $release; default link: $build_mode" -else - echo " Mode ................... $build_mode" + build_mode="debug and $release; default link: $build_mode" fi +if [ "$CFG_RELEASE_TOOLS" = "yes" ]; then + build_mode="$build_mode; optimized tools" +fi +echo " Mode ................... $build_mode" unset build_mode release echo " Using sanitizer(s)...... $CFG_SANITIZERS" echo " Using C++ standard ..... $CFG_STDCXX" @@ -7406,6 +7412,11 @@ if [ "$CFG_QREAL" = double ] && [ "$CFG_ARCH" = arm ]; then echo "NOTE: Qt is using double for qreal on this system. This is binary incompatible against Qt 5.1." echo "Configure with '-qreal float' to create a build that is binary compatible with 5.1." fi +if [ "$CFG_RELEASE_TOOLS" = "yes" -a \( "$CFG_DEBUG" = "no" -o "$CFG_DEBUG_RELEASE" = "yes" \) ]; then + echo + echo "NOTE: -optimized-tools is not useful in -release mode." + echo +fi exec 1>&3 3>&- # restore stdout cat $outpath/config.summary # display config feedback to user diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf index b446ed1cd1b7f9cc781327c317fc707f329c2c9f..823a4c9490df944da7dc7519c42d0eb5470ddb31 100644 --- a/mkspecs/features/qt_app.prf +++ b/mkspecs/features/qt_app.prf @@ -21,7 +21,7 @@ QMAKE_LFLAGS += $$QMAKE_LFLAGS_GCSECTIONS host_build: QT -= gui # no host tool will ever use gui host_build:force_bootstrap { - !build_pass: CONFIG += release + !build_pass:contains(QT_CONFIG, release_tools): CONFIG += release contains(QT, core(-private)?|xml) { QT -= core core-private xml QT += bootstrap-private diff --git a/mkspecs/features/qt_module.prf b/mkspecs/features/qt_module.prf index 193629b532dc8f0fd31f8f25fa3d5043cef6795f..906657580e84558ad594bc82eb3f71d4a5937996 100644 --- a/mkspecs/features/qt_module.prf +++ b/mkspecs/features/qt_module.prf @@ -32,7 +32,7 @@ host_build { QMAKE_CFLAGS += $$QMAKE_CFLAGS_SPLIT_SECTIONS QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_SPLIT_SECTIONS force_bootstrap { - !build_pass: CONFIG += release + !build_pass:contains(QT_CONFIG, release_tools): CONFIG += release contains(QT, core(-private)?|xml) { QT -= core core-private xml QT += bootstrap-private diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp index 5ddb3cb48980298c9ebe0f4665c0219a6896bd93..37676405366d3b739ab7e4b87c46accb24354a74 100644 --- a/tools/configure/configureapp.cpp +++ b/tools/configure/configureapp.cpp @@ -230,6 +230,7 @@ Configure::Configure(int& argc, char** argv) : verbose(0) dictionary[ "BUILD" ] = "debug"; dictionary[ "BUILDALL" ] = "auto"; // Means yes, but not explicitly dictionary[ "FORCEDEBUGINFO" ] = "no"; + dictionary[ "OPTIMIZED_TOOLS" ] = "no"; dictionary[ "BUILDTYPE" ] = "none"; @@ -460,6 +461,10 @@ void Configure::parseCmdLine() dictionary[ "SEPARATE_DEBUG_INFO" ] = "no"; else if (configCmdLine.at(i) == "-separate-debug-info") dictionary[ "SEPARATE_DEBUG_INFO" ] = "yes"; + else if (configCmdLine.at(i) == "-optimized-tools") + dictionary[ "RELEASE_TOOLS" ] = "yes"; + else if (configCmdLine.at(i) == "-no-optimized-tools") + dictionary[ "RELEASE_TOOLS" ] = "no"; else if (configCmdLine.at(i) == "-compile-examples") { dictionary[ "COMPILE_EXAMPLES" ] = "yes"; @@ -1814,6 +1819,9 @@ bool Configure::displayHelp() desc("BUILDDEV", "yes", "-developer-build", "Compile and link Qt with Qt developer options (including auto-tests exporting)\n"); + desc("RELEASE_TOOLS", "yes", "-optimized-tools", "Do not build optimized host tools even in debug build."); + desc("RELEASE_TOOLS", "no", "-no-optimized-tools", "Build optimized host tools even in debug build.\n"); + desc("OPENSOURCE", "opensource", "-opensource", "Compile and link the Open-Source Edition of Qt."); desc("COMMERCIAL", "commercial", "-commercial", "Compile and link the Commercial Edition of Qt.\n"); @@ -2738,6 +2746,8 @@ void Configure::generateOutputVars() qtConfig += "debug_and_release build_all debug"; qtConfig += "release"; } + if (dictionary[ "RELEASE_TOOLS" ] == "yes") + qtConfig += "release_tools"; if (dictionary[ "C++STD" ] == "c++11") qtConfig += "c++11"; @@ -3837,6 +3847,8 @@ void Configure::displayConfig() } if (dictionary[ "BUILD" ] == "release" || dictionary[ "BUILDALL" ] == "yes") sout << "Force debug info............" << dictionary[ "FORCEDEBUGINFO" ] << endl; + if (dictionary[ "BUILD" ] == "debug") + sout << "Force optimized tools......." << dictionary[ "RELEASE_TOOLS" ] << endl; sout << "C++ language standard......." << dictionary[ "C++STD" ] << endl; sout << "Link Time Code Generation..." << dictionary[ "LTCG" ] << endl; sout << "Accessibility support......." << dictionary[ "ACCESSIBILITY" ] << endl; @@ -4010,6 +4022,10 @@ void Configure::displayConfig() << "Qt 5.6 build, but you should update your build scripts to remove the" << endl << "option and, if necessary, upgrade your compiler." << endl; } + if (dictionary["RELEASE_TOOLS"] == "yes" && dictionary["BUILD"] != "debug" ) { + sout << endl + << "NOTE: -optimized-tools is not useful in -release mode." << endl; + } if (!dictionary["PREFIX_COMPLAINTS"].isEmpty()) { sout << endl << dictionary["PREFIX_COMPLAINTS"] << endl