CMake: Split out Objective-C++ flags on macOS to fix crash

This now requires CMake 3.16

This is a similar fix as 987f2f036b7d5b0e02a7ed8a2ff0f1029ae0d048 but for CMake
This commit is contained in:
rdb 2023-05-08 20:00:39 +02:00
parent 75abee73e2
commit 96b2f3a4d5
2 changed files with 23 additions and 0 deletions

View File

@ -24,6 +24,9 @@ endif()
# Set defaults for macOS, must be before project(). # Set defaults for macOS, must be before project().
if(APPLE) if(APPLE)
# Needed for enable_language(OBJCXX)
cmake_minimum_required(VERSION 3.16)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum macOS version to target") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "Minimum macOS version to target")
set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++") set(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
@ -46,6 +49,11 @@ project(Panda3D VERSION ${_version})
unset(_version) unset(_version)
unset(_s) unset(_s)
if(APPLE)
# Allows separating out C++ flags from ObjC++ flags
enable_language(OBJCXX)
endif()
# Determine the possible build types. Must be *after* calling project(). # Determine the possible build types. Must be *after* calling project().
set(_configs Standard Release RelWithDebInfo Debug MinSizeRel) set(_configs Standard Release RelWithDebInfo Debug MinSizeRel)
if(CMAKE_CXX_COMPILER_ID MATCHES "(AppleClang|Clang|GCC)") if(CMAKE_CXX_COMPILER_ID MATCHES "(AppleClang|Clang|GCC)")

View File

@ -16,6 +16,7 @@ if(MSVC)
else() else()
set(CMAKE_C_FLAGS_STANDARD "-O3") set(CMAKE_C_FLAGS_STANDARD "-O3")
set(CMAKE_CXX_FLAGS_STANDARD "-O3") set(CMAKE_CXX_FLAGS_STANDARD "-O3")
set(CMAKE_OBJCXX_FLAGS_STANDARD "-O3")
endif() endif()
set(CMAKE_SHARED_LINKER_FLAGS_STANDARD "") set(CMAKE_SHARED_LINKER_FLAGS_STANDARD "")
set(CMAKE_MODULE_LINKER_FLAGS_STANDARD "") set(CMAKE_MODULE_LINKER_FLAGS_STANDARD "")
@ -27,6 +28,8 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(AppleClang|Clang)")
"${CMAKE_C_FLAGS_DEBUG} -fprofile-instr-generate -fcoverage-mapping") "${CMAKE_C_FLAGS_DEBUG} -fprofile-instr-generate -fcoverage-mapping")
set(CMAKE_CXX_FLAGS_COVERAGE set(CMAKE_CXX_FLAGS_COVERAGE
"${CMAKE_CXX_FLAGS_DEBUG} -fprofile-instr-generate -fcoverage-mapping") "${CMAKE_CXX_FLAGS_DEBUG} -fprofile-instr-generate -fcoverage-mapping")
set(CMAKE_OBJCXX_FLAGS_COVERAGE
"${CMAKE_OBJCXX_FLAGS_DEBUG} -fprofile-instr-generate -fcoverage-mapping")
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE
"${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fprofile-instr-generate") "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} -fprofile-instr-generate")
@ -106,6 +109,9 @@ if(MSVC)
else() else()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall")
if(APPLE)
set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} -Wall")
endif()
endif() endif()
@ -133,6 +139,14 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${release_flags}") set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} ${release_flags}")
set(CMAKE_CXX_FLAGS_STANDARD "${CMAKE_CXX_FLAGS_STANDARD} ${standard_flags}") set(CMAKE_CXX_FLAGS_STANDARD "${CMAKE_CXX_FLAGS_STANDARD} ${standard_flags}")
if(APPLE)
set(CMAKE_OBJCXX_FLAGS "${CMAKE_OBJCXX_FLAGS} ${global_flags}")
set(CMAKE_OBJCXX_FLAGS_RELEASE "${CMAKE_OBJCXX_FLAGS_RELEASE} ${global_flags}")
set(CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO "${CMAKE_OBJCXX_FLAGS_RELWITHDEBINFO} ${global_flags}")
set(CMAKE_OBJCXX_FLAGS_MINSIZEREL "${CMAKE_OBJCXX_FLAGS_MINSIZEREL} ${global_flags}")
set(CMAKE_OBJCXX_FLAGS_STANDARD "${CMAKE_OBJCXX_FLAGS_STANDARD} ${global_flags}")
endif()
if(MSVC) if(MSVC)
# Clang behaving as MSVC # Clang behaving as MSVC
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-command-line-argument") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unused-command-line-argument")
@ -151,6 +165,7 @@ endif()
# and stops us from identifying cases where ENABLE_EXPORTS is needed. # and stops us from identifying cases where ENABLE_EXPORTS is needed.
set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "") set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "")
set(CMAKE_SHARED_LIBRARY_LINK_OBJCXX_FLAGS "")
# As long as we're figuring out compiler flags, figure out the flags for # As long as we're figuring out compiler flags, figure out the flags for
# turning C++ exception support on and off # turning C++ exception support on and off