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 <oswald.buddenhagen@digia.com>bb10
parent
3988ad95f7
commit
71b4325cb7
|
|
@ -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... ($*)"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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 <sdk> ......... Build Qt using Apple provided SDK <sdk>. This option requires gcc 4.
|
||||
To use a different SDK with gcc 3.3, set the SDKROOT environment variable.
|
||||
-sdk <sdk> ......... Build Qt using Apple provided SDK <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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue