diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 150 |
1 files changed, 38 insertions, 112 deletions
@@ -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 |