2023-10-21 06:08:12 +00:00
|
|
|
if(APPLE)
|
2023-08-16 14:17:43 +00:00
|
|
|
#detect Architecture
|
2023-10-19 10:04:16 +00:00
|
|
|
enable_language(OBJC)
|
|
|
|
|
enable_language(OBJCXX)
|
2023-10-20 20:06:53 +00:00
|
|
|
enable_language(CXX)
|
2023-10-19 10:04:16 +00:00
|
|
|
|
2024-08-04 13:54:25 +00:00
|
|
|
set(CMAKE_SYSTEM_NAME Darwin)
|
|
|
|
|
set(CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
|
|
|
|
|
|
2023-10-20 11:04:56 +00:00
|
|
|
# minimum for multi arch build is 11.
|
|
|
|
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "11" CACHE STRING "" FORCE)
|
2023-10-19 13:39:22 +00:00
|
|
|
set(CMAKE_OSX_ARCHITECTURES "x86_64;arm64" CACHE STRING "" FORCE)
|
2023-10-20 11:04:56 +00:00
|
|
|
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64] "11.0" CACHE STRING "arm 64 minimum deployment target" FORCE)
|
2023-10-19 10:45:25 +00:00
|
|
|
|
|
|
|
|
if(CMAKE_OSX_ARCHITECTURES MATCHES "((^|;|, )(arm64|arm64e|x86_64))+")
|
|
|
|
|
set(CMAKE_C_SIZEOF_DATA_PTR 8)
|
|
|
|
|
set(CMAKE_CXX_SIZEOF_DATA_PTR 8)
|
|
|
|
|
if(CMAKE_OSX_ARCHITECTURES MATCHES "((^|;|, )(arm64|arm64e))+")
|
|
|
|
|
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
|
|
|
|
|
else()
|
|
|
|
|
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
|
|
|
|
endif()
|
|
|
|
|
else()
|
|
|
|
|
set(CMAKE_C_SIZEOF_DATA_PTR 4)
|
|
|
|
|
set(CMAKE_CXX_SIZEOF_DATA_PTR 4)
|
|
|
|
|
set(CMAKE_SYSTEM_PROCESSOR "arm")
|
2023-10-19 23:19:40 +00:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# Enable codesigning with secure timestamp when not in Debug configuration (required for Notarization)
|
|
|
|
|
set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS[variant=Release] "--timestamp")
|
|
|
|
|
|
|
|
|
|
# Enable codesigning with hardened runtime option when not in Debug configuration (required for Notarization)
|
2023-10-20 20:06:53 +00:00
|
|
|
#set(CMAKE_XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME[variant=Release] YES)
|
|
|
|
|
#set(CMAKE_XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME[variant=RelWithDebInfo] YES)
|
2023-10-19 23:19:40 +00:00
|
|
|
|
|
|
|
|
# Disable injection of Xcode's base entitlements used for debugging when not in Debug configuration (required for
|
|
|
|
|
# Notarization)
|
|
|
|
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_INJECT_BASE_ENTITLEMENTS[variant=Release] NO)
|
2024-08-04 13:54:25 +00:00
|
|
|
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED "NO")
|
|
|
|
|
# Only create a single Xcode project file
|
|
|
|
|
set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY TRUE)
|
|
|
|
|
# Add all libraries to project link phase (lets Xcode handle linking)
|
|
|
|
|
#set(CMAKE_XCODE_LINK_BUILD_PHASE_MODE KNOWN_LOCATION)
|
|
|
|
|
#set(CMAKE_XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS "@executable_path/../Frameworks")
|
2023-10-19 23:19:40 +00:00
|
|
|
|
|
|
|
|
set(_release_configs RelWithDebInfo Release)
|
2023-10-20 20:06:53 +00:00
|
|
|
if(CMAKE_BUILD_TYPE IN_LIST _release_configs)
|
|
|
|
|
add_link_options(LINKER:-dead_strip)
|
|
|
|
|
endif()
|
|
|
|
|
|
2023-10-20 21:33:20 +00:00
|
|
|
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
|
|
|
|
|
set(CMAKE_HAVE_THREADS_LIBRARY 1)
|
|
|
|
|
set(CMAKE_USE_WIN32_THREADS_INIT 0)
|
|
|
|
|
set(CMAKE_USE_PTHREADS_INIT 1)
|
|
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
2023-10-20 20:06:53 +00:00
|
|
|
|
2024-08-04 13:54:25 +00:00
|
|
|
# Enable @rpath support
|
2023-10-20 20:06:53 +00:00
|
|
|
set(CMAKE_MACOSX_RPATH 1)
|
2024-08-04 13:54:25 +00:00
|
|
|
|
|
|
|
|
set(CMAKE_INSTALL_NAME_DIR "@rpath")
|
|
|
|
|
|
|
|
|
|
# Set RPATH for both build and install
|
2024-08-03 13:43:57 +00:00
|
|
|
set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks")
|
2024-08-04 13:54:25 +00:00
|
|
|
set(CMAKE_BUILD_RPATH "@executable_path/../Frameworks")
|
|
|
|
|
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
2023-10-20 20:06:53 +00:00
|
|
|
|
2023-10-21 06:08:12 +00:00
|
|
|
endif(APPLE)
|