From 71b4325cb7031452e922531c78efdc16b8577648 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= Date: Fri, 15 Feb 2013 18:11:04 +0100 Subject: Clean up how we build against SDKs on Mac OS Instead of setting -isysroot in both arch.test, compile.test, the various mkspecs, and sdk.prf, we now propgate the chosen SDK as the qmake variable QMAKE_MAC_SDK, which is then handled exclusivly in sdk.prf. The QMAKE_MAC_SDK variable, and -sdk argument to configure, is expected to be of the short-form name, eg macosx or iphoneos, not a full path, as that's what Xcode also expects. We take care of translating that into a full path for -isysroot/-syslibroot in sdk.prf, using xcodebuild as a helper. Change-Id: I281655b2fa5180c6e78ffdce36824e4a91447570 Reviewed-by: Oswald Buddenhagen --- config.tests/unix/arch.test | 14 -------------- config.tests/unix/compile.test | 5 ----- configure | 17 ++++------------- mkspecs/common/mac.conf | 7 +++++-- mkspecs/features/mac/sdk.prf | 28 ++++++++++++++++++++++------ 5 files changed, 31 insertions(+), 40 deletions(-) diff --git a/config.tests/unix/arch.test b/config.tests/unix/arch.test index f25076600c..7250d737ba 100755 --- a/config.tests/unix/arch.test +++ b/config.tests/unix/arch.test @@ -19,20 +19,6 @@ fi 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... ($*)" diff --git a/config.tests/unix/compile.test b/config.tests/unix/compile.test index 3f8c5c51a2..79e7619d5b 100755 --- a/config.tests/unix/compile.test +++ b/config.tests/unix/compile.test @@ -32,11 +32,6 @@ while [ "$#" -gt 0 ]; do MAC_ARCH_LFLAGS="$MAC_ARCH_LFLAGS -arch $2" shift ;; - -sdk) - LFLAGS="$LFLAGS -Wl,-syslibroot,$2" - CXXFLAGS="$CXXFLAGS -isysroot $2" - shift - ;; -F*|-m*|-x*) LFLAGS="$LFLAGS $PARAM" CXXFLAGS="$CXXFLAGS $PARAM" diff --git a/configure b/configure index 77536b0563..ccd2782e62 100755 --- a/configure +++ b/configure @@ -859,7 +859,6 @@ CFG_EVENTFD=auto CFG_RPATH=yes CFG_FRAMEWORK=auto CFG_MAC_HARFBUZZ=no -CFG_SDK= DEFINES= D_FLAGS= I_FLAGS= @@ -1303,7 +1302,6 @@ while [ "$#" -gt 0 ]; do ;; sdk) if [ "$BUILD_ON_MAC" = "yes" ]; then - CFG_SDK="$VAL" DeviceVar set QMAKE_MAC_SDK "$VAL" else UNKNOWN_OPT=yes @@ -2616,13 +2614,6 @@ if [ "$CFG_FORCEDEBUGINFO" = "yes" ]; then QT_CONFIG="$QT_CONFIG force_debug_info" fi -# pass on $CFG_SDK to the arch/configure tests. -if [ -n "$CFG_SDK" ]; then - MAC_SDK_FLAG="-sdk $CFG_SDK" -else - MAC_SDK_FLAG= -fi - # disable GTK style support auto-detection on Mac if [ "$BUILD_ON_MAC" = "yes" ] && [ "$CFG_QGTKSTYLE" = "auto" ]; then CFG_QGTKSTYLE=no @@ -3329,8 +3320,8 @@ Qt/Mac only: link tools against those frameworks. -no-framework ...... Do not build Qt as a series of frameworks. - -sdk ......... Build Qt using Apple provided SDK . This option requires gcc 4. - To use a different SDK with gcc 3.3, set the SDKROOT environment variable. + -sdk ......... Build Qt using Apple provided SDK . The argument should be + one of the available SDKs as listed by 'xcodebuild -showsdks'. -harfbuzz .......... Use HarfBuzz to do text layout instead of Core Text when possible. * -no-harfbuzz ....... Disable HarfBuzz on Mac. It can still be enabled by setting @@ -3821,7 +3812,7 @@ compileTest() path=config.tests/$1 name=$2 shift 2 - "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "$path" "$name" $I_FLAGS $D_FLAGS $L_FLAGS $MAC_SDK_FLAG "$@" + "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "$path" "$name" $I_FLAGS $D_FLAGS $L_FLAGS "$@" } #------------------------------------------------------------------------------- @@ -3830,7 +3821,7 @@ compileTest() # 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" "target" $MAC_SDK_FLAG +"$unixtests/arch.test" "$XQMAKESPEC" $OPT_VERBOSE "$relpath" "$outpath" "$OUTFILE" "target" if [ $? -eq 0 ]; then eval `cat "$OUTFILE"` else diff --git a/mkspecs/common/mac.conf b/mkspecs/common/mac.conf index 6610430899..57719e003f 100644 --- a/mkspecs/common/mac.conf +++ b/mkspecs/common/mac.conf @@ -12,8 +12,11 @@ QMAKE_RESOURCE = /Developer/Tools/Rez QMAKE_EXTENSION_SHLIB = dylib QMAKE_LIBDIR = -QMAKE_INCDIR_OPENGL = $$QMAKE_MAC_SDK/System/Library/Frameworks/OpenGL.framework/Headers \ - $$QMAKE_MAC_SDK/System/Library/Frameworks/AGL.framework/Headers/ + +# sdk.prf will prefix the proper SDK sysroot +QMAKE_INCDIR_OPENGL = \ + /System/Library/Frameworks/OpenGL.framework/Headers \ + /System/Library/Frameworks/AGL.framework/Headers/ QMAKE_FIX_RPATH = install_name_tool -id diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf index 5eab94896b..955baa3ed2 100644 --- a/mkspecs/features/mac/sdk.prf +++ b/mkspecs/features/mac/sdk.prf @@ -1,8 +1,24 @@ -!isEmpty(QMAKE_MAC_SDK) { - !macx-xcode:!macx-pbuilder { - QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK - QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_MAC_SDK - QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK - QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK +!host_build:!isEmpty(QMAKE_MAC_SDK) { + + contains(QMAKE_MAC_SDK, .*/.*): \ + error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)") + + QMAKE_MAC_SDK_INFO = $$system("xcodebuild -sdk $$QMAKE_MAC_SDK -version 2>/dev/null", lines) + isEmpty(QMAKE_MAC_SDK_INFO): error("Could not resolve SDK \'$$QMAKE_MAC_SDK\'") + + defineReplace(qtMacSDKInfo): \ + return($$replace($$list($$find(QMAKE_MAC_SDK_INFO, ^$$1:)), ^$$1:(.*), \\1)) + + QMAKE_MAC_SDK_PATH = $$qtMacSDKInfo(Path) + + !equals(MAKEFILE_GENERATOR, XCODE) { + QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH + QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH + QMAKE_OBJECTIVE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH + QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH } + + sysrootified = + for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val + QMAKE_INCDIR_OPENGL = $$sysrootified } -- cgit v1.2.3