summaryrefslogtreecommitdiffstats
path: root/mkspecs
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@digia.com>2013-02-15 18:11:04 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-02-19 07:56:34 +0100
commit71b4325cb7031452e922531c78efdc16b8577648 (patch)
tree82e5f2f9aa12a08833effdbeab1bf5ff986b8bab /mkspecs
parent3988ad95f757f7531e8133a10e83f74ab0ce1b96 (diff)
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>
Diffstat (limited to 'mkspecs')
-rw-r--r--mkspecs/common/mac.conf7
-rw-r--r--mkspecs/features/mac/sdk.prf28
2 files changed, 27 insertions, 8 deletions
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
}