RESOLVED FIXED 173939
REGRESSION (r218616, r225179): Cannot build WebCore for macOS 10.12 with macOS 10.13 SDK (missing _CTFontCreatePhysicalFontForCharactersWithLanguage)
https://bugs.webkit.org/show_bug.cgi?id=173939
Summary REGRESSION (r218616, r225179): Cannot build WebCore for macOS 10.12 with macO...
Daniel Bates
Reported 2017-06-28 14:43:04 PDT
The SPI CTFontCreatePhysicalFontForCharactersWithLanguage(), used in the patch for bug #173300, was removed from the macOS 10.13 and iOS 11 SDKs. When targeting macOS 10.12/iOS 10 we should not compile code that invokes CTFontCreatePhysicalFontForCharactersWithLanguage(). Otherwise, WebCore will fail to link as the symbol for CTFontCreatePhysicalFontForCharactersWithLanguage() does not exist in binaries included in the macOS 10.13 and iOS 11 SDKs.
Attachments
Patch (3.23 KB, patch)
2017-06-28 14:43 PDT, Daniel Bates
mitz: review-
Patch (4.13 KB, patch)
2017-06-28 16:23 PDT, Daniel Bates
no flags
Patch (5.06 KB, patch)
2017-06-28 17:06 PDT, Daniel Bates
no flags
Archive of layout-test-results from ews114 for mac-elcapitan (2.21 MB, application/zip)
2017-06-28 18:18 PDT, Build Bot
no flags
Archive of layout-test-results from ews102 for mac-elcapitan (1.82 MB, application/zip)
2017-06-28 20:01 PDT, Build Bot
no flags
Patch (4.67 KB, patch)
2017-07-05 10:51 PDT, Daniel Bates
no flags
Archive of layout-test-results from ews115 for mac-elcapitan (2.29 MB, application/zip)
2017-07-05 12:19 PDT, Build Bot
no flags
Archive of layout-test-results from ews101 for mac-elcapitan (1.81 MB, application/zip)
2017-07-05 13:41 PDT, Build Bot
no flags
Patch (3.32 KB, patch)
2017-07-05 17:14 PDT, Myles C. Maxfield
no flags
Patch (3.47 KB, patch)
2017-07-05 21:13 PDT, Myles C. Maxfield
no flags
Patch (4.06 KB, patch)
2017-07-07 16:04 PDT, Daniel Bates
no flags
Patch (5.18 KB, patch)
2017-07-07 16:25 PDT, Daniel Bates
no flags
Daniel Bates
Comment 1 2017-06-28 14:43:59 PDT
mitz
Comment 2 2017-06-28 14:53:39 PDT
Comment on attachment 314057 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=314057&action=review It’s incorrect to have the code call a different function at runtime depending on what SDK was used at build time. A correct fix for this bug would be to provide a declaration of the 10.12-era SPI, properly annotated for availability, when using the 10.13-era or later SDKs. > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1263 > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED <= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MAX_ALLOWED <= 100000)) <= doesn’t make sense. Did you mean < 101300 and < 110000, respectively? > Source/WebCore/platform/spi/cocoa/CoreTextSPI.h:132 > +#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED <= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MAX_ALLOWED <= 100000) Ditto.
mitz
Comment 3 2017-06-28 14:54:52 PDT
(In reply to mitz from comment #2) > A correct fix for this bug would be to provide a declaration of the > 10.12-era SPI, properly annotated for availability, when using the 10.13-era > or later SDKs. There are examples of this in AVKitSPI.h.
Daniel Bates
Comment 4 2017-06-28 14:56:05 PDT
Comment on attachment 314057 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=314057&action=review >> Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1263 >> +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED <= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MAX_ALLOWED <= 100000)) > > <= doesn’t make sense. Did you mean < 101300 and < 110000, respectively? Yes. >> Source/WebCore/platform/spi/cocoa/CoreTextSPI.h:132 >> +#if (PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED <= 101200) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MAX_ALLOWED <= 100000) > > Ditto. Yes, I meant < 101300 and < 11000,
Daniel Bates
Comment 5 2017-06-28 16:23:52 PDT
Build Bot
Comment 6 2017-06-28 16:26:18 PDT Comment hidden (obsolete)
Myles C. Maxfield
Comment 7 2017-06-28 16:32:16 PDT
We can also ask CoreText to put the symbol back.
mitz
Comment 8 2017-06-28 16:43:10 PDT
Comment on attachment 314064 [details] Patch I think the CoreTextSPI.h side of this patch is all that’s needed.
Daniel Bates
Comment 9 2017-06-28 17:00:21 PDT
(In reply to mitz from comment #8) > Comment on attachment 314064 [details] > Patch > > I think the CoreTextSPI.h side of this patch is all that’s needed. With only the CoreTextSPI.h change I get the following linker error: [[ Undefined symbols for architecture x86_64: "_CTFontCreatePhysicalFontForCharactersWithLanguage", referenced from: WebCore::lookupFallbackFont(__CTFont const*, WebCore::FontSelectionValue, WTF::AtomicString const&, unsigned short const*, unsigned int) in FontCacheCoreText.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ]]
Daniel Bates
Comment 10 2017-06-28 17:01:42 PDT
Daniel Bates
Comment 11 2017-06-28 17:06:46 PDT
Build Bot
Comment 12 2017-06-28 17:07:41 PDT Comment hidden (obsolete)
Build Bot
Comment 13 2017-06-28 18:18:48 PDT Comment hidden (obsolete)
Build Bot
Comment 14 2017-06-28 18:18:50 PDT Comment hidden (obsolete)
mitz
Comment 15 2017-06-28 19:10:58 PDT
Comment on attachment 314072 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=314072&action=review > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1260 > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 110000)) As a rule, we shouldn’t be using different functions at runtime based on what SDK was used at build time. > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1261 > + if (&CTFontCreatePhysicalFontForCharactersWithLanguage != nullptr) I’m not sure what this is supposed to do or under what circumstances this code would build successfully, then load successfully at runtime, but still need to do this check, but if there are such circumstances, then this is not a valid way to null-check a function pointer. See <wtf/darwin/WeakLinking.h>.
Build Bot
Comment 16 2017-06-28 20:01:55 PDT Comment hidden (obsolete)
Build Bot
Comment 17 2017-06-28 20:01:56 PDT Comment hidden (obsolete)
Daniel Bates
Comment 18 2017-06-28 21:13:05 PDT
(In reply to mitz from comment #15) > Comment on attachment 314072 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=314072&action=review > > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1260 > > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 110000)) > > As a rule, we shouldn’t be using different functions at runtime based on > what SDK was used at build time. > How do you propose we fix this bug given comment #9? > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1261 > > + if (&CTFontCreatePhysicalFontForCharactersWithLanguage != nullptr) > > I’m not sure what this is supposed to do or under what circumstances this > code would build successfully, then load successfully at runtime, but still > need to do this check, but if there are such circumstances, then this is not > a valid way to null-check a function pointer. See <wtf/darwin/WeakLinking.h>. I was just mimicking the approach of Listing 3-3 in SDK Compatibility Guide: <https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW1> as well as respecting the note about explicit comparison to nullptr in section "Using Weakly Linked Methods, Functions, and Symbols" in the same guide <https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW4>. I take it that the advice in this guide is not applicable or out-of-date?
mitz
Comment 19 2017-06-28 21:17:18 PDT
(In reply to Daniel Bates from comment #18) > (In reply to mitz from comment #15) > > Comment on attachment 314072 [details] > > Patch > > > > View in context: > > https://bugs.webkit.org/attachment.cgi?id=314072&action=review > > > > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1260 > > > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 110000)) > > > > As a rule, we shouldn’t be using different functions at runtime based on > > what SDK was used at build time. > > > > How do you propose we fix this bug given comment #9? I don’t have a proposal yet. > > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1261 > > > + if (&CTFontCreatePhysicalFontForCharactersWithLanguage != nullptr) > > > > I’m not sure what this is supposed to do or under what circumstances this > > code would build successfully, then load successfully at runtime, but still > > need to do this check, but if there are such circumstances, then this is not > > a valid way to null-check a function pointer. See <wtf/darwin/WeakLinking.h>. > > I was just mimicking the approach of Listing 3-3 in SDK Compatibility Guide: > <https://developer.apple.com/library/content/documentation/DeveloperTools/ > Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000- > SW1> as well as respecting the note about explicit comparison to nullptr in > section "Using Weakly Linked Methods, Functions, and Symbols" in the same > guide > <https://developer.apple.com/library/content/documentation/DeveloperTools/ > Conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000- > SW4>. I take it that the advice in this guide is not applicable or > out-of-date? Correct, the advice may have been applicable to the developer tools available at the time the guide was published, but it is not applicable to the compilers that are currently in use.
mitz
Comment 20 2017-06-28 22:30:43 PDT
(In reply to mitz from comment #19) > (In reply to Daniel Bates from comment #18) > > (In reply to mitz from comment #15) > > > Comment on attachment 314072 [details] > > > Patch > > > > > > View in context: > > > https://bugs.webkit.org/attachment.cgi?id=314072&action=review > > > > > > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1260 > > > > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 110000)) > > > > > > As a rule, we shouldn’t be using different functions at runtime based on > > > what SDK was used at build time. > > > > > > > How do you propose we fix this bug given comment #9? > > I don’t have a proposal yet. One option is, iff building for macOS 10.12 with the macOS 10.13 SDK (when building WebKit for iOS, we don’t support targeting an older version than the SDK), to add -Wl,-U,_CTFontCreatePhysicalFontForCharactersWithLanguage to WebCore’s OTHER_LDFLAGS. I think that this is acceptable, because trunk WebCore builds targeting macOS 10.12 are not meant to be included in the dyld shared cache. I believe that another option involves creating and using a .tbd file for Core Text that exports the missing symbols and reexports the real Core Text from the SDK. I’ve experimented with this technique in the past, but haven’t tried to apply it to this case.
Daniel Bates
Comment 21 2017-06-28 23:44:06 PDT
(In reply to Myles C. Maxfield from comment #7) > We can also ask CoreText to put the symbol back. I did not mean to ignore your comment. Your "SPIs are forever" (*) ;) solution would fix this bug. I do not know if such a request would be entertained (we could try) or set a good precedent. (*) Does not need to be forever. At least one release.
Myles C. Maxfield
Comment 22 2017-06-29 09:45:28 PDT
Or we could soft link. Whichever option you two come up with is fine with me.
Daniel Bates
Comment 23 2017-06-29 10:55:56 PDT
(In reply to mitz from comment #20) > (In reply to mitz from comment #19) > > (In reply to Daniel Bates from comment #18) > > > (In reply to mitz from comment #15) > > > > Comment on attachment 314072 [details] > > > > Patch > > > > > > > > View in context: > > > > https://bugs.webkit.org/attachment.cgi?id=314072&action=review > > > > > > > > > Source/WebCore/platform/graphics/cocoa/FontCacheCoreText.cpp:1260 > > > > > +#if !USE_PLATFORM_SYSTEM_FALLBACK_LIST && ((PLATFORM(MAC) && __MAC_OS_X_VERSION_MAX_ALLOWED < 101300) || (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED < 110000)) > > > > > > > > As a rule, we shouldn’t be using different functions at runtime based on > > > > what SDK was used at build time. > > > > > > > > > > How do you propose we fix this bug given comment #9? > > > > I don’t have a proposal yet. > > One option is, iff building for macOS 10.12 with the macOS 10.13 SDK (when > building WebKit for iOS, we don’t support targeting an older version than > the SDK), to add -Wl,-U,_CTFontCreatePhysicalFontForCharactersWithLanguage > to WebCore’s OTHER_LDFLAGS. I think that this is acceptable, because trunk > WebCore builds targeting macOS 10.12 are not meant to be included in the > dyld shared cache. > Can you please elaborate on your last sentence. Does your last sentence imply that if we add to OTHER_LDFLAGS we will not crash with a dyld error when trying to invoke CTFontCreatePhysicalFontForCharactersWithLanguage() on macOS 10.13 using a WebCore built targeting macOS 10.12? > I believe that another option involves creating and using a .tbd file for > Core Text that exports the missing symbols and reexports the real Core Text > from the SDK. I’ve experimented with this technique in the past, but haven’t > tried to apply it to this case. Would this technique prevent the crash mentioned above?
mitz
Comment 24 2017-06-29 10:58:54 PDT
(In reply to Daniel Bates from comment #23) > Can you please elaborate on your last sentence. Does your last sentence > imply that if we add to OTHER_LDFLAGS we will not crash with a dyld error > when trying to invoke CTFontCreatePhysicalFontForCharactersWithLanguage() on > macOS 10.13 using a WebCore built targeting macOS 10.12? No. Using a WebKit build targeting one macOS version on a different macOS version is not supported. > > I believe that another option involves creating and using a .tbd file for > > Core Text that exports the missing symbols and reexports the real Core Text > > from the SDK. I’ve experimented with this technique in the past, but haven’t > > tried to apply it to this case. > > Would this technique prevent the crash mentioned above? No.
Myles C. Maxfield
Comment 25 2017-07-03 10:51:44 PDT
Another option is we could ask CoreText to put a #define in their headers which represents the presence of this symbol. Then we could test for it.
Daniel Bates
Comment 26 2017-07-05 10:51:48 PDT
Created attachment 314618 [details] Patch Use soft-link approach suggested by Myles Maxfield.
mitz
Comment 27 2017-07-05 10:53:52 PDT
(In reply to Daniel Bates from comment #26) > Created attachment 314618 [details] > Patch > > Use soft-link approach suggested by Myles Maxfield. What’s the advantage of this approach over letting the linker resolve this without writing additional code?
Build Bot
Comment 28 2017-07-05 10:54:22 PDT Comment hidden (obsolete)
Build Bot
Comment 29 2017-07-05 12:19:49 PDT Comment hidden (obsolete)
Build Bot
Comment 30 2017-07-05 12:19:50 PDT Comment hidden (obsolete)
Build Bot
Comment 31 2017-07-05 13:41:38 PDT Comment hidden (obsolete)
Build Bot
Comment 32 2017-07-05 13:41:39 PDT Comment hidden (obsolete)
Myles C. Maxfield
Comment 33 2017-07-05 17:14:12 PDT
Myles C. Maxfield
Comment 34 2017-07-05 21:13:21 PDT
mitz
Comment 35 2017-07-05 21:19:36 PDT
Comment on attachment 314693 [details] Patch What’s the advantage of this approach over letting the linker resolve this without writing additional code?
Daniel Bates
Comment 36 2017-07-07 16:04:09 PDT
Build Bot
Comment 37 2017-07-07 16:06:06 PDT Comment hidden (obsolete)
Myles C. Maxfield
Comment 38 2017-07-07 16:14:04 PDT
I'll let Mitz review this.
Daniel Bates
Comment 39 2017-07-07 16:25:56 PDT
Build Bot
Comment 40 2017-07-07 16:26:50 PDT Comment hidden (obsolete)
Daniel Bates
Comment 41 2017-07-10 09:21:45 PDT
Comment on attachment 314896 [details] Patch Clearing flags on attachment: 314896 Committed r219294: <http://trac.webkit.org/changeset/219294>
Daniel Bates
Comment 42 2017-07-10 09:21:48 PDT
All reviewed patches have been landed. Closing bug.
Basuke Suzuki
Comment 43 2017-12-11 13:44:12 PST
Ld /Users/ysuzuki/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore normal x86_64 cd /Users/ysuzuki/neko/Source/WebCore export MACOSX_DEPLOYMENT_TARGET=10.12 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -L/Users/ysuzuki/neko/WebKitBuild/Release -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks -F/Users/ysuzuki/neko/WebKitBuild/Release -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/PrivateFrameworks -filelist /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore.LinkFileList -unexported_symbols_list Configurations/WebCore.unexp -install_name /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore -mmacosx-version-min=10.12 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore_lto.o -stdlib=libc++ -fobjc-link-runtime -Wl,-not_for_dyld_shared_cache -lsqlite3 -lobjc -lANGLE -framework CoreAudio -framework Metal -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -force_load /Users/ysuzuki/neko/WebKitBuild/Release/libPAL.a -sub_library libobjc -umbrella WebKit -framework ApplicationServices -framework AudioUnit -framework Carbon -framework Cocoa -framework DataDetectorsCore -framework IOSurface -framework OpenGL -framework SystemConfiguration -framework VideoToolbox -framework CoreMedia -weak-lwebrtc -framework Accelerate -framework AudioToolbox -framework IOKit -framework JavaScriptCore -licucore -lobjc /Users/ysuzuki/neko/WebKitBuild/Release/libPAL.a -lxml2 -lz -framework QuartzCore -framework Security -single_module -compatibility_version 1 -current_version 605.1.17 -Xlinker -dependency_info -Xlinker /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore_dependency_info.dat -o /Users/ysuzuki/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore Undefined symbols for architecture x86_64: "_CTFontCreatePhysicalFontForCharactersWithLanguage", referenced from: WebCore::FontCache::systemFallbackForCharacters(WebCore::FontDescription const&, WebCore::Font const*, bool, unsigned short const*, unsigned int) in UnifiedSource354.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ** BUILD FAILED **
Basuke Suzuki
Comment 44 2017-12-11 13:44:46 PST
It seems broken again on Sierra.
Daniel Bates
Comment 45 2017-12-11 14:57:02 PST
(In reply to Basuke Suzuki from comment #43) > Ld > /Users/ysuzuki/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore > normal x86_64 > cd /Users/ysuzuki/neko/Source/WebCore > export MACOSX_DEPLOYMENT_TARGET=10.12 > > /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault. > xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot > /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/ > Developer/SDKs/MacOSX10.13.sdk -L/Users/ysuzuki/neko/WebKitBuild/Release > -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/ > Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/WebKit.framework/ > Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks > -F/Users/ysuzuki/neko/WebKitBuild/Release > -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/ > Developer/SDKs/MacOSX10.13.sdk/System/Library/PrivateFrameworks -filelist > /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects- > normal/x86_64/WebCore.LinkFileList -unexported_symbols_list > Configurations/WebCore.unexp -install_name > /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore. > framework/Versions/A/WebCore -mmacosx-version-min=10.12 -dead_strip -Xlinker > -object_path_lto -Xlinker > /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects- > normal/x86_64/WebCore_lto.o -stdlib=libc++ -fobjc-link-runtime > -Wl,-not_for_dyld_shared_cache -lsqlite3 -lobjc -lANGLE -framework CoreAudio > -framework Metal -allowable_client WebCoreTestSupport -allowable_client > WebKitLegacy -force_load /Users/ysuzuki/neko/WebKitBuild/Release/libPAL.a > -sub_library libobjc -umbrella WebKit -framework ApplicationServices > -framework AudioUnit -framework Carbon -framework Cocoa -framework > DataDetectorsCore -framework IOSurface -framework OpenGL -framework > SystemConfiguration -framework VideoToolbox -framework CoreMedia > -weak-lwebrtc -framework Accelerate -framework AudioToolbox -framework IOKit > -framework JavaScriptCore -licucore -lobjc > /Users/ysuzuki/neko/WebKitBuild/Release/libPAL.a -lxml2 -lz -framework > QuartzCore -framework Security -single_module -compatibility_version 1 > -current_version 605.1.17 -Xlinker -dependency_info -Xlinker > /Users/ysuzuki/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects- > normal/x86_64/WebCore_dependency_info.dat -o > /Users/ysuzuki/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore > Undefined symbols for architecture x86_64: > "_CTFontCreatePhysicalFontForCharactersWithLanguage", referenced from: > > WebCore::FontCache::systemFallbackForCharacters(WebCore::FontDescription > const&, WebCore::Font const*, bool, unsigned short const*, unsigned int) in > UnifiedSource354.o > ld: symbol(s) not found for architecture x86_64 > clang: error: linker command failed with exit code 1 (use -v to see > invocation) > > ** BUILD FAILED ** (In reply to Basuke Suzuki from comment #44) > It seems broken again on Sierra. This build failure was caused by changeset r225179, <https://trac.webkit.org/changeset/225179/> (bug #180011). Committed fix in <https://trac.webkit.org/changeset/225757/>.
Radar WebKit Bug Importer
Comment 46 2017-12-11 14:58:27 PST
Ross Kirsling
Comment 47 2018-01-22 17:20:25 PST
Broken yet again on Sierra? Ld /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore normal x86_64 cd /Users/RKirsling/Documents/GitHub/neko/Source/WebCore export MACOSX_DEPLOYMENT_TARGET=10.12 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch x86_64 -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk -L/Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release -L/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/Frameworks -F/Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release -F/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/System/Library/PrivateFrameworks -filelist /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore.LinkFileList -unexported_symbols_list Configurations/WebCore.unexp -install_name /System/Library/Frameworks/WebKit.framework/Versions/A/Frameworks/WebCore.framework/Versions/A/WebCore -mmacosx-version-min=10.12 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore_lto.o -stdlib=libc++ -fobjc-link-runtime -Wl,-not_for_dyld_shared_cache -lsqlite3 -lobjc -lANGLE -framework CoreAudio -framework Metal -allowable_client WebCoreTestSupport -allowable_client WebKitLegacy -force_load /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release/libPAL.a -sub_library libobjc -umbrella WebKit -framework ApplicationServices -framework AudioUnit -framework Carbon -framework Cocoa -framework DataDetectorsCore -framework IOSurface -framework OpenGL -framework SystemConfiguration -framework VideoToolbox -framework CoreMedia -weak-lwebrtc -framework Accelerate -framework AudioToolbox -framework IOKit -framework JavaScriptCore -licucore -lobjc /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release/libPAL.a -lxml2 -lz -framework QuartzCore -framework Security -single_module -compatibility_version 1 -current_version 606.1.3 -Xlinker -dependency_info -Xlinker /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/WebCore_dependency_info.dat -o /Users/RKirsling/Documents/GitHub/neko/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore Undefined symbols for architecture x86_64: "_CTFontCreatePhysicalFontForCharactersWithLanguage", referenced from: WebCore::FontCache::systemFallbackForCharacters(WebCore::FontDescription const&, WebCore::Font const*, bool, unsigned short const*, unsigned int) in UnifiedSource361.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
mitz
Comment 48 2018-01-22 17:28:41 PST
(In reply to Ross Kirsling from comment #47) > Broken yet again on Sierra? Sorry, looks like <https://trac.webkit.org/r227156> broke it. It should be easy to fix.
mitz
Comment 49 2018-01-22 17:37:36 PST
Should be fix with <https://trac.webkit.org/r227376>.
Alexey Proskuryakov
Comment 50 2018-01-22 23:11:52 PST
Do we even still care to support cross-compiling in this manner? Is there a need?
Ross Kirsling
Comment 51 2018-01-23 08:40:07 PST
The intention isn't to cross-compile but simply to have the build succeed on Sierra. Unfortunately, our IT department continues to disallow upgrading to High Sierra for the time being.
Alexey Proskuryakov
Comment 52 2018-01-23 09:58:36 PST
Indeed, it's valid to expect that WebKit builds with the latest shipping Xcode, so I guess we need to keep caring. But practically speaking, it may be easiest to downgrade to Xcode 8, as that includes a matching SDK for macOS Sierra.
Note You need to log in before you can comment on or make changes to this bug.