fix(macos): preserve exception RTTI in amalgam archive (#4350)
Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
2
.github/workflows/core-release.yml
vendored
2
.github/workflows/core-release.yml
vendored
@@ -50,7 +50,7 @@ jobs:
|
||||
with:
|
||||
submodules: recursive
|
||||
|
||||
- run: brew install webp libuv
|
||||
- run: brew install webp libuv llvm
|
||||
|
||||
- uses: taiki-e/install-action@ba47c86ac325773530516bb756137ac718732518 # v2.86.5
|
||||
with:
|
||||
|
||||
@@ -144,12 +144,23 @@ add_test(
|
||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
|
||||
|
||||
find_program(ARMERGE NAMES armerge)
|
||||
find_program(
|
||||
LLVM_OBJCOPY
|
||||
NAMES llvm-objcopy
|
||||
HINTS
|
||||
/opt/homebrew/opt/llvm/bin
|
||||
/usr/local/opt/llvm/bin
|
||||
)
|
||||
|
||||
if(MLN_CREATE_AMALGAMATION)
|
||||
if(NOT ARMERGE)
|
||||
message(FATAL_ERROR "armerge required when MLN_CREATE_AMALGAMATION=ON")
|
||||
endif()
|
||||
if(NOT LLVM_OBJCOPY)
|
||||
message(FATAL_ERROR "llvm-objcopy required when MLN_CREATE_AMALGAMATION=ON")
|
||||
endif()
|
||||
message(STATUS "Found armerge: ${ARMERGE}")
|
||||
message(STATUS "Found llvm-objcopy: ${LLVM_OBJCOPY}")
|
||||
include(${PROJECT_SOURCE_DIR}/cmake/find_static_library.cmake)
|
||||
set(STATIC_LIBS "")
|
||||
|
||||
@@ -170,6 +181,12 @@ if(MLN_CREATE_AMALGAMATION)
|
||||
$<TARGET_FILE:mbgl-vendor-icu>
|
||||
$<TARGET_FILE:mlt-cpp>
|
||||
${STATIC_LIBS}
|
||||
# In Mach-O/Itanium ABI names, ZTI/ZTS/ZTV identify typeinfo,
|
||||
# type names, and vtables, while St denotes std::.
|
||||
# Keep them global so C++ exception matching works in downstream code.
|
||||
COMMAND ${LLVM_OBJCOPY} --wildcard
|
||||
"--globalize-symbol=__ZT[ISV]St*"
|
||||
libmbgl-core-amalgam.a
|
||||
)
|
||||
|
||||
endif()
|
||||
|
||||
Reference in New Issue
Block a user