60c8a68746
It is not possible to manually edit the `config.opt` and do a redo, and `configure/` uses the `config.opt` in this case. Task-number: QTBUG-108287 Change-Id: I3d87b13a900b97fb50e49a4f155bec964ecb5d1a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
169 lines
4.6 KiB
Bash
Executable File
169 lines
4.6 KiB
Bash
Executable File
#!/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
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# script initialization
|
|
#-------------------------------------------------------------------------------
|
|
|
|
# the directory of this script is the "source tree"
|
|
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=
|
|
|
|
SAVED_IFS=$IFS
|
|
IFS='
|
|
'
|
|
|
|
checkTopLevelBuild()
|
|
{
|
|
relpathMangled=$relpath
|
|
if [ x"$1" = x"-top-level" ]; then
|
|
CFG_TOPLEVEL=yes
|
|
relpathMangled=`dirname "$relpath"`
|
|
outpathPrefix="$outpathPrefix/.."
|
|
else
|
|
if [ -f ../.qmake.super ]; then
|
|
echo >&2 "ERROR: You cannot configure qtbase separately within a top-level build."
|
|
exit 1
|
|
fi
|
|
fi
|
|
}
|
|
|
|
OPT_CMDLINE= # expanded version for the script
|
|
determineOptFilePath()
|
|
{
|
|
> "${outpathPrefix}/config.redo.in"
|
|
set -f # suppress globbing in for loop
|
|
for i in "$@"; do
|
|
if [ x"$i" = x"-top-level" ]; then
|
|
continue
|
|
fi
|
|
case $i in
|
|
-redo|--redo)
|
|
optfile=${outpathPrefix}/config.opt
|
|
if ! test -f "$optfile"; then
|
|
echo >&2 "No config.opt present - cannot redo configuration."
|
|
exit 1
|
|
fi
|
|
;;
|
|
*)
|
|
# If redo-ing, write the rest of parameters into the config.redo.in file
|
|
echo \"$i\" >> "${outpathPrefix}/config.redo.in"
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# initialize variables
|
|
#-------------------------------------------------------------------------------
|
|
|
|
OPT_HELP=
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# parse command line arguments
|
|
#-------------------------------------------------------------------------------
|
|
parseCommandline()
|
|
{
|
|
# parse the arguments, setting things to "yes" or "no"
|
|
while [ "$#" -gt 0 ]; do
|
|
CURRENT_OPT="$1"
|
|
case "$1" in
|
|
#Autoconf style options
|
|
--*)
|
|
VAR=`echo $1 | sed 's,^--\(.*\),\1,'`
|
|
VAL=yes
|
|
;;
|
|
#General options, including Qt style yes options
|
|
-*)
|
|
VAR=`echo $1 | sed 's,^-\(.*\),\1,'`
|
|
VAL="yes"
|
|
;;
|
|
# most options don't need processing in the configure script, skip them. qmake will do the real validation
|
|
*)
|
|
shift
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
shift
|
|
|
|
case "$VAR" in
|
|
h|help)
|
|
if [ "$VAL" = "yes" ]; then
|
|
OPT_HELP="$VAL"
|
|
fi
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
#-------------------------------------------------------------------------------
|
|
# help - interactive parts of the script _after_ this section please
|
|
#-------------------------------------------------------------------------------
|
|
handleHelp()
|
|
{
|
|
if [ "$OPT_HELP" = "yes" ]; then
|
|
cat $relpath/config_help.txt
|
|
if [ -n "$CFG_TOPLEVEL" ]; then
|
|
IFS='
|
|
'
|
|
for i in $relpathMangled/qt*/config_help.txt; do
|
|
if [ x"$i" != x"$relpath/config_help.txt" ]; then
|
|
echo
|
|
cat "$i"
|
|
fi
|
|
done
|
|
fi
|
|
exit 0
|
|
fi
|
|
}
|
|
|
|
checkTopLevelBuild "$@"
|
|
parseCommandline "$@"
|
|
handleHelp
|
|
determineOptFilePath "$@"
|
|
|
|
optfilepath=${outpathPrefix}/config.opt
|
|
opttmpfilepath=${outpathPrefix}/config.opt.in
|
|
|
|
redofilepath=${outpathPrefix}/config.redo
|
|
redotmpfilepath=${outpathPrefix}/config.redo.in
|
|
|
|
fresh_requested_arg=
|
|
if [ -z "$optfile" ]; then # only write optfile if not currently redoing
|
|
> "$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=
|
|
if [ -n "$CFG_TOPLEVEL" ]; then
|
|
top_level_arg=-DTOP_LEVEL=TRUE
|
|
cd ..
|
|
fi
|
|
|
|
cmake "-DOPTFILE=${optfilepath}" ${top_level_arg} ${fresh_requested_arg} -P "${relpath}/cmake/QtProcessConfigureArgs.cmake"
|
|
|
|
IFS=$SAVED_IFS
|