Disable objc_msgSend stubs in static libs to maintain Xcode < 14 compat
Xcode 14's Clang will emit objc_msgSend stubs by default, which ld from earlier Xcode versions will fail to understand. Disable these stubs explicitly for static libs, for as long as we support Xcode < 14. See https://github.com/llvm/llvm-project/issues/56034 Pick-to: 6.5 Fixes: QTBUG-112820 Change-Id: Id762873d61b9d147bf3eb6292297e7b80b7393e1 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This commit is contained in:
parent
4fb7eebc70
commit
c91ae574ed
@ -217,6 +217,21 @@ elseif(UIKIT)
|
||||
target_compile_definitions(PlatformCommonInternal INTERFACE GLES_SILENCE_DEPRECATION)
|
||||
endif()
|
||||
|
||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang"
|
||||
AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "14.0.0"
|
||||
)
|
||||
# Xcode 14's Clang will emit objc_msgSend stubs by default, which ld
|
||||
# from earlier Xcode versions will fail to understand when linking
|
||||
# against static libraries with these stubs. Disable the stubs explicitly,
|
||||
# for as long as we do support Xcode < 14.
|
||||
set(is_static_lib "$<STREQUAL:$<TARGET_PROPERTY:TYPE>,STATIC_LIBRARY>")
|
||||
set(is_objc "$<COMPILE_LANGUAGE:OBJC,OBJCXX>")
|
||||
set(is_static_and_objc "$<AND:${is_static_lib},${is_objc}>")
|
||||
target_compile_options(PlatformCommonInternal INTERFACE
|
||||
"$<${is_static_and_objc}:-fno-objc-msgsend-selector-stubs>"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_compile_definitions(PlatformCommonInternal INTERFACE
|
||||
"_CRT_SECURE_NO_WARNINGS"
|
||||
|
Loading…
Reference in New Issue
Block a user