c45595d648
For Mac OS X we currently specify build tools without an absolute path, which means we end up using the ones in /usr/bin. This is wrong, we should be using the tools from the toolchain of the chosen SDK. For iOS we do specify an absolute path, by resolving the toolchain path in the iOS makespecs. To solve the situation on Mac OS X, we move the logic of resolving the toolchain path to sdk.prf, and share it between OSX and iOS. For configure we need to duplicate some of the logic from sdk.prf, as configure pulls out QMAKE_CC and QMAKE_CXX for running some initial tests and building qmake. The new macSDKify function also solves the issue of missing sysroot and deployment version in the flags. Change-Id: Ib1d239c9904cf3ccee5214b313cf6205869a1462 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
54 lines
2.2 KiB
Plaintext
54 lines
2.2 KiB
Plaintext
|
|
isEmpty(QMAKE_MAC_SDK): \
|
|
error("QMAKE_MAC_SDK must be set when using CONFIG += sdk.")
|
|
|
|
contains(QMAKE_MAC_SDK, .*/.*): \
|
|
error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)")
|
|
|
|
QMAKE_MAC_SDK_PATH = $$system("xcodebuild -sdk $$QMAKE_MAC_SDK -version Path 2>/dev/null")
|
|
isEmpty(QMAKE_MAC_SDK_PATH): error("Could not resolve SDK path for \'$$QMAKE_MAC_SDK\'")
|
|
|
|
!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
|
|
|
|
# Resolve SDK version of various tools
|
|
for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB)) {
|
|
value = $$eval($$tool)
|
|
isEmpty(value): next()
|
|
|
|
sysrooted = $$system("xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value)")
|
|
$$tool = $$sysrooted $$member(value, 1, -1)
|
|
}
|
|
|
|
# We use xml as the output format instead of json since plutil on 10.6 does not have that option
|
|
QMAKE_MAC_PLATFORM_NAME = $$system("plutil -convert xml1 \"$$QMAKE_MAC_SDK_PATH/SDKSettings.plist\" -o - | " \
|
|
"sed '/^<!DOCTYPE/d' | " \ # Don't look up http://www.apple.com/DTDs/PropertyList-1.0.dtd
|
|
"PERL5LIB= xpath 'string(//key[.=\"PLATFORM_NAME\"]/following-sibling::*[1])' 2>&1 | " \
|
|
"sed 's/.*Value: \\(.*\\)/\\1/'")
|
|
|
|
isEmpty(QMAKE_MAC_PLATFORM_NAME): error("Could not resolve platform name for SDK '$$QMAKE_MAC_SDK'")
|
|
|
|
!equals(MAKEFILE_GENERATOR, XCODE) {
|
|
# FIXME: Get the version_min_flag out of the platform's 'Native Build System.xcspec'
|
|
version_identifier = $$replace(QMAKE_MAC_PLATFORM_NAME, iphonesimulator, ios-simulator)
|
|
|
|
ios:!host_build: \
|
|
deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET
|
|
else: \
|
|
deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET
|
|
|
|
version_min_flag = -m$${version_identifier}-version-min=$$deployment_target
|
|
QMAKE_CFLAGS += $$version_min_flag
|
|
QMAKE_CXXFLAGS += $$version_min_flag
|
|
QMAKE_OBJECTIVE_CFLAGS += $$version_min_flag
|
|
QMAKE_LFLAGS += $$version_min_flag
|
|
}
|