Fix Mac OS X architecture detection for non-default Xcode setup.
authorDanny Boelens <dannyb@enfocus.com>
Fri, 20 Jul 2012 13:26:07 +0000 (15:26 +0200)
committerQt by Nokia <qt-info@nokia.com>
Fri, 20 Jul 2012 22:53:40 +0000 (00:53 +0200)
The arch.test script is now using SDK settings passed to it.
If you install Xcode without the "UNIX Development" option, this
is essential to let the compiler find standard headers and let
the test program compile successfully.

In addition, let configure pass the SDK settings given on the
command line to the arch.test script.

Change-Id: I49601d3068d83a71e21fdbac287857f2b7abedd1
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
config.tests/unix/arch.test
configure

index 3f5f153..9e18597 100755 (executable)
@@ -6,6 +6,24 @@ SRCDIR=$3
 OUTDIR=$4
 RESULTFILE=$5
 VARPREFIX=$6
+shift 6
+
+LFLAGS="$SYSROOT_FLAG"
+CXXFLAGS="$SYSROOT_FLAG"
+
+while [ "$#" -gt 0 ]; do
+    PARAM=$1
+    case $PARAM in
+    -sdk)
+        LFLAGS="$LFLAGS -Wl,-syslibroot,$2"
+        CXXFLAGS="$CXXFLAGS -isysroot $2"
+        shift
+        ;;
+    *)  ;;
+    esac
+    shift
+done
+
 
 # debuggery
 [ "$VERBOSE" = "yes" ] && echo "Determining architecture... ($*)"
@@ -13,7 +31,7 @@ VARPREFIX=$6
 # build a test program but don't run it
 test -d "$OUTDIR/config.tests/arch" || mkdir -p "$OUTDIR/config.tests/arch"
 [ -f Makefile ] && $MAKE distclean >/dev/null 2>&1
-OUTDIR=$OUTDIR "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "LIBS+=$SYSROOT_FLAG" "QMAKE_CXXFLAGS+=$SYSROOT_FLAG" "$SRCDIR/config.tests/arch/arch.pro" -o "$OUTDIR/config.tests/arch/Makefile" >/dev/null 2>&1 || echo "qmake is broken" >&2
+OUTDIR=$OUTDIR "$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "LIBS+=$LFLAGS" "QMAKE_CXXFLAGS+=$CXXFLAGS" "$SRCDIR/config.tests/arch/arch.pro" -o "$OUTDIR/config.tests/arch/Makefile" >/dev/null 2>&1 || echo "qmake is broken" >&2
 cd "$OUTDIR/config.tests/arch"
 
 
index 9a10715..c91dc2d 100755 (executable)
--- a/configure
+++ b/configure
@@ -2541,7 +2541,7 @@ if [ -n "$CFG_SYSROOT" ]; then
 else
     SYSROOT_FLAG=
 fi
-export SYSROOT_FLAG    # used by config.tests/unix/compile.test
+export SYSROOT_FLAG    # used by config.tests/unix/{compile.test,arch.test}
 
 # auto-detect precompiled header support
 if [ "$CFG_PRECOMPILE" = "auto" ]; then
@@ -3752,9 +3752,9 @@ fi
 # determine the target and host architectures
 #-------------------------------------------------------------------------------
 
-# Use config.tests/arch/arch.pro to has the compiler tell us what the target architecture is
+# Use config.tests/arch/arch.pro to have the compiler tell us what the target architecture is
 OUTFILE=$outpath/arch.result
-"$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG"
+"$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG" $MAC_CONFIG_TEST_COMMANDLINE
 if [ $? -eq 0 ]; then
     eval `cat "$OUTFILE"`
 else
@@ -3767,7 +3767,7 @@ rm -f "$OUTFILE" 2>/dev/null
 
 if [ "$QMAKESPEC" != "$XQMAKESPEC" ]; then
     # Do the same test again, using the host compiler
-    SYSROOT_FLAG= "$unixtests/arch.test" "$QMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG_HOST"
+    SYSROOT_FLAG= "$unixtests/arch.test" "$QMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "CFG_HOST" $MAC_CONFIG_TEST_COMMANDLINE
     if [ $? -eq 0 ]; then
         eval `cat "$OUTFILE"`
     else