#!/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$ ## ############################################################################# #------------------------------------------------------------------------------- # 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` # do this early so we don't store it in config.status CFG_TOPLEVEL= outpathPrefix= checkTopLevelBuild() { relpathMangled=$relpath if [ x"$1" = x"-top-level" ]; then CFG_TOPLEVEL=yes relpathMangled=`dirname "$relpath"` 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() { 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 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" ;; esac done set -- for i in $OPT_CMDLINE; do set -- "$@" "$i" done set +f IFS=$SAVED_IFS } #------------------------------------------------------------------------------- # 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 --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,'` VAL="yes" ;; # most options don't need processing in the configure script, skip them. qmake will do the real validation *) shift continue ;; esac 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 ;; cmake) # Ignore. Kept to keep build scripts working. Consider removal in Qt 6.2. ;; qmake) echo >&2 "ERROR: You cannot configure Qt 6 with qmake anymore." ERROR=yes ;; redo) if [ -f ${outpathPrefix}config.opt ]; then if grep -e ^-cmake <${outpathPrefix}config.opt >/dev/null 2>&1; then BUILD_WITH_CMAKE=yes fi fi ;; *) ;; esac if [ "$UNKNOWN_OPT" = "yes" ]; then echo "${CURRENT_OPT}: invalid command-line switch" ERROR=yes fi done [ "x$ERROR" = "xyes" ] && exit 1 } #------------------------------------------------------------------------------- # 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 "$@" optfilename=config.opt 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 fi top_level_arg= if [ -n "$CFG_TOPLEVEL" ]; then top_level_arg=-DTOP_LEVEL=TRUE cd .. fi cmake "-DOPTFILE=$optfilename" $top_level_arg -P "$relpath/cmake/QtProcessConfigureArgs.cmake"