Skip to content

Commit 5f4a091

Browse files
cipolleschiTitozzz
authored andcommitted
Add ld_classic flag to Hermes when building for Xcode 15 (#39516)
Summary: Pull Request resolved: #39516 With Xcode15, Apple rewrote the C++ linker. This is a breaking change that does not work with weak symbols. As a workaround, apple is suggesting to add `-ld_classic` to the linker in order to readd support for weak symbols. The flag does not exists for Xcode 14.3 or lower, so we need to add it conditionally. With this change, we introduce a couple of checks in the Hermes build logic: 1. Detect the version of Xcode that is used 2. Add the new flag to `HERMES_EXTRA_LINKER_FLAGS` if Xcode version is 15. [Internal] - Make hermes build properly with Xcode 15 Reviewed By: cortinico, dmytrorykun Differential Revision: D49368675 fbshipit-source-id: 62d8ed81855c426f56ed94b6a2d6da2eb882b355
1 parent 740c401 commit 5f4a091

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

sdks/hermes-engine/utils/build-apple-framework.sh

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ function build_host_hermesc {
3535

3636
# Utility function to configure an Apple framework
3737
function configure_apple_framework {
38-
local build_cli_tools enable_bitcode
38+
local build_cli_tools enable_bitcode xcode_15_flags xcode_major_version
3939

4040
if [[ $1 == iphoneos || $1 == catalyst ]]; then
4141
enable_bitcode="true"
@@ -48,7 +48,14 @@ function configure_apple_framework {
4848
build_cli_tools="false"
4949
fi
5050

51+
xcode_15_flags=""
52+
xcode_major_version=$(xcodebuild -version | grep -oE '[0-9]*' | head -n 1)
53+
if [[ $xcode_major_version -ge 15 ]]; then
54+
xcode_15_flags="LINKER:-ld_classic"
55+
fi
56+
5157
cmake -S . -B "build_$1" \
58+
-DHERMES_EXTRA_LINKER_FLAGS="$xcode_15_flags" \
5259
-DHERMES_APPLE_TARGET_PLATFORM:STRING="$1" \
5360
-DCMAKE_OSX_ARCHITECTURES:STRING="$2" \
5461
-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING="$3" \

0 commit comments

Comments
 (0)