cmake: Update Xcode project generation on macOS
* If a valid team id is provided, automatic code sign management is enabled * Different deployment targets for x86_64 and arm64 are enabled for Xcode-based builds * Codesign identity and code-sign style are set globallymaster
parent
8e3f19722e
commit
f31c1c124b
|
@ -14,34 +14,36 @@ if(POLICY CMP0025)
|
|||
endif()
|
||||
|
||||
# Build options
|
||||
if(NOT DEFINED CMAKE_OSX_ARCHITECTURES OR CMAKE_OSX_ARCHITECTURES STREQUAL "")
|
||||
if(NOT CMAKE_OSX_ARCHITECTURES)
|
||||
set(CMAKE_OSX_ARCHITECTURES
|
||||
"${CMAKE_HOST_SYSTEM_PROCESSOR}"
|
||||
CACHE STRING
|
||||
"OBS build architecture for macOS - x86_64 required at least" FORCE)
|
||||
endif()
|
||||
set_property(CACHE CMAKE_OSX_ARCHITECTURES PROPERTY STRINGS x86_64 arm64
|
||||
set_property(CACHE CMAKE_OSX_ARCHITECTURES PROPERTY STRINGS arm64 x86_64
|
||||
"x86_64;arm64")
|
||||
|
||||
if(NOT DEFINED CMAKE_OSX_DEPLOYMENT_TARGET OR CMAKE_OSX_DEPLOYMENT_TARGET
|
||||
STREQUAL "")
|
||||
if("${CMAKE_OSX_ARCHITECTURES}" MATCHES ".*arm64.*")
|
||||
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=arm64] "11.0")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_MACOSX_DEPLOYMENT_TARGET[arch=x86_64] "10.15")
|
||||
|
||||
if("${CMAKE_OSX_ARCHITECTURES}" STREQUAL "arm64")
|
||||
set(_MACOS_DEPLOYMENT_TARGET "11.0")
|
||||
else()
|
||||
set(_MACOS_DEPLOYMENT_TARGET "10.13")
|
||||
set(_MACOS_DEPLOYMENT_TARGET "10.15")
|
||||
endif()
|
||||
|
||||
set(CMAKE_OSX_DEPLOYMENT_TARGET
|
||||
"${_MACOS_DEPLOYMENT_TARGET}"
|
||||
CACHE STRING "OBS deployment target for macOS - 10.13+ required" FORCE)
|
||||
CACHE STRING "OBS deployment target for macOS - 10.15+ required" FORCE)
|
||||
unset(_MACOS_DEPLOYMENT_TARGET)
|
||||
endif()
|
||||
set_property(CACHE CMAKE_OSX_DEPLOYMENT_TARGET PROPERTY STRINGS 10.13 10.14
|
||||
10.15 11.0 12.0)
|
||||
set_property(CACHE CMAKE_OSX_DEPLOYMENT_TARGET PROPERTY STRINGS 10.15 11.0 12.0
|
||||
13.0)
|
||||
|
||||
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
set(CMAKE_INSTALL_PREFIX
|
||||
"${CMAKE_BINARY_DIR}/rundir"
|
||||
"${CMAKE_BINARY_DIR}/install"
|
||||
CACHE STRING "Directory to install OBS after building" FORCE)
|
||||
endif()
|
||||
|
||||
|
@ -69,13 +71,25 @@ if(NOT DEFINED ENV{SWIG_LIB} AND EXISTS "${CMAKE_PREFIX_PATH}/bin/swig")
|
|||
endif()
|
||||
|
||||
macro(setup_obs_project)
|
||||
set(CMAKE_XCODE_GENERATE_SCHEME ON)
|
||||
|
||||
# Set code signing options
|
||||
if(NOT DEFINED OBS_BUNDLE_CODESIGN_IDENTITY OR OBS_BUNDLE_CODESIGN_IDENTITY
|
||||
STREQUAL "")
|
||||
set(OBS_BUNDLE_CODESIGN_IDENTITY
|
||||
"-"
|
||||
CACHE STRING "OBS code signing identity for macOS")
|
||||
if(NOT OBS_BUNDLE_CODESIGN_TEAM)
|
||||
set(OBS_BUNDLE_CODESIGN_TEAM
|
||||
""
|
||||
CACHE STRING "OBS code signing team for macOS" FORCE)
|
||||
if(NOT OBS_BUNDLE_CODESIGN_IDENTITY)
|
||||
set(OBS_BUNDLE_CODESIGN_IDENTITY
|
||||
"-"
|
||||
CACHE STRING "OBS code signing identity for macOS" FORCE)
|
||||
endif()
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
|
||||
"${OBS_BUNDLE_CODESIGN_IDENTITY}")
|
||||
else()
|
||||
set(CMAKE_XCODE_ATTRIBUTE_CODE_SIGN_STYLE "Automatic")
|
||||
set(CMAKE_XCODE_ATTRIBUTE_DEVELOPMENT_TEAM "${OBS_BUNDLE_CODESIGN_TEAM}")
|
||||
endif()
|
||||
|
||||
set(OBS_CODESIGN_ENTITLEMENTS
|
||||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist"
|
||||
CACHE INTERNAL "Path to codesign entitlements plist")
|
||||
|
@ -83,17 +97,13 @@ macro(setup_obs_project)
|
|||
ON
|
||||
CACHE BOOL "Enable linker code-signing on macOS (macOS 11+ required)")
|
||||
|
||||
# Xcode configuration
|
||||
if(XCODE)
|
||||
# Tell Xcode to pretend the linker signed binaries so that editing with
|
||||
# install_name_tool preserves ad-hoc signatures. This option is supported by
|
||||
# codesign on macOS 11 or higher. See CMake Issue 21854:
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/21854
|
||||
# Tell Xcode to pretend the linker signed binaries so that editing with
|
||||
# install_name_tool preserves ad-hoc signatures. This option is supported by
|
||||
# codesign on macOS 11 or higher. See CMake Issue 21854:
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/21854
|
||||
|
||||
set(CMAKE_XCODE_GENERATE_SCHEME ON)
|
||||
if(OBS_CODESIGN_LINKER)
|
||||
set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed")
|
||||
endif()
|
||||
if(OBS_CODESIGN_LINKER)
|
||||
set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed")
|
||||
endif()
|
||||
|
||||
# Set default options for bundling on macOS
|
||||
|
|
|
@ -4,8 +4,6 @@ function(setup_binary_target target)
|
|||
${target}
|
||||
PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER
|
||||
"com.obsproject.${target}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
|
||||
"${OBS_BUNDLE_CODESIGN_IDENTITY}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS
|
||||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist")
|
||||
|
||||
|
@ -90,8 +88,6 @@ function(setup_plugin_target target)
|
|||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/Plugin-Info.plist.in"
|
||||
XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER
|
||||
"com.obsproject.${target}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
|
||||
"${OBS_BUNDLE_CODESIGN_IDENTITY}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS
|
||||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist")
|
||||
|
||||
|
@ -107,8 +103,6 @@ function(setup_script_plugin_target target)
|
|||
${target}
|
||||
PROPERTIES XCODE_ATTRIBUTE_PRODUCT_BUNDLE_IDENTIFIER
|
||||
"com.obsproject.${target}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
|
||||
"${OBS_BUNDLE_CODESIGN_IDENTITY}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS
|
||||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist")
|
||||
|
||||
|
@ -151,8 +145,6 @@ function(setup_obs_app target)
|
|||
set_target_properties(
|
||||
${target}
|
||||
PROPERTIES BUILD_WITH_INSTALL_RPATH OFF
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
|
||||
"${OBS_BUNDLE_CODESIGN_IDENTITY}"
|
||||
XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS
|
||||
"${CMAKE_SOURCE_DIR}/cmake/bundle/macOS/entitlements.plist"
|
||||
XCODE_SCHEME_ENVIRONMENT "PYTHONDONTWRITEBYTECODE=1")
|
||||
|
@ -201,12 +193,6 @@ function(setup_target_browser target)
|
|||
EXCLUDE_FROM_ALL)
|
||||
|
||||
foreach(_SUFFIX IN ITEMS "_gpu" "_plugin" "_renderer" "")
|
||||
if(TARGET obs-browser-page${_SUFFIX})
|
||||
add_executable(OBS::browser-helper${_SUFFIX} ALIAS
|
||||
obs-browser-page${_SUFFIX})
|
||||
target_compile_features(obs-browser-page${_SUFFIX} PRIVATE cxx_std_17)
|
||||
endif()
|
||||
|
||||
if(TARGET OBS::browser-helper${_SUFFIX})
|
||||
add_dependencies(${target} OBS::browser-helper${_SUFFIX})
|
||||
|
||||
|
@ -217,14 +203,16 @@ function(setup_target_browser target)
|
|||
COMPONENT obs_browser_dev
|
||||
EXCLUDE_FROM_ALL)
|
||||
|
||||
set(_COMMAND
|
||||
"/usr/bin/codesign --force --sign \\\"${OBS_BUNDLE_CODESIGN_IDENTITY}\\\" $<$<BOOL:${OBS_CODESIGN_LINKER}>:--options linker-signed > \\\"\${CMAKE_INSTALL_PREFIX}/Frameworks/$<TARGET_FILE_NAME:OBS::browser-helper${_SUFFIX}>.app\\\" > /dev/null"
|
||||
)
|
||||
if(NOT XCODE)
|
||||
set(_COMMAND
|
||||
"/usr/bin/codesign --force --sign \\\"${OBS_BUNDLE_CODESIGN_IDENTITY}\\\" $<$<BOOL:${OBS_CODESIGN_LINKER}>:--options linker-signed > \\\"\${CMAKE_INSTALL_PREFIX}/Frameworks/$<TARGET_FILE_NAME:OBS::browser-helper${_SUFFIX}>.app\\\" > /dev/null"
|
||||
)
|
||||
|
||||
install(
|
||||
CODE "execute_process(COMMAND /bin/sh -c \"${_COMMAND}\")"
|
||||
COMPONENT obs_browser_dev
|
||||
EXCLUDE_FROM_ALL)
|
||||
install(
|
||||
CODE "execute_process(COMMAND /bin/sh -c \"${_COMMAND}\")"
|
||||
COMPONENT obs_browser_dev
|
||||
EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
|
Loading…
Reference in New Issue