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>
This commit is contained in:
parent
42196f4061
commit
169a40d511
420
configure
vendored
420
configure
vendored
@ -129,26 +129,6 @@ DEVICE_VARS_FILE=.device.vars
|
|||||||
# utility functions
|
# 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
|
# Helper function for getQMakeConf. It parses include statements in
|
||||||
# qmake.conf and prints out the expanded file
|
# qmake.conf and prints out the expanded file
|
||||||
expandQMakeConf()
|
expandQMakeConf()
|
||||||
@ -443,29 +423,6 @@ CFG_SILENT=no
|
|||||||
OPT_MAC_SDK=
|
OPT_MAC_SDK=
|
||||||
CFG_DEV=no
|
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
|
# Android vars
|
||||||
CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
|
CFG_DEFAULT_ANDROID_NDK_ROOT=$ANDROID_NDK_ROOT
|
||||||
CFG_DEFAULT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
|
CFG_DEFAULT_ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT
|
||||||
@ -590,72 +547,9 @@ while [ "$#" -gt 0 ]; do
|
|||||||
|
|
||||||
UNKNOWN_OPT=no
|
UNKNOWN_OPT=no
|
||||||
case "$VAR" in
|
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)
|
external-hostbindir)
|
||||||
CFG_HOST_QT_TOOLS_PATH="$VAL"
|
CFG_HOST_QT_TOOLS_PATH="$VAL"
|
||||||
;;
|
;;
|
||||||
bindir)
|
|
||||||
QT_INSTALL_BINS="$VAL"
|
|
||||||
;;
|
|
||||||
libexecdir)
|
|
||||||
QT_INSTALL_LIBEXECS="$VAL"
|
|
||||||
;;
|
|
||||||
sdk)
|
sdk)
|
||||||
if [ "$BUILD_ON_MAC" = "yes" ]; then
|
if [ "$BUILD_ON_MAC" = "yes" ]; then
|
||||||
DeviceVar set QMAKE_MAC_SDK "$VAL"
|
DeviceVar set QMAKE_MAC_SDK "$VAL"
|
||||||
@ -1090,274 +984,6 @@ if [ "$XPLATFORM_ANDROID" = "no" ]; then
|
|||||||
fi
|
fi
|
||||||
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
|
# build qmake
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@ -1491,51 +1117,16 @@ setBootstrapVariable()
|
|||||||
# create a qt.conf for the Qt build tree itself
|
# create a qt.conf for the Qt build tree itself
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
|
|
||||||
printInstallPaths()
|
# 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.
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|
||||||
QTCONFFILE="$outpath/bin/qt.conf"
|
QTCONFFILE="$outpath/bin/qt.conf"
|
||||||
cat > "$QTCONFFILE" <<EOF
|
cat > "$QTCONFFILE" <<EOF
|
||||||
[EffectivePaths]
|
[EffectivePaths]
|
||||||
Prefix=..
|
Prefix=..
|
||||||
EOF
|
|
||||||
if [ -n "$CFG_HOST_QT_TOOLS_PATH" ]; then
|
|
||||||
cat >> "$QTCONFFILE" <<EOF
|
|
||||||
[DevicePaths]
|
|
||||||
Prefix=$QT_INSTALL_PREFIX
|
|
||||||
`printInstallPaths`
|
|
||||||
[Paths]
|
[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
|
TargetSpec=$XPLATFORM
|
||||||
HostSpec=$PLATFORM
|
HostSpec=$PLATFORM
|
||||||
EOF
|
EOF
|
||||||
if [ -n "$CFG_SYSROOT" ]; then
|
|
||||||
cat >> "$QTCONFFILE" <<EOF
|
|
||||||
Sysroot=$CFG_SYSROOT
|
|
||||||
EOF
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ x"$relpath" != x"$outpath" ]; then
|
if [ x"$relpath" != x"$outpath" ]; then
|
||||||
cat >> "$QTCONFFILE" <<EOF
|
cat >> "$QTCONFFILE" <<EOF
|
||||||
[EffectiveSourcePaths]
|
[EffectiveSourcePaths]
|
||||||
@ -1594,12 +1185,7 @@ else
|
|||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$PREFIX_COMPLAINTS" ]; then
|
QT_INSTALL_PREFIX=`sed -ne 's/^Prefix=//p' < "$outpath/qmake/builtin-qt.conf"`
|
||||||
echo
|
|
||||||
echo "$PREFIX_COMPLAINTS"
|
|
||||||
echo
|
|
||||||
fi
|
|
||||||
|
|
||||||
MAKE=`basename "$MAKE"`
|
MAKE=`basename "$MAKE"`
|
||||||
echo
|
echo
|
||||||
echo Qt is now configured for building. Just run \'$MAKE\'.
|
echo Qt is now configured for building. Just run \'$MAKE\'.
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
"files": {
|
"files": {
|
||||||
|
"builtinQtConf": "qmake/builtin-qt.conf",
|
||||||
|
"qconfigSource": "src/corelib/global/qconfig.cpp",
|
||||||
"publicHeader": "src/corelib/global/qconfig.h",
|
"publicHeader": "src/corelib/global/qconfig.h",
|
||||||
"privateHeader": "src/corelib/global/qconfig_p.h",
|
"privateHeader": "src/corelib/global/qconfig_p.h",
|
||||||
"publicPro": "mkspecs/qconfig.pri",
|
"publicPro": "mkspecs/qconfig.pri",
|
||||||
@ -43,7 +45,7 @@
|
|||||||
"libexecdir": "string",
|
"libexecdir": "string",
|
||||||
"plugindir": "string",
|
"plugindir": "string",
|
||||||
"qmldir": "string",
|
"qmldir": "string",
|
||||||
"settingsdir": "string",
|
"settingsdir": { "type": "string", "name": "sysconfdir" },
|
||||||
"sysconfdir": "string",
|
"sysconfdir": "string",
|
||||||
"testsdir": "string",
|
"testsdir": "string",
|
||||||
"translationdir": "string",
|
"translationdir": "string",
|
||||||
@ -416,6 +418,9 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"features": {
|
"features": {
|
||||||
|
"prepare": {
|
||||||
|
"output": [ "preparePaths" ]
|
||||||
|
},
|
||||||
"android-style-assets": {
|
"android-style-assets": {
|
||||||
"label": "Android Style Assets",
|
"label": "Android Style Assets",
|
||||||
"condition": "config.android",
|
"condition": "config.android",
|
||||||
@ -967,6 +972,10 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
"earlyReport": [
|
"earlyReport": [
|
||||||
|
{
|
||||||
|
"condition": "!features.prepare",
|
||||||
|
"comment": "This is not an actual report - instead, it activates the early setup."
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "fatal",
|
"type": "fatal",
|
||||||
"condition": "!call.licenseCheck",
|
"condition": "!call.licenseCheck",
|
||||||
|
231
configure.pri
231
configure.pri
@ -437,6 +437,237 @@ defineTest(qtConfTest_checkCompiler) {
|
|||||||
|
|
||||||
# custom outputs
|
# custom outputs
|
||||||
|
|
||||||
|
# type (empty or 'host'), option name, default value
|
||||||
|
defineTest(processQtPath) {
|
||||||
|
out_var = config.rel_input.$${2}
|
||||||
|
path = $$eval(config.input.$${2})
|
||||||
|
isEmpty(path) {
|
||||||
|
$$out_var = $$3
|
||||||
|
} else {
|
||||||
|
path = $$absolute_path($$path, $$OUT_PWD)
|
||||||
|
rel = $$relative_path($$path, $$eval(config.input.$${1}prefix))
|
||||||
|
isEmpty(rel) {
|
||||||
|
$$out_var = .
|
||||||
|
} else: contains(rel, \.\..*) {
|
||||||
|
!equals(2, sysconfdir) {
|
||||||
|
PREFIX_COMPLAINTS += "-$$2 is not a subdirectory of -$${1}prefix."
|
||||||
|
export(PREFIX_COMPLAINTS)
|
||||||
|
!$$eval(have_$${1}prefix) {
|
||||||
|
PREFIX_REMINDER = true
|
||||||
|
export(PREFIX_REMINDER)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$$out_var = $$path
|
||||||
|
} else {
|
||||||
|
$$out_var = $$rel
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export($$out_var)
|
||||||
|
}
|
||||||
|
|
||||||
|
defineTest(addConfStr) {
|
||||||
|
QT_CONFIGURE_STR_OFFSETS += " $$QT_CONFIGURE_STR_OFF,"
|
||||||
|
QT_CONFIGURE_STRS += " \"$$1\\0\""
|
||||||
|
QT_CONFIGURE_STR_OFF = $$num_add($$QT_CONFIGURE_STR_OFF, $$str_size($$1), 1)
|
||||||
|
export(QT_CONFIGURE_STR_OFFSETS)
|
||||||
|
export(QT_CONFIGURE_STRS)
|
||||||
|
export(QT_CONFIGURE_STR_OFF)
|
||||||
|
}
|
||||||
|
|
||||||
|
defineReplace(printInstallPath) {
|
||||||
|
val = $$eval(config.rel_input.$$2)
|
||||||
|
equals(val, $$3): return()
|
||||||
|
return("$$1=$$val")
|
||||||
|
}
|
||||||
|
|
||||||
|
defineReplace(printInstallPaths) {
|
||||||
|
ret = \
|
||||||
|
$$printInstallPath(Documentation, docdir, doc) \
|
||||||
|
$$printInstallPath(Headers, headerdir, include) \
|
||||||
|
$$printInstallPath(Libraries, libdir, lib) \
|
||||||
|
$$printInstallPath(LibraryExecutables, libexecdir, $$DEFAULT_LIBEXEC) \
|
||||||
|
$$printInstallPath(Binaries, bindir, bin) \
|
||||||
|
$$printInstallPath(Plugins, plugindir, plugins) \
|
||||||
|
$$printInstallPath(Imports, importdir, imports) \
|
||||||
|
$$printInstallPath(Qml2Imports, qmldir, qml) \
|
||||||
|
$$printInstallPath(ArchData, archdatadir, .) \
|
||||||
|
$$printInstallPath(Data, datadir, .) \
|
||||||
|
$$printInstallPath(Translations, translationdir, translations) \
|
||||||
|
$$printInstallPath(Examples, examplesdir, examples) \
|
||||||
|
$$printInstallPath(Tests, testsdir, tests)
|
||||||
|
return($$ret)
|
||||||
|
}
|
||||||
|
|
||||||
|
defineReplace(printHostPaths) {
|
||||||
|
ret = \
|
||||||
|
"HostPrefix=$$config.input.hostprefix" \
|
||||||
|
$$printInstallPath(HostBinaries, hostbindir, bin) \
|
||||||
|
$$printInstallPath(HostLibraries, hostlibdir, lib) \
|
||||||
|
$$printInstallPath(HostData, hostdatadir, .) \
|
||||||
|
"Sysroot=$$config.input.sysroot" \
|
||||||
|
"TargetSpec=$$[QMAKE_XSPEC]" \
|
||||||
|
"HostSpec=$$[QMAKE_SPEC]"
|
||||||
|
return($$ret)
|
||||||
|
}
|
||||||
|
|
||||||
|
defineTest(qtConfOutput_preparePaths) {
|
||||||
|
isEmpty(config.input.prefix) {
|
||||||
|
$$qtConfEvaluate("features.developer-build"): \
|
||||||
|
config.input.prefix = $$QT_BUILD_TREE # In Development, we use sandboxed builds by default
|
||||||
|
else: \
|
||||||
|
config.input.prefix = /usr/local/Qt-$$[QT_VERSION]
|
||||||
|
have_prefix = false
|
||||||
|
} else {
|
||||||
|
config.input.prefix = $$absolute_path($$config.input.prefix, $$OUT_PWD)
|
||||||
|
have_prefix = true
|
||||||
|
}
|
||||||
|
|
||||||
|
isEmpty(config.input.extprefix) {
|
||||||
|
config.input.extprefix = $$config.input.prefix
|
||||||
|
!isEmpty(config.input.sysroot): \
|
||||||
|
qmake_sysrootify = true
|
||||||
|
else: \
|
||||||
|
qmake_sysrootify = false
|
||||||
|
} else {
|
||||||
|
config.input.extprefix = $$absolute_path($$config.input.extprefix, $$OUT_PWD)
|
||||||
|
qmake_sysrootify = false
|
||||||
|
}
|
||||||
|
|
||||||
|
isEmpty(config.input.hostprefix) {
|
||||||
|
$$qmake_sysrootify: \
|
||||||
|
config.input.hostprefix = $$config.input.sysroot$$config.input.extprefix
|
||||||
|
else: \
|
||||||
|
config.input.hostprefix = $$config.input.extprefix
|
||||||
|
have_hostprefix = false
|
||||||
|
} else {
|
||||||
|
isEqual(config.input.hostprefix, yes): \
|
||||||
|
config.input.hostprefix = $$QT_BUILD_TREE
|
||||||
|
else: \
|
||||||
|
config.input.hostprefix = $$absolute_path($$config.input.hostprefix, $$OUT_PWD)
|
||||||
|
have_hostprefix = true
|
||||||
|
}
|
||||||
|
|
||||||
|
PREFIX_COMPLAINTS =
|
||||||
|
PREFIX_REMINDER = false
|
||||||
|
win32: \
|
||||||
|
DEFAULT_LIBEXEC = bin
|
||||||
|
else: \
|
||||||
|
DEFAULT_LIBEXEC = libexec
|
||||||
|
darwin: \
|
||||||
|
DEFAULT_SYSCONFDIR = /Library/Preferences/Qt
|
||||||
|
else: \
|
||||||
|
DEFAULT_SYSCONFDIR = etc/xdg
|
||||||
|
|
||||||
|
processQtPath("", headerdir, include)
|
||||||
|
processQtPath("", libdir, lib)
|
||||||
|
processQtPath("", bindir, bin)
|
||||||
|
processQtPath("", datadir, .)
|
||||||
|
!equals(config.rel_input.datadir, .): \
|
||||||
|
data_pfx = $$config.rel_input.datadir/
|
||||||
|
processQtPath("", docdir, $${data_pfx}doc)
|
||||||
|
processQtPath("", translationdir, $${data_pfx}translations)
|
||||||
|
processQtPath("", examplesdir, $${data_pfx}examples)
|
||||||
|
processQtPath("", testsdir, tests)
|
||||||
|
processQtPath("", archdatadir, .)
|
||||||
|
!equals(config.rel_input.archdatadir, .): \
|
||||||
|
archdata_pfx = $$config.rel_input.archdatadir/
|
||||||
|
processQtPath("", libexecdir, $${archdata_pfx}$$DEFAULT_LIBEXEC)
|
||||||
|
processQtPath("", plugindir, $${archdata_pfx}plugins)
|
||||||
|
processQtPath("", importdir, $${archdata_pfx}imports)
|
||||||
|
processQtPath("", qmldir, $${archdata_pfx}qml)
|
||||||
|
processQtPath("", sysconfdir, $$DEFAULT_SYSCONFDIR)
|
||||||
|
$$have_hostprefix {
|
||||||
|
processQtPath(host, hostbindir, bin)
|
||||||
|
processQtPath(host, hostlibdir, lib)
|
||||||
|
processQtPath(host, hostdatadir, .)
|
||||||
|
} else {
|
||||||
|
processQtPath(host, hostbindir, $$config.rel_input.bindir)
|
||||||
|
processQtPath(host, hostlibdir, $$config.rel_input.libdir)
|
||||||
|
processQtPath(host, hostdatadir, $$config.rel_input.archdatadir)
|
||||||
|
}
|
||||||
|
|
||||||
|
!isEmpty(PREFIX_COMPLAINTS) {
|
||||||
|
PREFIX_COMPLAINTS = "$$join(PREFIX_COMPLAINTS, "$$escape_expand(\\n)Note: ")"
|
||||||
|
$$PREFIX_REMINDER: \
|
||||||
|
PREFIX_COMPLAINTS += "Maybe you forgot to specify -prefix/-hostprefix?"
|
||||||
|
qtConfAddNote($$PREFIX_COMPLAINTS)
|
||||||
|
}
|
||||||
|
|
||||||
|
# populate qconfig.cpp (for qtcore)
|
||||||
|
|
||||||
|
QT_CONFIGURE_STR_OFF = 0
|
||||||
|
QT_CONFIGURE_STR_OFFSETS =
|
||||||
|
QT_CONFIGURE_STRS =
|
||||||
|
|
||||||
|
addConfStr($$config.rel_input.docdir)
|
||||||
|
addConfStr($$config.rel_input.headerdir)
|
||||||
|
addConfStr($$config.rel_input.libdir)
|
||||||
|
addConfStr($$config.rel_input.libexecdir)
|
||||||
|
addConfStr($$config.rel_input.bindir)
|
||||||
|
addConfStr($$config.rel_input.plugindir)
|
||||||
|
addConfStr($$config.rel_input.importdir)
|
||||||
|
addConfStr($$config.rel_input.qmldir)
|
||||||
|
addConfStr($$config.rel_input.archdatadir)
|
||||||
|
addConfStr($$config.rel_input.datadir)
|
||||||
|
addConfStr($$config.rel_input.translationdir)
|
||||||
|
addConfStr($$config.rel_input.examplesdir)
|
||||||
|
addConfStr($$config.rel_input.testsdir)
|
||||||
|
|
||||||
|
$${currentConfig}.output.qconfigSource = \
|
||||||
|
"/* 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 [12+256] = \"qt_prfxpath=$$config.input.prefix\";" \
|
||||||
|
"" \
|
||||||
|
"static const short qt_configure_str_offsets[] = {" \
|
||||||
|
$$QT_CONFIGURE_STR_OFFSETS \
|
||||||
|
"};" \
|
||||||
|
"static const char qt_configure_strs[] =" \
|
||||||
|
$$QT_CONFIGURE_STRS \
|
||||||
|
";" \
|
||||||
|
"" \
|
||||||
|
"$${LITERAL_HASH}define QT_CONFIGURE_SETTINGS_PATH \"$$config.rel_input.sysconfdir\"" \
|
||||||
|
"" \
|
||||||
|
"$${LITERAL_HASH}define QT_CONFIGURE_PREFIX_PATH qt_configure_prefix_path_str + 12"
|
||||||
|
export($${currentConfig}.output.qconfigSource)
|
||||||
|
|
||||||
|
# populate qmake/builtin-qt.conf
|
||||||
|
|
||||||
|
$${currentConfig}.output.builtinQtConf = \
|
||||||
|
" " \
|
||||||
|
"===========================================================" \
|
||||||
|
"==================== qt.conf beginning ====================" \
|
||||||
|
"===========================================================" \
|
||||||
|
"[Paths]" \
|
||||||
|
"ExtPrefix=$$config.input.extprefix" \
|
||||||
|
"Prefix=$$config.input.prefix" \
|
||||||
|
$$printInstallPaths() \
|
||||||
|
"Settings=$$config.rel_input.sysconfdir" \
|
||||||
|
$$printHostPaths()
|
||||||
|
export($${currentConfig}.output.builtinQtConf)
|
||||||
|
|
||||||
|
# create bin/qt.conf. this doesn't use the regular file output
|
||||||
|
# mechanism, as the file is relied upon by configure tests.
|
||||||
|
|
||||||
|
cont = \
|
||||||
|
"[EffectivePaths]" \
|
||||||
|
"Prefix=.." \
|
||||||
|
"[DevicePaths]" \
|
||||||
|
"Prefix=$$config.input.prefix" \
|
||||||
|
$$printInstallPaths() \
|
||||||
|
"[Paths]" \
|
||||||
|
"Prefix=$$config.input.extprefix" \
|
||||||
|
$$printInstallPaths() \
|
||||||
|
$$printHostPaths()
|
||||||
|
!equals(QT_SOURCE_TREE, $$QT_BUILD_TREE): \
|
||||||
|
cont += \
|
||||||
|
"[EffectiveSourcePaths]" \
|
||||||
|
"Prefix=$$QT_SOURCE_TREE"
|
||||||
|
write_file($$QT_BUILD_TREE/bin/qt.conf, cont)|error()
|
||||||
|
reload_properties()
|
||||||
|
}
|
||||||
|
|
||||||
defineTest(qtConfOutput_shared) {
|
defineTest(qtConfOutput_shared) {
|
||||||
!$${2}: return()
|
!$${2}: return()
|
||||||
|
|
||||||
|
@ -1675,7 +1675,7 @@ defineTest(qtConfProcessOutput) {
|
|||||||
$${currentConfig}.output.$$type += "$$k -= $$eval($${currentConfig}.output.$${type}.remove.$$k)"
|
$${currentConfig}.output.$$type += "$$k -= $$eval($${currentConfig}.output.$${type}.remove.$$k)"
|
||||||
for (k, $${currentConfig}.output.$${type}.append._KEYS_): \
|
for (k, $${currentConfig}.output.$${type}.append._KEYS_): \
|
||||||
$${currentConfig}.output.$$type += "$$k += $$eval($${currentConfig}.output.$${type}.append.$$k)"
|
$${currentConfig}.output.$$type += "$$k += $$eval($${currentConfig}.output.$${type}.append.$$k)"
|
||||||
} else {
|
} else: contains(type, ".*Header") {
|
||||||
for (define, $${currentConfig}.output.$${type}._KEYS_) {
|
for (define, $${currentConfig}.output.$${type}._KEYS_) {
|
||||||
value = $$eval($${currentConfig}.output.$${type}.$${define})
|
value = $$eval($${currentConfig}.output.$${type}.$${define})
|
||||||
$${currentConfig}.output.$$type += "$${LITERAL_HASH}define $$define $$value"
|
$${currentConfig}.output.$$type += "$${LITERAL_HASH}define $$define $$value"
|
||||||
|
@ -66,7 +66,6 @@ DEPEND_SRC = \
|
|||||||
$(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \
|
$(SOURCE_PATH)/src/corelib/io/qdir.cpp $(SOURCE_PATH)/src/corelib/plugin/quuid.cpp \
|
||||||
$(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \
|
$(SOURCE_PATH)/src/corelib/io/qfileinfo.cpp $(SOURCE_PATH)/src/corelib/tools/qdatetime.cpp \
|
||||||
$(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp $(SOURCE_PATH)/src/corelib/tools/qmap.cpp \
|
$(SOURCE_PATH)/src/corelib/tools/qstringlist.cpp $(SOURCE_PATH)/src/corelib/tools/qmap.cpp \
|
||||||
$(SOURCE_PATH)/src/corelib/global/qconfig.cpp \
|
|
||||||
$(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp \
|
$(SOURCE_PATH)/src/corelib/tools/qstringbuilder.cpp \
|
||||||
$(SOURCE_PATH)/src/corelib/tools/qlocale.cpp \
|
$(SOURCE_PATH)/src/corelib/tools/qlocale.cpp \
|
||||||
$(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp \
|
$(SOURCE_PATH)/src/corelib/tools/qlocale_tools.cpp \
|
||||||
@ -225,7 +224,7 @@ qsettings.o: $(SOURCE_PATH)/src/corelib/io/qsettings.cpp
|
|||||||
qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
|
qsystemerror.o: $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
|
||||||
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
|
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/kernel/qsystemerror.cpp
|
||||||
|
|
||||||
qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp $(BUILD_PATH)/src/corelib/global/qconfig.cpp
|
qlibraryinfo.o: $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
|
||||||
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
|
$(CXX) -c -o $@ $(CXXFLAGS) $(SOURCE_PATH)/src/corelib/global/qlibraryinfo.cpp
|
||||||
|
|
||||||
qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
|
qnumeric.o: $(SOURCE_PATH)/src/corelib/global/qnumeric.cpp
|
||||||
|
@ -154,8 +154,6 @@ $(OBJS): $(PCH_OBJECT)
|
|||||||
|
|
||||||
$(QTOBJS): $(PCH_OBJECT)
|
$(QTOBJS): $(PCH_OBJECT)
|
||||||
|
|
||||||
qlibraryinfo.obj: $(BUILD_PATH)\src\corelib\global\qconfig.cpp
|
|
||||||
|
|
||||||
qmake_pch.obj:
|
qmake_pch.obj:
|
||||||
$(CXX) $(CXXFLAGS_BARE) -c -Yc -Fpqmake_pch.pch -TP $(QMKSRC)\qmake_pch.h
|
$(CXX) $(CXXFLAGS_BARE) -c -Yc -Fpqmake_pch.pch -TP $(QMKSRC)\qmake_pch.h
|
||||||
|
|
||||||
|
@ -101,7 +101,7 @@ enum TestFunc {
|
|||||||
T_EXISTS, T_EXPORT, T_CLEAR, T_UNSET, T_EVAL, T_CONFIG, T_SYSTEM,
|
T_EXISTS, T_EXPORT, T_CLEAR, T_UNSET, T_EVAL, T_CONFIG, T_SYSTEM,
|
||||||
T_DEFINED, T_DISCARD_FROM, T_CONTAINS, T_INFILE,
|
T_DEFINED, T_DISCARD_FROM, T_CONTAINS, T_INFILE,
|
||||||
T_COUNT, T_ISEMPTY, T_PARSE_JSON, T_INCLUDE, T_LOAD, T_DEBUG, T_LOG, T_MESSAGE, T_WARNING, T_ERROR, T_IF,
|
T_COUNT, T_ISEMPTY, T_PARSE_JSON, T_INCLUDE, T_LOAD, T_DEBUG, T_LOG, T_MESSAGE, T_WARNING, T_ERROR, T_IF,
|
||||||
T_MKPATH, T_WRITE_FILE, T_TOUCH, T_CACHE
|
T_MKPATH, T_WRITE_FILE, T_TOUCH, T_CACHE, T_RELOAD_PROPERTIES
|
||||||
};
|
};
|
||||||
|
|
||||||
void QMakeEvaluator::initFunctionStatics()
|
void QMakeEvaluator::initFunctionStatics()
|
||||||
@ -200,6 +200,7 @@ void QMakeEvaluator::initFunctionStatics()
|
|||||||
{ "write_file", T_WRITE_FILE },
|
{ "write_file", T_WRITE_FILE },
|
||||||
{ "touch", T_TOUCH },
|
{ "touch", T_TOUCH },
|
||||||
{ "cache", T_CACHE },
|
{ "cache", T_CACHE },
|
||||||
|
{ "reload_properties", T_RELOAD_PROPERTIES },
|
||||||
};
|
};
|
||||||
statics.functions.reserve((int)(sizeof(testInits)/sizeof(testInits[0])));
|
statics.functions.reserve((int)(sizeof(testInits)/sizeof(testInits[0])));
|
||||||
for (unsigned i = 0; i < sizeof(testInits)/sizeof(testInits[0]); ++i)
|
for (unsigned i = 0; i < sizeof(testInits)/sizeof(testInits[0]); ++i)
|
||||||
@ -2015,6 +2016,11 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
|
|||||||
}
|
}
|
||||||
return writeFile(fL1S("cache "), fn, QIODevice::Append, false, varstr);
|
return writeFile(fL1S("cache "), fn, QIODevice::Append, false, varstr);
|
||||||
}
|
}
|
||||||
|
case T_RELOAD_PROPERTIES:
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
m_option->reloadProperties();
|
||||||
|
#endif
|
||||||
|
return ReturnTrue;
|
||||||
default:
|
default:
|
||||||
evalError(fL1S("Function '%1' is not implemented.").arg(function.toQString(m_tmp1)));
|
evalError(fL1S("Function '%1' is not implemented.").arg(function.toQString(m_tmp1)));
|
||||||
return ReturnFalse;
|
return ReturnFalse;
|
||||||
|
@ -125,6 +125,7 @@ public:
|
|||||||
void setDirectories(const QString &input_dir, const QString &output_dir);
|
void setDirectories(const QString &input_dir, const QString &output_dir);
|
||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
void setQMakeProperty(QMakeProperty *prop) { property = prop; }
|
void setQMakeProperty(QMakeProperty *prop) { property = prop; }
|
||||||
|
void reloadProperties() { property->reload(); }
|
||||||
ProString propertyValue(const ProKey &name) const { return property->value(name); }
|
ProString propertyValue(const ProKey &name) const { return property->value(name); }
|
||||||
#else
|
#else
|
||||||
# ifdef PROEVALUATOR_INIT_PROPS
|
# ifdef PROEVALUATOR_INIT_PROPS
|
||||||
|
@ -638,6 +638,11 @@ qmakeAddCacheClear(qmakeCacheClearFunc func, void **data)
|
|||||||
cache_items.append(new QMakeCacheClearItem(func, data));
|
cache_items.append(new QMakeCacheClearItem(func, data));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString qmake_absoluteLocation()
|
||||||
|
{
|
||||||
|
return Option::globals->qmake_abslocation;
|
||||||
|
}
|
||||||
|
|
||||||
QString qmake_libraryInfoFile()
|
QString qmake_libraryInfoFile()
|
||||||
{
|
{
|
||||||
if (!Option::globals->qtconf.isEmpty())
|
if (!Option::globals->qtconf.isEmpty())
|
||||||
|
@ -70,6 +70,12 @@ static const struct {
|
|||||||
|
|
||||||
QMakeProperty::QMakeProperty() : settings(0)
|
QMakeProperty::QMakeProperty() : settings(0)
|
||||||
{
|
{
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QMakeProperty::reload()
|
||||||
|
{
|
||||||
|
QLibraryInfo::reload();
|
||||||
for (unsigned i = 0; i < sizeof(propList)/sizeof(propList[0]); i++) {
|
for (unsigned i = 0; i < sizeof(propList)/sizeof(propList[0]); i++) {
|
||||||
QString name = QString::fromLatin1(propList[i].name);
|
QString name = QString::fromLatin1(propList[i].name);
|
||||||
if (!propList[i].singular) {
|
if (!propList[i].singular) {
|
||||||
|
@ -50,6 +50,8 @@ public:
|
|||||||
QMakeProperty();
|
QMakeProperty();
|
||||||
~QMakeProperty();
|
~QMakeProperty();
|
||||||
|
|
||||||
|
void reload();
|
||||||
|
|
||||||
bool hasValue(const ProKey &);
|
bool hasValue(const ProKey &);
|
||||||
ProString value(const ProKey &);
|
ProString value(const ProKey &);
|
||||||
|
|
||||||
|
@ -6,6 +6,24 @@ QMAKE_DOCS = $$PWD/doc/qmake.qdocconf
|
|||||||
|
|
||||||
# qmake binary
|
# qmake binary
|
||||||
win32: EXTENSION = .exe
|
win32: EXTENSION = .exe
|
||||||
|
|
||||||
|
!build_pass {
|
||||||
|
qmake_exe.target = $$OUT_PWD/qmake$$EXTENSION
|
||||||
|
qmake_exe.depends = ../bin/qmake$$EXTENSION builtin-qt.conf
|
||||||
|
equals(QMAKE_DIR_SEP, /): \
|
||||||
|
qmake_exe.commands = cat ../bin/qmake$$EXTENSION builtin-qt.conf > qmake$$EXTENSION && chmod +x qmake$$EXTENSION
|
||||||
|
else: \
|
||||||
|
qmake_exe.commands = copy /B ..\bin\qmake$$EXTENSION + builtin-qt.conf qmake$$EXTENSION
|
||||||
|
QMAKE_EXTRA_TARGETS += qmake_exe
|
||||||
|
|
||||||
|
QMAKE_CLEAN += builtin-qt.conf
|
||||||
|
QMAKE_DISTCLEAN += qmake$$EXTENSION
|
||||||
|
|
||||||
|
first.depends += qmake_exe
|
||||||
|
QMAKE_EXTRA_TARGETS += first
|
||||||
|
}
|
||||||
|
|
||||||
qmake.path = $$[QT_HOST_BINS]
|
qmake.path = $$[QT_HOST_BINS]
|
||||||
qmake.files = $$OUT_PWD/../bin/qmake$$EXTENSION
|
qmake.files = $$OUT_PWD/qmake$$EXTENSION
|
||||||
|
qmake.CONFIG = no_check_exist executable
|
||||||
INSTALLS += qmake
|
INSTALLS += qmake
|
||||||
|
@ -41,15 +41,18 @@
|
|||||||
#include "qdir.h"
|
#include "qdir.h"
|
||||||
#include "qstringlist.h"
|
#include "qstringlist.h"
|
||||||
#include "qfile.h"
|
#include "qfile.h"
|
||||||
|
#include "qtemporaryfile.h"
|
||||||
#include "qsettings.h"
|
#include "qsettings.h"
|
||||||
#include "qlibraryinfo.h"
|
#include "qlibraryinfo.h"
|
||||||
#include "qscopedpointer.h"
|
#include "qscopedpointer.h"
|
||||||
|
|
||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
extern QString qmake_absoluteLocation();
|
||||||
extern QString qmake_libraryInfoFile();
|
extern QString qmake_libraryInfoFile();
|
||||||
QT_END_NAMESPACE
|
QT_END_NAMESPACE
|
||||||
#else
|
#else
|
||||||
|
# include "qconfig.cpp"
|
||||||
# include "qcoreapplication.h"
|
# include "qcoreapplication.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -57,7 +60,6 @@ QT_END_NAMESPACE
|
|||||||
# include "private/qcore_mac_p.h"
|
# include "private/qcore_mac_p.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "qconfig.cpp"
|
|
||||||
#include "archdetect.cpp"
|
#include "archdetect.cpp"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
@ -70,9 +72,16 @@ struct QLibrarySettings
|
|||||||
{
|
{
|
||||||
QLibrarySettings();
|
QLibrarySettings();
|
||||||
void load();
|
void load();
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
void loadBuiltinValues(QSettings *config);
|
||||||
|
#endif
|
||||||
|
|
||||||
QScopedPointer<QSettings> settings;
|
QScopedPointer<QSettings> settings;
|
||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
QString builtinValues[QLibraryInfo::LastHostPath + 1];
|
||||||
|
# ifndef Q_OS_WIN
|
||||||
|
QString builtinSettingsPath;
|
||||||
|
# endif
|
||||||
bool haveDevicePaths;
|
bool haveDevicePaths;
|
||||||
bool haveEffectiveSourcePaths;
|
bool haveEffectiveSourcePaths;
|
||||||
bool haveEffectivePaths;
|
bool haveEffectivePaths;
|
||||||
@ -88,6 +97,11 @@ class QLibraryInfoPrivate
|
|||||||
public:
|
public:
|
||||||
static QSettings *findConfiguration();
|
static QSettings *findConfiguration();
|
||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
static void reload()
|
||||||
|
{
|
||||||
|
if (qt_library_settings.exists())
|
||||||
|
qt_library_settings->load();
|
||||||
|
}
|
||||||
static bool haveGroup(QLibraryInfo::PathGroup group)
|
static bool haveGroup(QLibraryInfo::PathGroup group)
|
||||||
{
|
{
|
||||||
QLibrarySettings *ls = qt_library_settings();
|
QLibrarySettings *ls = qt_library_settings();
|
||||||
@ -99,6 +113,25 @@ public:
|
|||||||
? ls->haveDevicePaths
|
? ls->haveDevicePaths
|
||||||
: ls->havePaths) : false;
|
: ls->havePaths) : false;
|
||||||
}
|
}
|
||||||
|
static bool sysrootify()
|
||||||
|
{
|
||||||
|
// This is actually bogus, as it does not consider post-configure settings.
|
||||||
|
QLibrarySettings *ls = qt_library_settings();
|
||||||
|
return ls ? (!ls->builtinValues[QLibraryInfo::SysrootPath].isEmpty()
|
||||||
|
&& ls->builtinValues[QLibraryInfo::ExtPrefixPath].isEmpty()) : false;
|
||||||
|
}
|
||||||
|
static QString builtinValue(int loc)
|
||||||
|
{
|
||||||
|
QLibrarySettings *ls = qt_library_settings();
|
||||||
|
return ls ? ls->builtinValues[loc] : QString();
|
||||||
|
}
|
||||||
|
# ifndef Q_OS_WIN
|
||||||
|
static QString builtinSettingsPath()
|
||||||
|
{
|
||||||
|
QLibrarySettings *ls = qt_library_settings();
|
||||||
|
return ls ? ls->builtinSettingsPath : QString();
|
||||||
|
}
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
static QSettings *configuration()
|
static QSettings *configuration()
|
||||||
{
|
{
|
||||||
@ -122,6 +155,20 @@ QLibrarySettings::QLibrarySettings()
|
|||||||
load();
|
load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
static QByteArray qtconfSeparator()
|
||||||
|
{
|
||||||
|
# ifdef Q_OS_WIN
|
||||||
|
QByteArray header = QByteArrayLiteral("\r\n===========================================================\r\n");
|
||||||
|
# else
|
||||||
|
QByteArray header = QByteArrayLiteral("\n===========================================================\n");
|
||||||
|
# endif
|
||||||
|
QByteArray content = QByteArrayLiteral("==================== qt.conf beginning ====================");
|
||||||
|
// Assemble from pieces to avoid that the string appears in a raw executable
|
||||||
|
return header + content + header;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void QLibrarySettings::load()
|
void QLibrarySettings::load()
|
||||||
{
|
{
|
||||||
// If we get any settings here, those won't change when the application shows up.
|
// If we get any settings here, those won't change when the application shows up.
|
||||||
@ -159,6 +206,27 @@ void QLibrarySettings::load()
|
|||||||
havePaths = false;
|
havePaths = false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
// Try to use an embedded qt.conf appended to the QMake executable.
|
||||||
|
QFile qmakeFile(qmake_absoluteLocation());
|
||||||
|
if (!qmakeFile.open(QIODevice::ReadOnly))
|
||||||
|
return;
|
||||||
|
qmakeFile.seek(qmakeFile.size() - 10000);
|
||||||
|
QByteArray tail = qmakeFile.read(10000);
|
||||||
|
QByteArray separator = qtconfSeparator();
|
||||||
|
int qtconfOffset = tail.lastIndexOf(separator);
|
||||||
|
if (qtconfOffset < 0)
|
||||||
|
return;
|
||||||
|
tail.remove(0, qtconfOffset + separator.size());
|
||||||
|
// If QSettings had a c'tor taking a QIODevice, we'd pass a QBuffer ...
|
||||||
|
QTemporaryFile tmpFile;
|
||||||
|
tmpFile.open();
|
||||||
|
tmpFile.write(tail);
|
||||||
|
tmpFile.close();
|
||||||
|
QSettings builtinSettings(tmpFile.fileName(), QSettings::IniFormat);
|
||||||
|
loadBuiltinValues(&builtinSettings);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QSettings *QLibraryInfoPrivate::findConfiguration()
|
QSettings *QLibraryInfoPrivate::findConfiguration()
|
||||||
@ -420,10 +488,30 @@ static const struct {
|
|||||||
{ "HostData", "." },
|
{ "HostData", "." },
|
||||||
{ "TargetSpec", "" },
|
{ "TargetSpec", "" },
|
||||||
{ "HostSpec", "" },
|
{ "HostSpec", "" },
|
||||||
|
{ "ExtPrefix", "" },
|
||||||
{ "HostPrefix", "" },
|
{ "HostPrefix", "" },
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
void QLibrarySettings::loadBuiltinValues(QSettings *config)
|
||||||
|
{
|
||||||
|
config->beginGroup(QLatin1String("Paths"));
|
||||||
|
for (int i = 0; i <= QLibraryInfo::LastHostPath; i++)
|
||||||
|
builtinValues[i] = config->value(QLatin1String(qtConfEntries[i].key),
|
||||||
|
QLatin1String(qtConfEntries[i].value)).toString();
|
||||||
|
# ifndef Q_OS_WIN
|
||||||
|
builtinSettingsPath = config->value(QLatin1String("Settings")).toString();
|
||||||
|
# endif
|
||||||
|
config->endGroup();
|
||||||
|
}
|
||||||
|
|
||||||
|
void QLibraryInfo::reload()
|
||||||
|
{
|
||||||
|
QLibraryInfoPrivate::reload();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Returns the location specified by \a loc.
|
Returns the location specified by \a loc.
|
||||||
*/
|
*/
|
||||||
@ -434,7 +522,7 @@ QLibraryInfo::location(LibraryLocation loc)
|
|||||||
QString ret = rawLocation(loc, FinalPaths);
|
QString ret = rawLocation(loc, FinalPaths);
|
||||||
|
|
||||||
// Automatically prepend the sysroot to target paths
|
// Automatically prepend the sysroot to target paths
|
||||||
if ((loc < SysrootPath || loc > LastHostPath) && QT_CONFIGURE_SYSROOTIFY_PREFIX) {
|
if ((loc < SysrootPath || loc > LastHostPath) && QLibraryInfoPrivate::sysrootify()) {
|
||||||
QString sysroot = rawLocation(SysrootPath, FinalPaths);
|
QString sysroot = rawLocation(SysrootPath, FinalPaths);
|
||||||
if (!sysroot.isEmpty() && ret.length() > 2 && ret.at(1) == QLatin1Char(':')
|
if (!sysroot.isEmpty() && ret.length() > 2 && ret.at(1) == QLatin1Char(':')
|
||||||
&& (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\')))
|
&& (ret.at(2) == QLatin1Char('/') || ret.at(2) == QLatin1Char('\\')))
|
||||||
@ -528,28 +616,32 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
|
|||||||
#endif // QT_NO_SETTINGS
|
#endif // QT_NO_SETTINGS
|
||||||
|
|
||||||
if (!fromConf) {
|
if (!fromConf) {
|
||||||
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
if ((unsigned)loc <= (unsigned)LastHostPath) {
|
||||||
|
if (loc == PrefixPath && group != DevicePaths)
|
||||||
|
ret = QLibraryInfoPrivate::builtinValue(ExtPrefixPath);
|
||||||
|
else
|
||||||
|
ret = QLibraryInfoPrivate::builtinValue(loc);
|
||||||
|
# ifndef Q_OS_WIN // On Windows we use the registry
|
||||||
|
} else if (loc == SettingsPath) {
|
||||||
|
ret = QLibraryInfoPrivate::builtinSettingsPath();
|
||||||
|
# endif
|
||||||
|
}
|
||||||
|
#else // QT_BUILD_QMAKE
|
||||||
const char * volatile path = 0;
|
const char * volatile path = 0;
|
||||||
if (loc == PrefixPath) {
|
if (loc == PrefixPath) {
|
||||||
path =
|
path = QT_CONFIGURE_PREFIX_PATH;
|
||||||
#ifdef QT_BUILD_QMAKE
|
|
||||||
(group != DevicePaths) ?
|
|
||||||
QT_CONFIGURE_EXT_PREFIX_PATH :
|
|
||||||
#endif
|
|
||||||
QT_CONFIGURE_PREFIX_PATH;
|
|
||||||
} else if (unsigned(loc) <= sizeof(qt_configure_str_offsets)/sizeof(qt_configure_str_offsets[0])) {
|
} else if (unsigned(loc) <= sizeof(qt_configure_str_offsets)/sizeof(qt_configure_str_offsets[0])) {
|
||||||
path = qt_configure_strs + qt_configure_str_offsets[loc - 1];
|
path = qt_configure_strs + qt_configure_str_offsets[loc - 1];
|
||||||
#ifndef Q_OS_WIN // On Windows we use the registry
|
#ifndef Q_OS_WIN // On Windows we use the registry
|
||||||
} else if (loc == SettingsPath) {
|
} else if (loc == SettingsPath) {
|
||||||
path = QT_CONFIGURE_SETTINGS_PATH;
|
path = QT_CONFIGURE_SETTINGS_PATH;
|
||||||
#endif
|
|
||||||
#ifdef QT_BUILD_QMAKE
|
|
||||||
} else if (loc == HostPrefixPath) {
|
|
||||||
path = QT_CONFIGURE_HOST_PREFIX_PATH;
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (path)
|
if (path)
|
||||||
ret = QString::fromLocal8Bit(path);
|
ret = QString::fromLocal8Bit(path);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
|
@ -96,6 +96,7 @@ public:
|
|||||||
HostDataPath,
|
HostDataPath,
|
||||||
TargetSpecPath,
|
TargetSpecPath,
|
||||||
HostSpecPath,
|
HostSpecPath,
|
||||||
|
ExtPrefixPath,
|
||||||
HostPrefixPath,
|
HostPrefixPath,
|
||||||
LastHostPath = HostPrefixPath,
|
LastHostPath = HostPrefixPath,
|
||||||
#endif
|
#endif
|
||||||
@ -105,6 +106,7 @@ public:
|
|||||||
#ifdef QT_BUILD_QMAKE
|
#ifdef QT_BUILD_QMAKE
|
||||||
enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths, DevicePaths };
|
enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths, DevicePaths };
|
||||||
static QString rawLocation(LibraryLocation, PathGroup);
|
static QString rawLocation(LibraryLocation, PathGroup);
|
||||||
|
static void reload();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static QStringList platformPluginArguments(const QString &platformName);
|
static QStringList platformPluginArguments(const QString &platformName);
|
||||||
|
@ -48,14 +48,6 @@
|
|||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
enum Platforms {
|
|
||||||
WINDOWS,
|
|
||||||
WINDOWS_RT,
|
|
||||||
QNX,
|
|
||||||
ANDROID,
|
|
||||||
OTHER
|
|
||||||
};
|
|
||||||
|
|
||||||
std::ostream &operator<<(std::ostream &s, const QString &val) {
|
std::ostream &operator<<(std::ostream &s, const QString &val) {
|
||||||
s << val.toLocal8Bit().data();
|
s << val.toLocal8Bit().data();
|
||||||
return s;
|
return s;
|
||||||
@ -84,19 +76,12 @@ Configure::Configure(int& argc, char** argv)
|
|||||||
sourceDir = sourcePathInfo.dir();
|
sourceDir = sourcePathInfo.dir();
|
||||||
}
|
}
|
||||||
buildPath = QDir::currentPath();
|
buildPath = QDir::currentPath();
|
||||||
#if 0
|
|
||||||
const QString installPath = QString("C:\\Qt\\%1").arg(QT_VERSION_STR);
|
|
||||||
#else
|
|
||||||
const QString installPath = buildPath;
|
|
||||||
#endif
|
|
||||||
if (sourceDir != buildDir) { //shadow builds!
|
if (sourceDir != buildDir) { //shadow builds!
|
||||||
QDir(buildPath).mkpath("bin");
|
QDir(buildPath).mkpath("bin");
|
||||||
|
|
||||||
buildDir.mkpath("mkspecs");
|
buildDir.mkpath("mkspecs");
|
||||||
}
|
}
|
||||||
|
|
||||||
dictionary[ "QT_INSTALL_PREFIX" ] = installPath;
|
|
||||||
|
|
||||||
if (dictionary[ "QMAKESPEC" ].size() == 0) {
|
if (dictionary[ "QMAKESPEC" ].size() == 0) {
|
||||||
dictionary[ "QMAKESPEC" ] = Environment::detectQMakeSpec();
|
dictionary[ "QMAKESPEC" ] = Environment::detectQMakeSpec();
|
||||||
dictionary[ "QMAKESPEC_FROM" ] = "detected";
|
dictionary[ "QMAKESPEC_FROM" ] = "detected";
|
||||||
@ -104,9 +89,6 @@ Configure::Configure(int& argc, char** argv)
|
|||||||
|
|
||||||
dictionary[ "SYNCQT" ] = "auto";
|
dictionary[ "SYNCQT" ] = "auto";
|
||||||
|
|
||||||
//Only used when cross compiling.
|
|
||||||
dictionary[ "QT_INSTALL_SETTINGS" ] = "/etc/xdg";
|
|
||||||
|
|
||||||
QString tmp = dictionary[ "QMAKESPEC" ];
|
QString tmp = dictionary[ "QMAKESPEC" ];
|
||||||
if (tmp.contains("\\")) {
|
if (tmp.contains("\\")) {
|
||||||
tmp = tmp.mid(tmp.lastIndexOf("\\") + 1);
|
tmp = tmp.mid(tmp.lastIndexOf("\\") + 1);
|
||||||
@ -197,148 +179,6 @@ void Configure::parseCmdLine()
|
|||||||
else if (configCmdLine.at(i) == "-no-syncqt")
|
else if (configCmdLine.at(i) == "-no-syncqt")
|
||||||
dictionary[ "SYNCQT" ] = "no";
|
dictionary[ "SYNCQT" ] = "no";
|
||||||
|
|
||||||
// Directories ----------------------------------------------
|
|
||||||
else if (configCmdLine.at(i) == "-prefix") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_PREFIX" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-bindir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_BINS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-libexecdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_LIBEXECS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-libdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_LIBS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-docdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_DOCS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-headerdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_HEADERS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-plugindir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_PLUGINS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-importdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_IMPORTS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-qmldir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_QML" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-archdatadir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_ARCHDATA" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-datadir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_DATA" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-translationdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_TRANSLATIONS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-examplesdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_EXAMPLES" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-testsdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_INSTALL_TESTS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-sysroot") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "CFG_SYSROOT" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-hostprefix") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount || configCmdLine.at(i).startsWith('-'))
|
|
||||||
dictionary[ "QT_HOST_PREFIX" ] = buildPath;
|
|
||||||
else
|
|
||||||
dictionary[ "QT_HOST_PREFIX" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-hostbindir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_HOST_BINS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-hostlibdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_HOST_LIBS" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-hostdatadir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_HOST_DATA" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-extprefix") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary[ "QT_EXT_PREFIX" ] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-make-tool") {
|
else if (configCmdLine.at(i) == "-make-tool") {
|
||||||
++i;
|
++i;
|
||||||
if (i == argCount)
|
if (i == argCount)
|
||||||
@ -346,13 +186,6 @@ void Configure::parseCmdLine()
|
|||||||
dictionary[ "MAKE" ] = configCmdLine.at(i);
|
dictionary[ "MAKE" ] = configCmdLine.at(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-sysconfdir") {
|
|
||||||
++i;
|
|
||||||
if (i == argCount)
|
|
||||||
break;
|
|
||||||
dictionary["QT_INSTALL_SETTINGS"] = configCmdLine.at(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (configCmdLine.at(i) == "-android-ndk") {
|
else if (configCmdLine.at(i) == "-android-ndk") {
|
||||||
++i;
|
++i;
|
||||||
if (i == argCount)
|
if (i == argCount)
|
||||||
@ -531,219 +364,6 @@ void Configure::generateHeaders()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Configure::addConfStr(int group, const QString &val)
|
|
||||||
{
|
|
||||||
confStrOffsets[group] += ' ' + QString::number(confStringOff) + ',';
|
|
||||||
confStrings[group] += " \"" + val + "\\0\"\n";
|
|
||||||
confStringOff += val.length() + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Configure::generateQConfigCpp()
|
|
||||||
{
|
|
||||||
QString hostSpec = dictionary["QMAKESPEC"];
|
|
||||||
QString targSpec = dictionary.contains("XQMAKESPEC") ? dictionary["XQMAKESPEC"] : hostSpec;
|
|
||||||
|
|
||||||
dictionary["CFG_SYSROOT"] = QDir::cleanPath(dictionary["CFG_SYSROOT"]);
|
|
||||||
|
|
||||||
bool qipempty = false;
|
|
||||||
if (dictionary["QT_INSTALL_PREFIX"].isEmpty())
|
|
||||||
qipempty = true;
|
|
||||||
else
|
|
||||||
dictionary["QT_INSTALL_PREFIX"] = QDir::cleanPath(dictionary["QT_INSTALL_PREFIX"]);
|
|
||||||
|
|
||||||
bool sysrootifyPrefix;
|
|
||||||
if (dictionary["QT_EXT_PREFIX"].isEmpty()) {
|
|
||||||
dictionary["QT_EXT_PREFIX"] = dictionary["QT_INSTALL_PREFIX"];
|
|
||||||
sysrootifyPrefix = !dictionary["CFG_SYSROOT"].isEmpty();
|
|
||||||
} else {
|
|
||||||
dictionary["QT_EXT_PREFIX"] = QDir::cleanPath(dictionary["QT_EXT_PREFIX"]);
|
|
||||||
sysrootifyPrefix = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool haveHpx;
|
|
||||||
if (dictionary["QT_HOST_PREFIX"].isEmpty()) {
|
|
||||||
dictionary["QT_HOST_PREFIX"] = (sysrootifyPrefix ? dictionary["CFG_SYSROOT"] : QString())
|
|
||||||
+ dictionary["QT_INSTALL_PREFIX"];
|
|
||||||
haveHpx = false;
|
|
||||||
} else {
|
|
||||||
dictionary["QT_HOST_PREFIX"] = QDir::cleanPath(dictionary["QT_HOST_PREFIX"]);
|
|
||||||
haveHpx = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct {
|
|
||||||
const char *basevar, *baseoption, *var, *option;
|
|
||||||
} varmod[] = {
|
|
||||||
{ "INSTALL_", "-prefix", "DOCS", "-docdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "HEADERS", "-headerdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "LIBS", "-libdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "LIBEXECS", "-libexecdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "BINS", "-bindir" },
|
|
||||||
{ "INSTALL_", "-prefix", "PLUGINS", "-plugindir" },
|
|
||||||
{ "INSTALL_", "-prefix", "IMPORTS", "-importdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "QML", "-qmldir" },
|
|
||||||
{ "INSTALL_", "-prefix", "ARCHDATA", "-archdatadir" },
|
|
||||||
{ "INSTALL_", "-prefix", "DATA", "-datadir" },
|
|
||||||
{ "INSTALL_", "-prefix", "TRANSLATIONS", "-translationdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "EXAMPLES", "-examplesdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "TESTS", "-testsdir" },
|
|
||||||
{ "INSTALL_", "-prefix", "SETTINGS", "-sysconfdir" },
|
|
||||||
{ "HOST_", "-hostprefix", "BINS", "-hostbindir" },
|
|
||||||
{ "HOST_", "-hostprefix", "LIBS", "-hostlibdir" },
|
|
||||||
{ "HOST_", "-hostprefix", "DATA", "-hostdatadir" },
|
|
||||||
};
|
|
||||||
|
|
||||||
bool prefixReminder = false;
|
|
||||||
for (uint i = 0; i < sizeof(varmod) / sizeof(varmod[0]); i++) {
|
|
||||||
QString path = QDir::cleanPath(
|
|
||||||
dictionary[QLatin1String("QT_") + varmod[i].basevar + varmod[i].var]);
|
|
||||||
if (path.isEmpty())
|
|
||||||
continue;
|
|
||||||
QString base = dictionary[QLatin1String("QT_") + varmod[i].basevar + "PREFIX"];
|
|
||||||
if (!path.startsWith(base)) {
|
|
||||||
if (i != 13) {
|
|
||||||
dictionary["PREFIX_COMPLAINTS"] += QLatin1String("\n NOTICE: ")
|
|
||||||
+ varmod[i].option + " is not a subdirectory of " + varmod[i].baseoption + ".";
|
|
||||||
if (i < 13 ? qipempty : !haveHpx)
|
|
||||||
prefixReminder = true;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
path.remove(0, base.size());
|
|
||||||
if (path.startsWith('/'))
|
|
||||||
path.remove(0, 1);
|
|
||||||
}
|
|
||||||
dictionary[QLatin1String("QT_REL_") + varmod[i].basevar + varmod[i].var]
|
|
||||||
= path.isEmpty() ? "." : path;
|
|
||||||
}
|
|
||||||
if (prefixReminder) {
|
|
||||||
dictionary["PREFIX_COMPLAINTS"]
|
|
||||||
+= "\n Maybe you forgot to specify -prefix/-hostprefix?";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!qipempty) {
|
|
||||||
// If QT_INSTALL_* have not been specified on the command line,
|
|
||||||
// default them here, unless prefix is empty (WinCE).
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_HEADERS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_HEADERS"] = "include";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_LIBS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_LIBS"] = "lib";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_BINS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_BINS"] = "bin";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_ARCHDATA"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_ARCHDATA"] = ".";
|
|
||||||
if (dictionary["QT_REL_INSTALL_ARCHDATA"] != ".")
|
|
||||||
dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] = dictionary["QT_REL_INSTALL_ARCHDATA"] + '/';
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_LIBEXECS"].isEmpty()) {
|
|
||||||
if (targSpec.startsWith("win"))
|
|
||||||
dictionary["QT_REL_INSTALL_LIBEXECS"] = dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] + "bin";
|
|
||||||
else
|
|
||||||
dictionary["QT_REL_INSTALL_LIBEXECS"] = dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] + "libexec";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_PLUGINS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_PLUGINS"] = dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] + "plugins";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_IMPORTS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_IMPORTS"] = dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] + "imports";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_QML"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_QML"] = dictionary["QT_REL_INSTALL_ARCHDATA_PREFIX"] + "qml";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_DATA"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_DATA"] = ".";
|
|
||||||
if (dictionary["QT_REL_INSTALL_DATA"] != ".")
|
|
||||||
dictionary["QT_REL_INSTALL_DATA_PREFIX"] = dictionary["QT_REL_INSTALL_DATA"] + '/';
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_DOCS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_DOCS"] = dictionary["QT_REL_INSTALL_DATA_PREFIX"] + "doc";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_TRANSLATIONS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_TRANSLATIONS"] = dictionary["QT_REL_INSTALL_DATA_PREFIX"] + "translations";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_EXAMPLES"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_EXAMPLES"] = "examples";
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_INSTALL_TESTS"].isEmpty())
|
|
||||||
dictionary["QT_REL_INSTALL_TESTS"] = "tests";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_HOST_BINS"].isEmpty())
|
|
||||||
dictionary["QT_REL_HOST_BINS"] = haveHpx ? "bin" : dictionary["QT_REL_INSTALL_BINS"];
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_HOST_LIBS"].isEmpty())
|
|
||||||
dictionary["QT_REL_HOST_LIBS"] = haveHpx ? "lib" : dictionary["QT_REL_INSTALL_LIBS"];
|
|
||||||
|
|
||||||
if (dictionary["QT_REL_HOST_DATA"].isEmpty())
|
|
||||||
dictionary["QT_REL_HOST_DATA"] = haveHpx ? "." : dictionary["QT_REL_INSTALL_ARCHDATA"];
|
|
||||||
|
|
||||||
confStringOff = 0;
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_DOCS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_HEADERS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_LIBS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_LIBEXECS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_BINS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_PLUGINS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_IMPORTS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_QML"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_ARCHDATA"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_DATA"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_TRANSLATIONS"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_EXAMPLES"]);
|
|
||||||
addConfStr(0, dictionary["QT_REL_INSTALL_TESTS"]);
|
|
||||||
addConfStr(1, dictionary["CFG_SYSROOT"]);
|
|
||||||
addConfStr(1, dictionary["QT_REL_HOST_BINS"]);
|
|
||||||
addConfStr(1, dictionary["QT_REL_HOST_LIBS"]);
|
|
||||||
addConfStr(1, dictionary["QT_REL_HOST_DATA"]);
|
|
||||||
addConfStr(1, targSpec);
|
|
||||||
addConfStr(1, hostSpec);
|
|
||||||
|
|
||||||
// Generate the new qconfig.cpp file
|
|
||||||
{
|
|
||||||
FileWriter tmpStream(buildPath + "/src/corelib/global/qconfig.cpp");
|
|
||||||
tmpStream << "/* Build date */" << endl
|
|
||||||
<< "static const char qt_configure_installation [11 + 12] = \"qt_instdate=2012-12-20\";" << endl
|
|
||||||
<< endl
|
|
||||||
<< "/* Installation Info */" << endl
|
|
||||||
<< "static const char qt_configure_prefix_path_str [512 + 12] = \"qt_prfxpath=" << dictionary["QT_INSTALL_PREFIX"] << "\";" << endl
|
|
||||||
<< "#ifdef QT_BUILD_QMAKE" << endl
|
|
||||||
<< "static const char qt_configure_ext_prefix_path_str [512 + 12] = \"qt_epfxpath=" << dictionary["QT_EXT_PREFIX"] << "\";" << endl
|
|
||||||
<< "static const char qt_configure_host_prefix_path_str [512 + 12] = \"qt_hpfxpath=" << dictionary["QT_HOST_PREFIX"] << "\";" << endl
|
|
||||||
<< "#endif" << endl
|
|
||||||
<< endl
|
|
||||||
<< "static const short qt_configure_str_offsets[] = {\n"
|
|
||||||
<< " " << confStrOffsets[0] << endl
|
|
||||||
<< "#ifdef QT_BUILD_QMAKE\n"
|
|
||||||
<< " " << confStrOffsets[1] << endl
|
|
||||||
<< "#endif\n"
|
|
||||||
<< "};\n"
|
|
||||||
<< "static const char qt_configure_strs[] =\n"
|
|
||||||
<< confStrings[0] << "#ifdef QT_BUILD_QMAKE\n"
|
|
||||||
<< confStrings[1] << "#endif\n"
|
|
||||||
<< ";\n"
|
|
||||||
<< endl;
|
|
||||||
if ((platform() != WINDOWS) && (platform() != WINDOWS_RT))
|
|
||||||
tmpStream << "#define QT_CONFIGURE_SETTINGS_PATH \"" << dictionary["QT_REL_INSTALL_SETTINGS"] << "\"" << endl;
|
|
||||||
|
|
||||||
tmpStream << endl
|
|
||||||
<< "#ifdef QT_BUILD_QMAKE\n"
|
|
||||||
<< "# define QT_CONFIGURE_SYSROOTIFY_PREFIX " << (sysrootifyPrefix ? "true" : "false") << endl
|
|
||||||
<< "#endif\n\n"
|
|
||||||
<< endl
|
|
||||||
<< "#define QT_CONFIGURE_PREFIX_PATH qt_configure_prefix_path_str + 12\n"
|
|
||||||
<< "#ifdef QT_BUILD_QMAKE\n"
|
|
||||||
<< "# define QT_CONFIGURE_EXT_PREFIX_PATH qt_configure_ext_prefix_path_str + 12\n"
|
|
||||||
<< "# define QT_CONFIGURE_HOST_PREFIX_PATH qt_configure_host_prefix_path_str + 12\n"
|
|
||||||
<< "#endif\n";
|
|
||||||
|
|
||||||
if (!tmpStream.flush())
|
|
||||||
dictionary[ "DONE" ] = "error";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Configure::buildQmake()
|
void Configure::buildQmake()
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@ -841,7 +461,11 @@ void Configure::buildQmake()
|
|||||||
if (confFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file.
|
if (confFile.open(QFile::WriteOnly | QFile::Text)) { // Truncates any existing file.
|
||||||
QTextStream confStream(&confFile);
|
QTextStream confStream(&confFile);
|
||||||
confStream << "[EffectivePaths]" << endl
|
confStream << "[EffectivePaths]" << endl
|
||||||
<< "Prefix=.." << endl;
|
<< "Prefix=.." << endl
|
||||||
|
<< "[Paths]" << endl
|
||||||
|
<< "TargetSpec=" << (dictionary.contains("XQMAKESPEC")
|
||||||
|
? dictionary["XQMAKESPEC"] : dictionary["QMAKESPEC"]) << endl
|
||||||
|
<< "HostSpec=" << dictionary["QMAKESPEC"] << endl;
|
||||||
if (sourcePath != buildPath)
|
if (sourcePath != buildPath)
|
||||||
confStream << "[EffectiveSourcePaths]" << endl
|
confStream << "[EffectiveSourcePaths]" << endl
|
||||||
<< "Prefix=" << sourcePath << endl;
|
<< "Prefix=" << sourcePath << endl;
|
||||||
@ -897,25 +521,6 @@ bool Configure::isOk()
|
|||||||
return (dictionary[ "DONE" ] != "error");
|
return (dictionary[ "DONE" ] != "error");
|
||||||
}
|
}
|
||||||
|
|
||||||
int Configure::platform() const
|
|
||||||
{
|
|
||||||
const QString xQMakeSpec = dictionary.value("XQMAKESPEC");
|
|
||||||
|
|
||||||
if ((xQMakeSpec.startsWith("winphone") || xQMakeSpec.startsWith("winrt")))
|
|
||||||
return WINDOWS_RT;
|
|
||||||
|
|
||||||
if (xQMakeSpec.contains("qnx"))
|
|
||||||
return QNX;
|
|
||||||
|
|
||||||
if (xQMakeSpec.contains("android"))
|
|
||||||
return ANDROID;
|
|
||||||
|
|
||||||
if (!xQMakeSpec.isEmpty())
|
|
||||||
return OTHER;
|
|
||||||
|
|
||||||
return WINDOWS;
|
|
||||||
}
|
|
||||||
|
|
||||||
FileWriter::FileWriter(const QString &name)
|
FileWriter::FileWriter(const QString &name)
|
||||||
: QTextStream()
|
: QTextStream()
|
||||||
, m_name(name)
|
, m_name(name)
|
||||||
|
@ -44,7 +44,6 @@ public:
|
|||||||
|
|
||||||
void parseCmdLine();
|
void parseCmdLine();
|
||||||
|
|
||||||
void generateQConfigCpp();
|
|
||||||
void buildQmake();
|
void buildQmake();
|
||||||
|
|
||||||
void prepareConfigureInput();
|
void prepareConfigureInput();
|
||||||
@ -56,8 +55,6 @@ public:
|
|||||||
bool isDone();
|
bool isDone();
|
||||||
bool isOk();
|
bool isOk();
|
||||||
|
|
||||||
int platform() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int verbose;
|
int verbose;
|
||||||
|
|
||||||
@ -72,11 +69,6 @@ private:
|
|||||||
QString sourcePathMangled, buildPathMangled;
|
QString sourcePathMangled, buildPathMangled;
|
||||||
QDir sourceDir, buildDir;
|
QDir sourceDir, buildDir;
|
||||||
|
|
||||||
QString confStrOffsets[2];
|
|
||||||
QString confStrings[2];
|
|
||||||
int confStringOff;
|
|
||||||
|
|
||||||
void addConfStr(int group, const QString &val);
|
|
||||||
QString formatPath(const QString &path);
|
QString formatPath(const QString &path);
|
||||||
|
|
||||||
bool reloadCmdLine(int idx);
|
bool reloadCmdLine(int idx);
|
||||||
|
@ -45,9 +45,6 @@ int runConfigure( int argc, char** argv )
|
|||||||
if (!app.isOk())
|
if (!app.isOk())
|
||||||
return 3;
|
return 3;
|
||||||
|
|
||||||
// Source file with path settings. Needed by qmake.
|
|
||||||
app.generateQConfigCpp();
|
|
||||||
|
|
||||||
// Bootstrapped includes. Needed by qmake.
|
// Bootstrapped includes. Needed by qmake.
|
||||||
app.generateHeaders();
|
app.generateHeaders();
|
||||||
if (!app.isOk())
|
if (!app.isOk())
|
||||||
|
Loading…
x
Reference in New Issue
Block a user