summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure150
1 files changed, 38 insertions, 112 deletions
diff --git a/configure b/configure
index 56999a984e..6d7704a9dd 100755
--- a/configure
+++ b/configure
@@ -1,21 +1,25 @@
#!/bin/sh
# Copyright (C) 2016 The Qt Company Ltd.
# Copyright (C) 2016 Intel Corporation.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+# SPDX-License-Identifier: BSD-3-Clause
#-------------------------------------------------------------------------------
# script initialization
#-------------------------------------------------------------------------------
# the directory of this script is the "source tree"
-relpath=`dirname $0`
+relpath=`dirname "$0"`
relpath=`(cd "$relpath"; /bin/pwd)`
# the current directory is the "build tree" or "object tree"
outpath=`/bin/pwd`
+outpathPrefix=$outpath
# do this early so we don't store it in config.status
CFG_TOPLEVEL=
-outpathPrefix=
+
+SAVED_IFS=$IFS
+IFS='
+'
checkTopLevelBuild()
{
@@ -23,7 +27,7 @@ checkTopLevelBuild()
if [ x"$1" = x"-top-level" ]; then
CFG_TOPLEVEL=yes
relpathMangled=`dirname "$relpath"`
- outpathPrefix=../
+ outpathPrefix="$outpathPrefix/.."
else
if [ -f ../.qmake.super ]; then
echo >&2 "ERROR: You cannot configure qtbase separately within a top-level build."
@@ -35,41 +39,26 @@ checkTopLevelBuild()
OPT_CMDLINE= # expanded version for the script
determineOptFilePath()
{
+> "${outpathPrefix}/config.redo.in"
set -f # suppress globbing in for loop
-SAVED_IFS=$IFS
-IFS='
-'
for i in "$@"; do
if [ x"$i" = x"-top-level" ]; then
continue
fi
case $i in
-redo|--redo)
- optfile=${outpathPrefix}config.opt
- if test -n "$CFG_TOPLEVEL" && ! test -f $optfile; then
- optfile=config.opt
- fi
- if ! test -f $optfile; then
+ optfile=${outpathPrefix}/config.opt
+ if ! test -f "$optfile"; then
echo >&2 "No config.opt present - cannot redo configuration."
exit 1
fi
- for a in `cat $optfile`; do
- OPT_CMDLINE="$OPT_CMDLINE
-$a"
- done
;;
*)
- OPT_CMDLINE="$OPT_CMDLINE
-$i"
+ # If redo-ing, write the rest of parameters into the config.redo.in file
+ echo \"$i\" >> "${outpathPrefix}/config.redo.in"
;;
esac
done
-set --
-for i in $OPT_CMDLINE; do
- set -- "$@" "$i"
-done
-set +f
-IFS=$SAVED_IFS
}
#-------------------------------------------------------------------------------
@@ -88,80 +77,10 @@ while [ "$#" -gt 0 ]; do
CURRENT_OPT="$1"
case "$1" in
#Autoconf style options
- --enable-*)
- VAR=`echo $1 | sed 's,^--enable-\(.*\),\1,'`
- VAL=yes
- ;;
- --disable-*)
- VAR=`echo $1 | sed 's,^--disable-\(.*\),\1,'`
- VAL=no
- ;;
- --*=*)
- VAR=`echo $1 | sed 's,^--\(.*\)=.*,\1,'`
- VAL=`echo $1 | sed 's,^--.*=\(.*\),\1,'`
- ;;
- --no-*)
- VAR=`echo $1 | sed 's,^--no-\(.*\),\1,'`
- VAL=no
- ;;
--*)
VAR=`echo $1 | sed 's,^--\(.*\),\1,'`
VAL=yes
;;
- #Qt plugin options
- -no-*-*|-plugin-*-*|-qt-*-*)
- VAR=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
- VAL=`echo $1 | sed 's,^-\([^-]*\).*,\1,'`
- ;;
- #Qt style no options
- -no-*)
- VAR=`echo $1 | sed 's,^-no-\(.*\),\1,'`
- VAL=no
- ;;
- #Qt style options that pass an argument
- -prefix| \
- -docdir| \
- -headerdir| \
- -plugindir| \
- -qmldir| \
- -archdatadir| \
- -datadir| \
- -libdir| \
- -bindir| \
- -libexecdir| \
- -translationdir| \
- -sysconfdir| \
- -examplesdir| \
- -testsdir| \
- -hostdatadir| \
- -extprefix| \
- -sysroot| \
- -make| \
- -nomake| \
- -skip| \
- -platform| \
- -xplatform| \
- -device| \
- -device-option| \
- -sdk| \
- -android-sdk| \
- -android-ndk| \
- -android-ndk-platform| \
- -android-arch)
- VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
- shift
- VAL="$1"
- ;;
- #Qt style complex options in one command
- -enable-*|-disable-*)
- VAR=`echo $1 | sed 's,^-\([^-]*\)-.*,\1,'`
- VAL=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
- ;;
- #Qt Builtin/System style options
- -no-*|-system-*|-qt-*)
- VAR=`echo $1 | sed 's,^-[^-]*-\(.*\),\1,'`
- VAL=`echo $1 | sed 's,^-\([^-]*\)-.*,\1,'`
- ;;
#General options, including Qt style yes options
-*)
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
@@ -176,24 +95,16 @@ while [ "$#" -gt 0 ]; do
shift
- UNKNOWN_OPT=no
case "$VAR" in
h|help)
if [ "$VAL" = "yes" ]; then
OPT_HELP="$VAL"
- else
- UNKNOWN_OPT=yes
fi
;;
*)
;;
esac
- if [ "$UNKNOWN_OPT" = "yes" ]; then
- echo "${CURRENT_OPT}: invalid command-line switch"
- ERROR=yes
- fi
done
-[ "x$ERROR" = "xyes" ] && exit 1
}
#-------------------------------------------------------------------------------
@@ -221,16 +132,29 @@ checkTopLevelBuild "$@"
parseCommandline "$@"
handleHelp
determineOptFilePath "$@"
-optfilename=config.opt
+
+optfilepath=${outpathPrefix}/config.opt
+opttmpfilepath=${outpathPrefix}/config.opt.in
+
+redofilepath=${outpathPrefix}/config.redo.last
+redotmpfilepath=${outpathPrefix}/config.redo.in
+
+fresh_requested_arg=
if [ -z "$optfile" ]; then # only write optfile if not currently redoing
- optfilepath=${outpathPrefix}${optfilename}
- > "$optfilepath"
- for arg in "$@"; do
- if [ "$arg" = "-top-level" ]; then
- continue
- fi
- echo $arg >> "$optfilepath"
- done
+ > "$opttmpfilepath"
+ > "$redotmpfilepath"
+
+ for arg in "$@"; do echo \"$arg\" >> "$opttmpfilepath"; done
+
+ cmake -DIN_FILE="${opttmpfilepath}" -DOUT_FILE="${optfilepath}" -DIGNORE_ARGS=-top-level -P "${relpath}/cmake/QtWriteArgsFile.cmake"
+else
+ # Rewriting config.opt into config.opt.in anyway. Allows for direct manipulation of config.opt
+ > "$opttmpfilepath"
+ for arg in `cat $optfile`; do echo \"$arg\" >> "$opttmpfilepath"; done
+
+ cmake -DIN_FILE="${opttmpfilepath}" -DREDO_FILE="${redotmpfilepath}" -DOUT_FILE="${redofilepath}" -DIGNORE_ARGS=-top-level -P "${relpath}/cmake/QtWriteArgsFile.cmake"
+ optfilepath=${redofilepath}
+ fresh_requested_arg=-DFRESH_REQUESTED=TRUE
fi
top_level_arg=
@@ -239,4 +163,6 @@ if [ -n "$CFG_TOPLEVEL" ]; then
cd ..
fi
-cmake "-DOPTFILE=$optfilename" $top_level_arg -P "$relpath/cmake/QtProcessConfigureArgs.cmake"
+exec cmake "-DOPTFILE=${optfilepath}" ${top_level_arg} ${fresh_requested_arg} -P "${relpath}/cmake/QtProcessConfigureArgs.cmake"
+
+IFS=$SAVED_IFS