summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xconfig.tests/unix/compile.test2
-rwxr-xr-xconfigure47
-rw-r--r--mkspecs/features/device_config.prf27
-rw-r--r--qtbase.pro4
5 files changed, 76 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index f4013fd98a..7c98265f57 100644
--- a/.gitignore
+++ b/.gitignore
@@ -97,6 +97,7 @@ configure.cache
config.status
mkspecs/default
mkspecs/qconfig.pri
+mkspecs/qdevice.pri
moc_*.cpp
qmake/qmake.exe
qmake/Makefile.bak
diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test
index f4a7f29b1a..f82fbf9024 100755
--- a/config.tests/unix/compile.test
+++ b/config.tests/unix/compile.test
@@ -68,7 +68,7 @@ test -r Makefile && $MAKE distclean >/dev/null 2>&1
# Make sure output from possible previous tests is gone
rm -f "$EXE" "${EXE}.exe"
-"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
+OUTDIR=$OUTDIR "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "CONFIG+=$QMAKE_CONFIG" "CONFIG-=debug_and_release" "LIBS*=$LFLAGS" "LIBS+=$MAC_ARCH_LFLAGS" "INCLUDEPATH*=$INCLUDEPATH" "QMAKE_CXXFLAGS*=$CXXFLAGS" "QMAKE_CXXFLAGS+=$MAC_ARCH_CXXFLAGS" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/$TEST/$EXE.pro" -o "$OUTDIR/$TEST/Makefile"
if [ "$VERBOSE" = "yes" ]; then
$MAKE
diff --git a/configure b/configure
index 32caa653a9..fbd6b35b6d 100755
--- a/configure
+++ b/configure
@@ -71,8 +71,10 @@ QTCONFIG_CONFIG=
QT_CONFIG=
SUPPORTED=
QMAKE_VARS_FILE=.qmake.vars
+DEVICE_VARS_FILE=.device.vars
:> "$QMAKE_VARS_FILE"
+:> "$DEVICE_VARS_FILE"
#-------------------------------------------------------------------------------
# utility functions
@@ -224,6 +226,23 @@ linkerSupportsFlag()
}
#-------------------------------------------------------------------------------
+# device options
+#-------------------------------------------------------------------------------
+DeviceVar()
+{
+ case "$1" in
+ set)
+ eq="="
+ ;;
+ *)
+ echo >&2 "BUG: wrong command to QMakeVar: $1"
+ ;;
+ esac
+
+ echo "$2" "$eq" "$3" >> "$DEVICE_VARS_FILE"
+}
+
+#-------------------------------------------------------------------------------
# operating system detection
#-------------------------------------------------------------------------------
@@ -910,7 +929,7 @@ while [ "$#" -gt 0 ]; do
shift
VAL=$1
;;
- -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-testsdir|-depths|-make|-nomake|-platform|-xplatform|-sdk|-arch|-host-arch|-mysql_config|-sysroot|-hostdatadir|-hostbindir)
+ -prefix|-docdir|-headerdir|-plugindir|-importdir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-testsdir|-depths|-make|-nomake|-platform|-xplatform|-device|-device-option|-sdk|-arch|-host-arch|-mysql_config|-sysroot|-hostdatadir|-hostbindir)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
shift
VAL="$1"
@@ -1306,6 +1325,14 @@ while [ "$#" -gt 0 ]; do
XPLATFORM="$VAL"
case `basename "$XPLATFORM"` in win32-g++*) XPLATFORM_MINGW=yes;; esac
;;
+ device)
+ XPLATFORM="devices/$VAL"
+ ;;
+ device-option)
+ DEV_VAR=`echo $VAL | sed "s,^\(.*\)=.*,\1,"`
+ DEV_VAL=`echo $VAL | sed "s,^.*=\(.*\),\1,"`
+ DeviceVar set $DEV_VAR $DEV_VAL
+ ;;
debug-and-release)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_DEBUG_RELEASE="$VAL"
@@ -2457,6 +2484,15 @@ if [ "$CFG_RTOS_ENABLED" = "no" ]; then
fi
#-------------------------------------------------------------------------------
+# write out device config before we run the test.
+#-------------------------------------------------------------------------------
+if cmp -s "$DEVICE_VARS_FILE" "$outpath/mkspecs/qdevice.pri"; then
+ rm -f "$DEVICE_VARS_FILE"
+else
+ mv -f $DEVICE_VARS_FILE "$outpath/mkspecs/qdevice.pri"
+fi
+
+#-------------------------------------------------------------------------------
# tests that don't need qmake (must be run before displaying help)
#-------------------------------------------------------------------------------
@@ -2929,6 +2965,7 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-no-openssl] [-openssl] [-openssl-linked]
[-no-gtkstyle] [-gtkstyle]
[-qt-pcre] [-system-pcre]
+ [-device <name>] [-device-option <key=value>]
[additional platform specific options (see below)]
@@ -3192,6 +3229,10 @@ Additional options:
-force-asserts ........ Force Q_ASSERT to be enabled even in release builds.
+ -device <name> ............... Cross-compile for device <name> (experimental)
+ -device-option <key=value> ... Add device specific options for the device mkspec
+ (experimental)
+
EOF
if [ "$CFG_SEPARATE_DEBUG_INFO" = "auto" ]; then
@@ -3925,12 +3966,12 @@ fi # Build qmake
#-------------------------------------------------------------------------------
# Use config.tests/arch/arch.pro to has the compiler tell us what the target architecture is
-CFG_ARCH=`"$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
+CFG_ARCH=`OUTDIR="$outpath" "$outpath/bin/qmake" -spec "$XQMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
[ -z "$CFG_ARCH" ] && CFG_ARCH="unknown"
if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
# Do the same test again, using the host compiler
- CFG_HOST_ARCH=`"$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
+ CFG_HOST_ARCH=`OUTDIR="$outpath" "$outpath/bin/qmake" -spec "$QMAKESPEC" -o /dev/null "$relpath/config.tests/arch/arch.pro" 2>&1 | sed -n -e 's,^Project MESSAGE:.*Architecture: \([a-zA-Z0-9_]*\).*,\1,p'`
[ -z "$CFG_HOST_ARCH" ] && CFG_HOST_ARCH="unknown"
else
# not cross compiling, host == target
diff --git a/mkspecs/features/device_config.prf b/mkspecs/features/device_config.prf
new file mode 100644
index 0000000000..56059e13cf
--- /dev/null
+++ b/mkspecs/features/device_config.prf
@@ -0,0 +1,27 @@
+# Load generated qdevice.pri
+exists($$_QMAKE_CACHE_) {
+ # set in default_pre, so it's the first place to check for qdevice.pri
+ DIR = $$fromfile($$_QMAKE_CACHE_, QT_BUILD_TREE)
+ !isEmpty(DIR):DEVICE_PRI = $$DIR/mkspecs/qdevice.pri
+}
+
+isEmpty(DEVICE_PRI) {
+ # OUTDIR environ is set by configure (arch detection) and compile.test
+ DIR = $$(OUTDIR)
+ !isEmpty(DIR):DEVICE_PRI = $$DIR/mkspecs/qdevice.pri
+}
+
+isEmpty(DEVICE_PRI) {
+ DIR = $$[QT_HOST_DATA]
+ !isEmpty(DIR):DEVICE_PRI = $$DIR/mkspecs/qdevice.pri
+}
+
+isEmpty(DEVICE_PRI) {
+ error(Could not locate qdevice.pri)
+}
+
+exists($$DEVICE_PRI):include($$DEVICE_PRI)
+
+unset(DEVICE_PRI)
+unset(DIR)
+
diff --git a/qtbase.pro b/qtbase.pro
index 7648a63826..ec3b0b2e9f 100644
--- a/qtbase.pro
+++ b/qtbase.pro
@@ -72,6 +72,7 @@ unix {
$(DEL_FILE) src/corelib/global/qconfig.h; \
$(DEL_FILE) src/corelib/global/qconfig.cpp; \
$(DEL_FILE) mkspecs/qconfig.pri; \
+ $(DEL_FILE) mkspecs/qdevice.pri; \
$(DEL_FILE) mkspecs/qmodule.pri; \
$(DEL_FILE) .qmake.cache; \
(cd qmake && $(MAKE) distclean);
@@ -80,6 +81,7 @@ win32 {
confclean.commands += -$(DEL_FILE) src\\corelib\\global\\qconfig.h $$escape_expand(\\n\\t) \
-$(DEL_FILE) src\\corelib\\global\\qconfig.cpp $$escape_expand(\\n\\t) \
-$(DEL_FILE) mkspecs\\qconfig.pri $$escape_expand(\\n\\t) \
+ -$(DEL_FILE) mkspecs\\qdevice.pri $$escape_expand(\\n\\t) \
-$(DEL_FILE) mkspecs\\qmodule.pri $$escape_expand(\\n\\t) \
-$(DEL_FILE) .qmake.cache $$escape_expand(\\n\\t) \
(cd qmake && $(MAKE) distclean)
@@ -115,7 +117,7 @@ INSTALLS += configtests
#mkspecs
mkspecs.path = $$[QT_HOST_DATA]/mkspecs
-mkspecs.files = $$OUT_PWD/mkspecs/qconfig.pri $$OUT_PWD/mkspecs/qmodule.pri $$files($$PWD/mkspecs/*)
+mkspecs.files = $$OUT_PWD/mkspecs/qconfig.pri $$OUT_PWD/mkspecs/qmodule.pri $$OUT_PWD/mkspecs/qdevice.pri $$files($$PWD/mkspecs/*)
mkspecs.files -= $$PWD/mkspecs/modules
unix {
DEFAULT_QMAKESPEC = $$QMAKESPEC