From f607233c7ce899c27034eca01c23b0da2895bf93 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Wed, 24 Aug 2016 16:24:34 -0700 Subject: [PATCH] Don't disable CoreText on watchOS Simulator Frameworks are not available on Apple platforms on a device vs simulator basis. The documentation states that CoreText is available on watchOS: https://developer.apple.com/reference/coretext?language=objc, as do the watchOS 2.2 release notes. Therefore, work around the problem and note the rdar numbers for the bug report to Apple. Change-Id: I7f8ce830aee7a23d65aaf44072e5294188da5e63 Reviewed-by: Oswald Buddenhagen Reviewed-by: Gabriel de Dietrich --- src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro | 12 +++++++++++- src/platformsupport/fontdatabases/fontdatabases.pri | 2 +- src/platformsupport/fontdatabases/mac/coretext.pri | 10 ++++++++++ 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro index 1bfeabb8c44..5ec86bf78fe 100644 --- a/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro +++ b/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro @@ -11,7 +11,7 @@ load(qt_helper_lib) SHAPERS += opentype # HB's main shaper; enabling it should be enough most of the time # native shaper on Apple platforms; could be used alone to handle both OT and AAT fonts -darwin:!if(watchos:CONFIG(simulator, simulator|device)): SHAPERS += coretext +darwin: SHAPERS += coretext DEFINES += HAVE_CONFIG_H DEFINES += HB_NO_UNICODE_FUNCS HB_DISABLE_DEPRECATED @@ -155,4 +155,14 @@ contains(SHAPERS, coretext) { # On Mac OS they are part of the ApplicationServices umbrella framework, # even in 10.8 where they were also made available stand-alone. LIBS_PRIVATE += -framework ApplicationServices + + # CoreText is documented to be available on watchOS, but the headers aren't present + # in the watchOS Simulator SDK like they are supposed to be. Work around the problem + # by adding the device SDK's headers to the search path as a fallback. + # rdar://25314492, rdar://27844864 + watchos:CONFIG(simulator, simulator|device) { + QMAKE_CXXFLAGS += \ + -F$$xcodeSDKInfo(Path, $${simulator.sdk})/System/Library/Frameworks \ + -F$$xcodeSDKInfo(Path, $${device.sdk})/System/Library/Frameworks + } } diff --git a/src/platformsupport/fontdatabases/fontdatabases.pri b/src/platformsupport/fontdatabases/fontdatabases.pri index f8e51f2a6de..1ea7f422047 100644 --- a/src/platformsupport/fontdatabases/fontdatabases.pri +++ b/src/platformsupport/fontdatabases/fontdatabases.pri @@ -1,4 +1,4 @@ -darwin:!if(watchos:CONFIG(simulator, simulator|device)) { +darwin { include($$PWD/mac/coretext.pri) } else { !win32|qtConfig(freetype) { diff --git a/src/platformsupport/fontdatabases/mac/coretext.pri b/src/platformsupport/fontdatabases/mac/coretext.pri index 4d19a59226f..e1132cfcbe2 100644 --- a/src/platformsupport/fontdatabases/mac/coretext.pri +++ b/src/platformsupport/fontdatabases/mac/coretext.pri @@ -14,3 +14,13 @@ else: \ # On Mac OS they are part of the ApplicationServices umbrella framework, # even in 10.8 where they were also made available stand-alone. LIBS_PRIVATE += -framework ApplicationServices + +# CoreText is documented to be available on watchOS, but the headers aren't present +# in the watchOS Simulator SDK like they are supposed to be. Work around the problem +# by adding the device SDK's headers to the search path as a fallback. +# rdar://25314492, rdar://27844864 +watchos:CONFIG(simulator, simulator|device) { + QMAKE_CXXFLAGS += \ + -F$$xcodeSDKInfo(Path, $${simulator.sdk})/System/Library/Frameworks \ + -F$$xcodeSDKInfo(Path, $${device.sdk})/System/Library/Frameworks +}