summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorOswald Buddenhagen <oswald.buddenhagen@qt.io>2016-11-24 18:41:48 +0100
committerOswald Buddenhagen <oswald.buddenhagen@qt.io>2016-12-13 18:56:12 +0000
commit169a40d511165f6c3c9a71cd5c079786c22d2aca (patch)
treeccb96350299aa64c2ec32da0c27b4ecb1a10a822 /configure
parent42196f4061263d6d0e453c0561f7604cadc6d0a3 (diff)
move generation of qconfig.cpp (and qt.conf) to qmake-based configure
this moves us another step towards the "outer" configure doing just minimal bootstrapping of qmake. a challenge here was that so far, qmake itself needed qconfig.cpp. this was replaced by usage of a qt.conf file instead of compiled-in values. however, to make the executable still self-contained, that qt.conf is embedded into it (by simple appending of a fixed signature and the text file). the qmake with the embedded qt.conf is not used for the qt build itself, which instead relies on the qt.conf in bin/ as before. however, due to the missing built-in values, this file now needs to contain more information than before. but except for a minimal version that is needed to start up qmake/configure at all, that file is now also generated with qmake. as some of the newly set up properties are subsequently used by configure itself, qmake gains a (deliberately undocumented) function to reload the qt.conf after it's fully populated. unlike the old implementations, this one doesn't emit redundant qt.conf entries which match the hard-coded fallbacks. omitting them leads to leaner files which are more comprehensible. Started-by: Paolo Angelelli <paolo.angelelli@qt.io> Change-Id: I4526ef64b3c89d9851e10f83965fe479ed7f39f6 Reviewed-by: Jake Petroules <jake.petroules@qt.io>
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure420
1 files changed, 3 insertions, 417 deletions
diff --git a/configure b/configure
index 09966e8e1b..78ff04a474 100755
--- a/configure
+++ b/configure
@@ -129,26 +129,6 @@ DEVICE_VARS_FILE=.device.vars
# utility functions
#-------------------------------------------------------------------------------
-makeabs()
-{
- local FILE="$1"
- local RES="$FILE"
- if [ -z "${FILE##/*}" ]; then
- true
- elif [ "$OSTYPE" = "msys" -a -z "${FILE##[a-zA-Z]:[/\\]*}" ]; then
- true
- else
- RES=$PWD/$FILE
- fi
- RES=$RES/
- while true; do
- nres=`echo "$RES" | sed 's,/[^/][^/]*/\.\./,/,g; s,/\./,/,g'`
- test x"$nres" = x"$RES" && break
- RES=$nres
- done
- echo "$RES" | sed 's,//,/,g; s,/$,,'
-}
-
# Helper function for getQMakeConf. It parses include statements in
# qmake.conf and prints out the expanded file
expandQMakeConf()
@@ -443,29 +423,6 @@ CFG_SILENT=no
OPT_MAC_SDK=
CFG_DEV=no
-# initalize variables used for installation
-QT_INSTALL_PREFIX=
-QT_INSTALL_DOCS=
-QT_INSTALL_HEADERS=
-QT_INSTALL_LIBS=
-QT_INSTALL_BINS=
-QT_INSTALL_LIBEXECS=
-QT_INSTALL_PLUGINS=
-QT_INSTALL_IMPORTS=
-QT_INSTALL_QML=
-QT_INSTALL_ARCHDATA=
-QT_INSTALL_DATA=
-QT_INSTALL_TRANSLATIONS=
-QT_INSTALL_SETTINGS=
-QT_INSTALL_EXAMPLES=
-QT_INSTALL_TESTS=
-CFG_SYSROOT=
-QT_HOST_PREFIX=
-QT_HOST_BINS=
-QT_HOST_LIBS=
-QT_HOST_DATA=
-QT_EXT_PREFIX=
-
# Android vars
CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
CFG_DEFAULT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
@@ -590,72 +547,9 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=no
case "$VAR" in
- prefix)
- QT_INSTALL_PREFIX="$VAL"
- ;;
- hostprefix)
- QT_HOST_PREFIX="$VAL"
- ;;
- hostdatadir)
- QT_HOST_DATA="$VAL"
- ;;
- hostbindir)
- QT_HOST_BINS="$VAL"
- ;;
- hostlibdir)
- QT_HOST_LIBS="$VAL"
- ;;
- extprefix)
- QT_EXT_PREFIX="$VAL"
- ;;
- docdir)
- QT_INSTALL_DOCS="$VAL"
- ;;
- headerdir)
- QT_INSTALL_HEADERS="$VAL"
- ;;
- plugindir)
- QT_INSTALL_PLUGINS="$VAL"
- ;;
- importdir)
- QT_INSTALL_IMPORTS="$VAL"
- ;;
- qmldir)
- QT_INSTALL_QML="$VAL"
- ;;
- archdatadir)
- QT_INSTALL_ARCHDATA="$VAL"
- ;;
- datadir)
- QT_INSTALL_DATA="$VAL"
- ;;
- libdir)
- QT_INSTALL_LIBS="$VAL"
- ;;
- translationdir)
- QT_INSTALL_TRANSLATIONS="$VAL"
- ;;
- sysconfdir|settingsdir)
- QT_INSTALL_SETTINGS="$VAL"
- ;;
- examplesdir)
- QT_INSTALL_EXAMPLES="$VAL"
- ;;
- testsdir)
- QT_INSTALL_TESTS="$VAL"
- ;;
- sysroot)
- CFG_SYSROOT="$VAL"
- ;;
external-hostbindir)
CFG_HOST_QT_TOOLS_PATH="$VAL"
;;
- bindir)
- QT_INSTALL_BINS="$VAL"
- ;;
- libexecdir)
- QT_INSTALL_LIBEXECS="$VAL"
- ;;
sdk)
if [ "$BUILD_ON_MAC" = "yes" ]; then
DeviceVar set QMAKE_MAC_SDK "$VAL"
@@ -1090,274 +984,6 @@ if [ "$XPLATFORM_ANDROID" = "no" ]; then
fi
fi
-#-------------------------------------------------------------------------------
-# postprocess installation and deployment paths
-#-------------------------------------------------------------------------------
-
-if [ -z "$QT_INSTALL_PREFIX" ]; then
- if [ "$CFG_DEV" = "yes" ]; then
- QT_INSTALL_PREFIX="$outpath" # In Development, we use sandboxed builds by default
- else
- QT_INSTALL_PREFIX="/usr/local/Qt-${QT_VERSION}" # the default install prefix is /usr/local/Qt-$QT_VERSION
- fi
-fi
-QT_INSTALL_PREFIX=`makeabs "$QT_INSTALL_PREFIX"`
-
-if [ -z "$QT_EXT_PREFIX" ]; then
- QT_EXT_PREFIX=$QT_INSTALL_PREFIX
- if [ -n "$CFG_SYSROOT" ]; then
- QMAKE_SYSROOTIFY=true
- else
- QMAKE_SYSROOTIFY=false
- fi
-else
- QT_EXT_PREFIX=`makeabs "$QT_EXT_PREFIX"`
- QMAKE_SYSROOTIFY=false
-fi
-
-if [ -z "$QT_HOST_PREFIX" ]; then
- if $QMAKE_SYSROOTIFY; then
- QT_HOST_PREFIX=$CFG_SYSROOT$QT_EXT_PREFIX
- else
- QT_HOST_PREFIX=$QT_EXT_PREFIX
- fi
- HAVE_HOST_PATH=false
-else
- QT_HOST_PREFIX=`makeabs "$QT_HOST_PREFIX"`
- HAVE_HOST_PATH=true
-fi
-
-#------- make the paths relative to the prefixes --------
-
-PREFIX_COMPLAINTS=
-PREFIX_REMINDER=false
-while read basevar baseoption var option; do
- eval path=\$QT_${basevar}_$var
- [ -z "$path" ] && continue
- path=`makeabs "$path"`
- eval base=\$QT_${basevar}_PREFIX
- rel=${path##$base}
- if [ x"$rel" = x"$path" ]; then
- if [ x"$option" != x"sysconf" ]; then
- PREFIX_COMPLAINTS="$PREFIX_COMPLAINTS
- NOTICE: -${option}dir is not a subdirectory of ${baseoption}prefix."
- eval \$HAVE_${basevar}_PATH || PREFIX_REMINDER=true
- fi
- eval QT_REL_${basevar}_$var=\$rel
- elif [ -z "$rel" ]; then
- eval QT_REL_${basevar}_$var=.
- else
- eval QT_REL_${basevar}_$var=\${rel#/}
- fi
-done <<EOF
-INSTALL - DOCS doc
-INSTALL - HEADERS header
-INSTALL - LIBS lib
-INSTALL - LIBEXECS libexec
-INSTALL - BINS bin
-INSTALL - PLUGINS plugin
-INSTALL - IMPORTS import
-INSTALL - QML qml
-INSTALL - ARCHDATA archdata
-INSTALL - DATA data
-INSTALL - TRANSLATIONS translation
-INSTALL - EXAMPLES examples
-INSTALL - TESTS tests
-INSTALL - SETTINGS sysconf
-HOST -host BINS hostbin
-HOST -host LIBS hostlib
-HOST -host DATA hostdata
-EOF
-$PREFIX_REMINDER && PREFIX_COMPLAINTS="$PREFIX_COMPLAINTS
- Maybe you forgot to specify -prefix/-hostprefix?"
-
-if [ -z "$QT_REL_INSTALL_HEADERS" ]; then
- QT_REL_INSTALL_HEADERS=include
-fi
-
-if [ -z "$QT_REL_INSTALL_LIBS" ]; then
- QT_REL_INSTALL_LIBS=lib
-fi
-
-if [ -z "$QT_REL_INSTALL_BINS" ]; then
- QT_REL_INSTALL_BINS=bin
-fi
-
-if [ -z "$QT_REL_INSTALL_ARCHDATA" ]; then
- QT_REL_INSTALL_ARCHDATA=.
-fi
-if [ x"$QT_REL_INSTALL_ARCHDATA" != x. ]; then
- QT_REL_INSTALL_ARCHDATA_PREFIX=$QT_REL_INSTALL_ARCHDATA/
-fi
-
-if [ -z "$QT_REL_INSTALL_LIBEXECS" ]; then
- if [ "$XPLATFORM_MINGW" = "yes" ]; then
- QT_REL_INSTALL_LIBEXECS=${QT_REL_INSTALL_ARCHDATA_PREFIX}bin
- else
- QT_REL_INSTALL_LIBEXECS=${QT_REL_INSTALL_ARCHDATA_PREFIX}libexec
- fi
-fi
-
-if [ -z "$QT_REL_INSTALL_PLUGINS" ]; then
- QT_REL_INSTALL_PLUGINS=${QT_REL_INSTALL_ARCHDATA_PREFIX}plugins
-fi
-
-if [ -z "$QT_REL_INSTALL_IMPORTS" ]; then
- QT_REL_INSTALL_IMPORTS=${QT_REL_INSTALL_ARCHDATA_PREFIX}imports
-fi
-
-if [ -z "$QT_REL_INSTALL_QML" ]; then
- QT_REL_INSTALL_QML=${QT_REL_INSTALL_ARCHDATA_PREFIX}qml
-fi
-
-if [ -z "$QT_REL_INSTALL_DATA" ]; then
- QT_REL_INSTALL_DATA=.
-fi
-if [ x"$QT_REL_INSTALL_DATA" != x. ]; then
- QT_REL_INSTALL_DATA_PREFIX=$QT_REL_INSTALL_DATA/
-fi
-
-if [ -z "$QT_REL_INSTALL_DOCS" ]; then
- QT_REL_INSTALL_DOCS=${QT_REL_INSTALL_DATA_PREFIX}doc
-fi
-
-if [ -z "$QT_REL_INSTALL_TRANSLATIONS" ]; then
- QT_REL_INSTALL_TRANSLATIONS=${QT_REL_INSTALL_DATA_PREFIX}translations
-fi
-
-if [ -z "$QT_REL_INSTALL_EXAMPLES" ]; then
- QT_REL_INSTALL_EXAMPLES=examples
-fi
-
-if [ -z "$QT_REL_INSTALL_TESTS" ]; then
- QT_REL_INSTALL_TESTS=tests
-fi
-
-if [ -z "$QT_REL_INSTALL_SETTINGS" ]; then
- if [ "$XPLATFORM_MAC" = "yes" ]; then
- QT_REL_INSTALL_SETTINGS=/Library/Preferences/Qt
- else
- QT_REL_INSTALL_SETTINGS=etc/xdg
- fi
-fi
-
-#------- host paths --------
-
-if [ -z "$QT_REL_HOST_BINS" ]; then
- if $HAVE_HOST_PATH; then
- QT_REL_HOST_BINS=bin
- else
- QT_REL_HOST_BINS=$QT_REL_INSTALL_BINS
- fi
-fi
-
-if [ -z "$QT_REL_HOST_LIBS" ]; then
- if $HAVE_HOST_PATH; then
- QT_REL_HOST_LIBS=lib
- else
- QT_REL_HOST_LIBS=$QT_REL_INSTALL_LIBS
- fi
-fi
-
-if [ -z "$QT_REL_HOST_DATA" ]; then
- if $HAVE_HOST_PATH; then
- QT_REL_HOST_DATA=.
- else
- QT_REL_HOST_DATA=$QT_REL_INSTALL_ARCHDATA
- fi
-fi
-
-shortxspec=`echo $XQMAKESPEC | sed "s,^${relpath}/mkspecs/,,"`
-shortspec=`echo $QMAKESPEC | sed "s,^${relpath}/mkspecs/,,"`
-
-QT_CONFIGURE_STR_OFF=0
-
-addConfStr()
-{
- QT_CONFIGURE_STR_OFFSETS="$QT_CONFIGURE_STR_OFFSETS $QT_CONFIGURE_STR_OFF,"
- QT_CONFIGURE_STRS="$QT_CONFIGURE_STRS \"$1\\0\"
-"
- count=`echo "$1" | wc -c`
- QT_CONFIGURE_STR_OFF=`expr $QT_CONFIGURE_STR_OFF + $count`
-}
-
-QT_CONFIGURE_STR_OFFSETS=
-QT_CONFIGURE_STRS=
-addConfStr "$QT_REL_INSTALL_DOCS"
-addConfStr "$QT_REL_INSTALL_HEADERS"
-addConfStr "$QT_REL_INSTALL_LIBS"
-addConfStr "$QT_REL_INSTALL_LIBEXECS"
-addConfStr "$QT_REL_INSTALL_BINS"
-addConfStr "$QT_REL_INSTALL_PLUGINS"
-addConfStr "$QT_REL_INSTALL_IMPORTS"
-addConfStr "$QT_REL_INSTALL_QML"
-addConfStr "$QT_REL_INSTALL_ARCHDATA"
-addConfStr "$QT_REL_INSTALL_DATA"
-addConfStr "$QT_REL_INSTALL_TRANSLATIONS"
-addConfStr "$QT_REL_INSTALL_EXAMPLES"
-addConfStr "$QT_REL_INSTALL_TESTS"
-QT_CONFIGURE_STR_OFFSETS_ALL=$QT_CONFIGURE_STR_OFFSETS
-QT_CONFIGURE_STRS_ALL=$QT_CONFIGURE_STRS
-
-QT_CONFIGURE_STR_OFFSETS=
-QT_CONFIGURE_STRS=
-addConfStr "$CFG_SYSROOT"
-addConfStr "$QT_REL_HOST_BINS"
-addConfStr "$QT_REL_HOST_LIBS"
-addConfStr "$QT_REL_HOST_DATA"
-addConfStr "$shortxspec"
-addConfStr "$shortspec"
-
-#-------------------------------------------------------------------------------
-# generate qconfig.cpp
-#-------------------------------------------------------------------------------
-[ -d "$outpath/src/corelib/global" ] || mkdir -p "$outpath/src/corelib/global"
-
-cat > "$outpath/src/corelib/global/qconfig.cpp.new" <<EOF
-/* Installation date */
-static const char qt_configure_installation [12+11] = "qt_instdate=2012-12-20";
-
-/* Installation Info */
-static const char qt_configure_prefix_path_str [256 + 12] = "qt_prfxpath=$QT_INSTALL_PREFIX";
-#ifdef QT_BUILD_QMAKE
-static const char qt_configure_ext_prefix_path_str [256 + 12] = "qt_epfxpath=$QT_EXT_PREFIX";
-static const char qt_configure_host_prefix_path_str [256 + 12] = "qt_hpfxpath=$QT_HOST_PREFIX";
-#endif
-
-static const short qt_configure_str_offsets[] = {
- $QT_CONFIGURE_STR_OFFSETS_ALL
-#ifdef QT_BUILD_QMAKE
- $QT_CONFIGURE_STR_OFFSETS
-#endif
-};
-static const char qt_configure_strs[] =
-$QT_CONFIGURE_STRS_ALL#ifdef QT_BUILD_QMAKE
-$QT_CONFIGURE_STRS#endif
-;
-
-#define QT_CONFIGURE_SETTINGS_PATH "$QT_REL_INSTALL_SETTINGS"
-
-#ifdef QT_BUILD_QMAKE
-# define QT_CONFIGURE_SYSROOTIFY_PREFIX $QMAKE_SYSROOTIFY
-#endif
-
-#define QT_CONFIGURE_PREFIX_PATH qt_configure_prefix_path_str + 12
-#ifdef QT_BUILD_QMAKE
-# define QT_CONFIGURE_EXT_PREFIX_PATH qt_configure_ext_prefix_path_str + 12
-# define QT_CONFIGURE_HOST_PREFIX_PATH qt_configure_host_prefix_path_str + 12
-#endif
-EOF
-
-# avoid unecessary rebuilds by copying only if qconfig.cpp has changed
-if cmp -s "$outpath/src/corelib/global/qconfig.cpp" "$outpath/src/corelib/global/qconfig.cpp.new"; then
- rm -f "$outpath/src/corelib/global/qconfig.cpp.new"
-else
- [ -f "$outpath/src/corelib/global/qconfig.cpp" ] && chmod +w "$outpath/src/corelib/global/qconfig.cpp"
- mv "$outpath/src/corelib/global/qconfig.cpp.new" "$outpath/src/corelib/global/qconfig.cpp"
- chmod -w "$outpath/src/corelib/global/qconfig.cpp"
-fi
-
-
# -----------------------------------------------------------------------------
# build qmake
# -----------------------------------------------------------------------------
@@ -1491,51 +1117,16 @@ setBootstrapVariable()
# create a qt.conf for the Qt build tree itself
#-------------------------------------------------------------------------------
-printInstallPaths()
-{
- cat <<EOF
-Documentation=$QT_REL_INSTALL_DOCS
-Headers=$QT_REL_INSTALL_HEADERS
-Libraries=$QT_REL_INSTALL_LIBS
-LibraryExecutables=$QT_REL_INSTALL_LIBEXECS
-Binaries=$QT_REL_INSTALL_BINS
-Plugins=$QT_REL_INSTALL_PLUGINS
-Imports=$QT_REL_INSTALL_IMPORTS
-Qml2Imports=$QT_REL_INSTALL_QML
-ArchData=$QT_REL_INSTALL_ARCHDATA
-Data=$QT_REL_INSTALL_DATA
-Translations=$QT_REL_INSTALL_TRANSLATIONS
-Examples=$QT_REL_INSTALL_EXAMPLES
-Tests=$QT_REL_INSTALL_TESTS
-EOF
-}
-
+# Note that this file is just sufficient to boot configure, by which it is
+# replaced in-place with a version which is suitable for building all of Qt.
QTCONFFILE="$outpath/bin/qt.conf"
cat > "$QTCONFFILE" <<EOF
[EffectivePaths]
Prefix=..
-EOF
-if [ -n "$CFG_HOST_QT_TOOLS_PATH" ]; then
- cat >> "$QTCONFFILE" <<EOF
-[DevicePaths]
-Prefix=$QT_INSTALL_PREFIX
-`printInstallPaths`
[Paths]
-Prefix=$QT_EXT_PREFIX
-`printInstallPaths`
-HostPrefix=$QT_HOST_PREFIX
-HostBinaries=$QT_REL_HOST_BINS
-HostLibraries=$QT_REL_HOST_LIBS
-HostData=$QT_REL_HOST_DATA
TargetSpec=$XPLATFORM
HostSpec=$PLATFORM
EOF
- if [ -n "$CFG_SYSROOT" ]; then
- cat >> "$QTCONFFILE" <<EOF
-Sysroot=$CFG_SYSROOT
-EOF
- fi
-fi
if [ x"$relpath" != x"$outpath" ]; then
cat >> "$QTCONFFILE" <<EOF
[EffectiveSourcePaths]
@@ -1594,12 +1185,7 @@ else
echo
fi
-if [ -n "$PREFIX_COMPLAINTS" ]; then
- echo
- echo "$PREFIX_COMPLAINTS"
- echo
-fi
-
+QT_INSTALL_PREFIX=`sed -ne 's/^Prefix=//p' < "$outpath/qmake/builtin-qt.conf"`
MAKE=`basename "$MAKE"`
echo
echo Qt is now configured for building. Just run \'$MAKE\'.