summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config_help.txt3
-rwxr-xr-xconfigure66
-rw-r--r--configure.json7
-rw-r--r--configure.pri29
-rw-r--r--mkspecs/features/qt_configure.prf13
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]
diff --git a/configure b/configure
index a51a377c0c..6a425232e5 100755
--- a/configure
+++ b/configure
@@ -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")