diff options
-rw-r--r-- | config_help.txt | 3 | ||||
-rwxr-xr-x | configure | 66 | ||||
-rw-r--r-- | configure.json | 7 | ||||
-rw-r--r-- | configure.pri | 29 | ||||
-rw-r--r-- | mkspecs/features/qt_configure.prf | 13 |
5 files changed, 46 insertions, 72 deletions
diff --git a/config_help.txt b/config_help.txt index c19f19f2f0..ece2195afb 100644 --- a/config_help.txt +++ b/config_help.txt @@ -4,6 +4,9 @@ Configure understands variable assignments like VAR=value on the command line. These override any values possibly obtained from pkg-config. The variables are mentioned in the descriptions of the options they relate to. +It is also possible to manipulate any QMAKE_* variable, to amend the values +from the mkspec for the build of Qt itself, e.g., QMAKE_CXXFLAGS+=-g3. + Top-level installation directories: -prefix <dir> ...... The deployment directory, as seen on the target device. [/usr/local/Qt-$QT_VERSION, $PWD if -developer-build] @@ -92,11 +92,9 @@ $i" done # initialize global variables -QMAKE_VARS_FILE=.qmake.vars DEVICE_VARS_FILE=.device.vars HOST_VARS_FILE=.host.vars -:> "$QMAKE_VARS_FILE" :> "$DEVICE_VARS_FILE" :> "$HOST_VARS_FILE" @@ -124,29 +122,6 @@ makeabs() echo "$RES" | sed 's,//,/,g; s,/$,,' } -# Adds a new qmake variable to the cache -# Usage: QMakeVar mode varname contents -# where mode is one of: set, add, del -QMakeVar() -{ - case "$1" in - set) - eq="=" - ;; - add) - eq="+=" - ;; - del) - eq="-=" - ;; - *) - echo >&2 "BUG: wrong command to QMakeVar: $1" - ;; - esac - - echo "$2" "$eq" "$3" >> "$QMAKE_VARS_FILE" -} - # Helper function for getQMakeConf. It parses include statements in # qmake.conf and prints out the expanded file expandQMakeConf() @@ -445,32 +420,10 @@ fi # initalize variables #------------------------------------------------------------------------------- -SYSTEM_VARIABLES="AR RANLIB STRIP OBJDUMP LD CC CXX CFLAGS CXXFLAGS LDFLAGS" -for varname in $SYSTEM_VARIABLES; do - qmakevarname="${varname}" - qmakecmdargs="" - # use LDFLAGS for autoconf compat, but qmake uses QMAKE_LFLAGS - if [ "${varname}" = "LDFLAGS" ]; then - qmakevarname="LFLAGS" - elif [ "${varname}" = "LD" ]; then - qmakevarname="LINK" - elif [ "${varname}" = "AR" ]; then - # QMAKE_AR needs to be set to "/path/to/ar cqs" but the - # environment variable will be set to the command only so we - # need to append " cqs" for autoconf compatibility - qmakecmdargs=" cqs" - fi - cmd=`echo \ -'if [ -n "\$'${varname}'" ]; then - QMakeVar set QMAKE_'${qmakevarname}' "\$'${varname}${qmakecmdargs}'" -fi'` - eval "$cmd" -done - # Use CC/CXX to run config.tests mkdir -p "$outpath/config.tests" rm -f "$outpath/config.tests/.qmake.cache" -cp "$QMAKE_VARS_FILE" "$outpath/config.tests/.qmake.cache" +: > "$outpath/config.tests/.qmake.cache" # QTDIR may be set and point to an old or system-wide Qt installation unset QTDIR @@ -1956,14 +1909,6 @@ else echo fi -if [ "$OPT_VERBOSE" = "yes" ]; then - echo $ECHO_N "qmake vars .......... $ECHO_C" - cat "$QMAKE_VARS_FILE" | tr '\n' ' ' - echo -fi - -rm -f "$QMAKE_VARS_FILE" 2>/dev/null - #------------------------------------------------------------------------------- # build makefiles based on the configuration #------------------------------------------------------------------------------- @@ -1986,15 +1931,6 @@ rm -f "$QMAKE_VARS_FILE" 2>/dev/null if [ `basename $0` != "config.status" ]; then CONFIG_STATUS="$relpath/$relconf$OPT_CMDLINE" - # add the system variables - for varname in $SYSTEM_VARIABLES; do - cmd=`echo \ -'if [ -n "\$'${varname}'" ]; then - CONFIG_STATUS="'${varname}'='"'\\\$${varname}'"' \$CONFIG_STATUS" -fi'` - eval "$cmd" - done - echo "$CONFIG_STATUS" | grep '\-confirm\-license' >/dev/null 2>&1 || CONFIG_STATUS="$CONFIG_STATUS -confirm-license" [ -f "$outpath/config.status" ] && rm -f "$outpath/config.status" diff --git a/configure.json b/configure.json index 29cbacc89d..2b56279b27 100644 --- a/configure.json +++ b/configure.json @@ -17,6 +17,7 @@ "SYBASE_LIBS": "tds.libs", "ZLIB_LIBS": "zlib.libs" }, + "custom": "qmakeArgs", "options": { "prefix": "string", "hostprefix": "string", @@ -762,7 +763,7 @@ "testTypeDependencies": { "linkerSupportsFlag": [ "use_gold_linker" ], - "compile": [ "shared", "use_gold_linker", "compiler-flags", "gcc-sysroot" ], + "compile": [ "shared", "use_gold_linker", "compiler-flags", "gcc-sysroot", "qmakeargs" ], "detectPkgConfig": [ "cross_compile" ], "library": [ "pkg-config" ], "getPkgConfigVariable": [ "pkg-config" ], @@ -1229,6 +1230,10 @@ "output": [ "gccSysroot" ], "condition": "input.sysroot != ''" }, + "qmakeargs": { + "output": [ "qmakeArgs" ], + "condition": "input.qmakeArgs != ''" + }, "use_gold_linker": { "description": "Using gold linker", "condition": "tests.use_gold_linker", diff --git a/configure.pri b/configure.pri index cc120c12d1..0e785349d7 100644 --- a/configure.pri +++ b/configure.pri @@ -1,5 +1,14 @@ # custom command line handling +defineTest(qtConfCommandline_qmakeArgs) { + contains(1, QMAKE_[A-Z_]+ *[-+]?=.*) { + config.input.qmakeArgs += $$1 + export(config.input.qmakeArgs) + return(true) + } + return(false) +} + defineTest(qtConfCommandline_cxxstd) { arg = $${1} val = $${2} @@ -560,11 +569,6 @@ defineTest(qtConfOutput_extraFeatures) { } -defineTest(qtConfOutputPostProcess_privatePro) { - config.output.privatePro += $$cat($$OUT_PWD/.qmake.vars, lines) - export(config.output.privatePro) -} - defineTest(qtConfOutput_compilerFlags) { # this output also exports the variables locally, so that subsequent compiler tests can use them @@ -610,7 +614,7 @@ defineTest(qtConfOutput_gccSysroot) { # This variable also needs to be exported immediately, so the compilation tests # can pick it up. - EXTRA_QMAKE_ARGS = \ + EXTRA_QMAKE_ARGS += \ "\"QMAKE_CFLAGS += --sysroot=$$config.input.sysroot\"" \ "\"QMAKE_CXXFLAGS += --sysroot=$$config.input.sysroot\"" \ "\"QMAKE_LFLAGS += --sysroot=$$config.input.sysroot\"" @@ -626,6 +630,19 @@ defineTest(qtConfOutput_gccSysroot) { export(config.output.publicPro) } +defineTest(qtConfOutput_qmakeArgs) { + !$${2}: return() + + config.output.privatePro = "!host_build {" + for (a, config.input.qmakeArgs) { + config.output.privatePro += " $$a" + EXTRA_QMAKE_ARGS += $$system_quote($$a) + } + config.output.privatePro += "}" + export(EXTRA_QMAKE_ARGS) + export(config.output.privatePro) +} + defineTest(qtConfOutputPostProcess_publicPro) { qt_version = $$[QT_VERSION] output = \ diff --git a/mkspecs/features/qt_configure.prf b/mkspecs/features/qt_configure.prf index 3d7b0ed9d2..0255a19fe9 100644 --- a/mkspecs/features/qt_configure.prf +++ b/mkspecs/features/qt_configure.prf @@ -174,6 +174,14 @@ defineTest(qtConfCommandline_addString) { } defineTest(qtConfParseCommandLine) { + custom = $$config.commandline.custom + customCall = + !isEmpty(custom) { + customCall = qtConfCommandline_$$custom + !defined($$customCall, test): \ + error("Custom command line callback '$$custom' is undefined.") + } + for (ever) { c = $$qtConfGetNextCommandlineArg() isEmpty(c): break() @@ -190,6 +198,11 @@ defineTest(qtConfParseCommandLine) { next() } + !isEmpty(customCall) { + $${customCall}($$c): \ + next() + } + contains(c, "([A-Z_]+)=(.*)") { opt = $$replace(c, "^([A-Z_]+)=(.*)", "\\1") val = $$replace(c, "^([A-Z_]+)=(.*)", "\\2") |