03e9c6f4a6
Pass -xplatform macx-tvos-clang to configure to build. Builds device and simulator by default. Added ‘uikit’ platform with the common setup. Also added QT_PLATFORM_UIKIT define (undocumented). qmake config defines tvos (but not ios). tvOS is 64bits only (QT_ARCH is arm64) and requires bitcode to be embedded in the binary. A new ‘bitcode’ configuration was added. For ReleaseDevice builds (which get archived and push to the store), bitcode is actually embedded (-fembed-bitcode passed to clang). For all other configurations, only using bitcode markers to keep file size down (-fembed-bitcode-marker). Build disables Widgets in qtbase, and qtscript (unsupported, would require fixes to JavaScriptCore source code). Qpa same as on iOS but disables device orientation, status bar, clipboard, menus, dialogs which are not supported on tvOS. Change-Id: I645804fd933be0befddeeb43095a74d2c178b2ba Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@theqtcompany.com>
75 lines
2.5 KiB
Plaintext
75 lines
2.5 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)")
|
||
|
||
defineReplace(xcodeSDKInfo) {
|
||
info = $$1
|
||
sdk = $$2
|
||
isEmpty(sdk): \
|
||
sdk = $$QMAKE_MAC_SDK
|
||
|
||
isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) {
|
||
QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcodebuild -sdk $$sdk -version $$info 2>/dev/null")
|
||
isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}): error("Could not resolve SDK $$info for \'$$sdk\'")
|
||
cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info})
|
||
}
|
||
|
||
return($$eval(QMAKE_MAC_SDK.$${sdk}.$${info}))
|
||
}
|
||
|
||
QMAKE_MAC_SDK_PATH = $$xcodeSDKInfo(Path)
|
||
QMAKE_MAC_SDK_PLATFORM_PATH = $$xcodeSDKInfo(PlatformPath)
|
||
QMAKE_MAC_SDK_VERSION = $$xcodeSDKInfo(SDKVersion)
|
||
|
||
!equals(MAKEFILE_GENERATOR, XCODE) {
|
||
QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH
|
||
QMAKE_CXXFLAGS += -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
|
||
|
||
QMAKESPEC_NAME = $$basename(QMAKESPEC)
|
||
|
||
# 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)) {
|
||
tool_variable = QMAKE_MAC_SDK.$${QMAKESPEC_NAME}.$${QMAKE_MAC_SDK}.$${tool}
|
||
!isEmpty($$tool_variable) {
|
||
$$tool = $$eval($$tool_variable)
|
||
next()
|
||
}
|
||
|
||
value = $$eval($$tool)
|
||
isEmpty(value): next()
|
||
|
||
sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null")
|
||
isEmpty(sysrooted): next()
|
||
|
||
$$tool = $$sysrooted $$member(value, 1, -1)
|
||
cache($$tool_variable, set stash, $$tool)
|
||
}
|
||
|
||
!equals(MAKEFILE_GENERATOR, XCODE) {
|
||
uikit:!host_build {
|
||
simulator: \
|
||
version_identifier = $$simulator.deployment_identifier
|
||
else: \
|
||
version_identifier = $$device.deployment_identifier
|
||
ios: deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET
|
||
tvos: deployment_target = $$QMAKE_TVOS_DEPLOYMENT_TARGET
|
||
} else: osx {
|
||
version_identifier = macosx
|
||
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_LFLAGS += $$version_min_flag
|
||
}
|