summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure197
1 files changed, 40 insertions, 157 deletions
diff --git a/configure b/configure
index b2c978b025..6d7704a9dd 100755
--- a/configure
+++ b/configure
@@ -1,46 +1,25 @@
#!/bin/sh
-#############################################################################
-##
-## Copyright (C) 2016 The Qt Company Ltd.
-## Copyright (C) 2016 Intel Corporation.
-## Contact: https://www.qt.io/licensing/
-##
-## This file is the build configuration utility of the Qt Toolkit.
-##
-## $QT_BEGIN_LICENSE:GPL-EXCEPT$
-## Commercial License Usage
-## Licensees holding valid commercial Qt licenses may use this file in
-## accordance with the commercial license agreement provided with the
-## Software or, alternatively, in accordance with the terms contained in
-## a written agreement between you and The Qt Company. For licensing terms
-## and conditions see https://www.qt.io/terms-conditions. For further
-## information use the contact form at https://www.qt.io/contact-us.
-##
-## GNU General Public License Usage
-## Alternatively, this file may be used under the terms of the GNU
-## General Public License version 3 as published by the Free Software
-## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-## included in the packaging of this file. Please review the following
-## information to ensure the GNU General Public License requirements will
-## be met: https://www.gnu.org/licenses/gpl-3.0.html.
-##
-## $QT_END_LICENSE$
-##
-#############################################################################
+# Copyright (C) 2016 The Qt Company Ltd.
+# Copyright (C) 2016 Intel Corporation.
+# 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()
{
@@ -48,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."
@@ -60,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
}
#-------------------------------------------------------------------------------
@@ -113,95 +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| \
- -hostbindir| \
- -hostlibdir| \
- -extprefix| \
- -sysroot| \
- -external-hostbindir| \
- -make| \
- -nomake| \
- -skip| \
- -platform| \
- -xplatform| \
- -device| \
- -device-option| \
- -sdk| \
- -android-sdk| \
- -android-ndk| \
- -android-ndk-platform| \
- -android-ndk-host| \
- -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,'`
- ;;
- #Options that cannot be generalized
- -hostprefix)
- VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
- # this option may or may not be followed by an argument
- if [ -z "$2" ] || echo "$2" | grep '^-' >/dev/null 2>&1; then
- VAL=$outpath
- else
- shift;
- VAL=$1
- fi
- ;;
#General options, including Qt style yes options
-*)
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
@@ -216,27 +95,16 @@ while [ "$#" -gt 0 ]; do
shift
- UNKNOWN_OPT=no
case "$VAR" in
- external-hostbindir)
- CFG_HOST_QT_TOOLS_PATH="$VAL"
- ;;
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
}
#-------------------------------------------------------------------------------
@@ -264,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=
@@ -282,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