0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
obs-studio/cmake/macos/defaults.cmake
PatTheMav bbeea0972a cmake: Add Xcode component to CMake build framework 3.0
Adds necessary macOS-specific implementation of the framework, focusing
on native Xcode builds.
2023-03-26 18:20:38 -04:00

97 lines
3.7 KiB
CMake

# OBS CMake macOS defaults module
# Enable selection between arm64 and x86_64 targets
if(NOT CMAKE_OSX_ARCHITECTURES)
set(CMAKE_OSX_ARCHITECTURES
arm64
CACHE STRING "Build architectures for macOS" FORCE)
endif()
set_property(CACHE CMAKE_OSX_ARCHITECTURES PROPERTY STRINGS arm64 x86_64)
# Set empty codesigning team if not specified as cache variable
if(NOT OBS_CODESIGN_TEAM)
set(OBS_CODESIGN_TEAM
""
CACHE STRING "OBS code signing team for macOS" FORCE)
# Set ad-hoc codesigning identity if not specified as cache variable
if(NOT OBS_CODESIGN_IDENTITY)
set(OBS_CODESIGN_IDENTITY
"-"
CACHE STRING "OBS code signing identity for macOS" FORCE)
endif()
endif()
if(XCODE)
include(xcode)
endif()
include(buildspec)
# Set default deployment target to 11.0 if not set and enable selection in GUI up to 13.0
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
set(CMAKE_OSX_DEPLOYMENT_TARGET
11.0
CACHE STRING "Minimum macOS version to target for deployment (at runtime). Newer APIs will be weak-linked." FORCE)
endif()
set_property(CACHE CMAKE_OSX_DEPLOYMENT_TARGET PROPERTY STRINGS 13.0 12.0 11.0)
# Use Applications directory as default install destination
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
set(CMAKE_INSTALL_PREFIX
"/Applications"
CACHE STRING "Directory to install OBS after building" FORCE)
endif()
# Show warning about missing CMAKE_PREFIX_PATH, usually required for successful builds
if(NOT DEFINED CMAKE_PREFIX_PATH)
message(
WARNING "No CMAKE_PREFIX_PATH set: OBS supplies pre-built dependencies for building on macOS.\n"
"While OBS can be built using packages installed via Homebrew, pre-built dependencies "
"contain beneficial patches and fixes for use within OBS and is the suggested source "
"of these dependencies.\n"
"You can download the appropriate obs-deps package for your "
"architecture and set CMAKE_PREFIX_PATH to this directory:\n"
"CMAKE_PREFIX_PATH=\"<PATH_TO_OBS_DEPS>\"\n"
"Download pre-built OBS dependencies at https://github.com/obsproject/obs-deps/releases\n")
endif()
# SWIG hard codes the directory to its library directory at compile time. As obs-deps need to be relocatable, we need to
# force SWIG to look for its files in a directory relative to the PREFIX_PATH. The best way to ensure this is to set the
# SWIG_LIB environment variable.
foreach(path IN LISTS CMAKE_PREFIX_PATH)
if(NOT DEFINED ENV{SWIG_LIB} AND EXISTS "${path}/bin/swig")
set(ENV{SWIG_LIB} "${path}/share/swig/CURRENT")
break()
endif()
endforeach()
# Set default values for CMake's bundle generator and created Info.plist files
set(MACOSX_BUNDLE_EXECUTABLE_NAME OBS)
set(MACOSX_BUNDLE_BUNDLE_NAME "${OBS_PRODUCT_NAME}")
set(MACOSX_BUNDLE_BUNDLE_VERSION ${OBS_BUILD_NUMBER})
set(MACOSX_BUNDLE_COPYRIGHT "${OBS_LEGAL_COPYRIGHT}")
set(MACOSX_BUNDLE_GUI_IDENTIFIER com.obsproject.obs-studio)
set(MACOSX_BUNDLE_ICON_FILE AppIcon)
set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${OBS_VERSION_CANONICAL})
string(TIMESTAMP CURRENT_YEAR "%Y")
# Enable find_package targets to become globally available targets
set(CMAKE_FIND_PACKAGE_TARGETS_GLOBAL TRUE)
# Enable RPATH support for generated binaries
set(CMAKE_MACOSX_RPATH TRUE)
# Use RPATHs from build tree _in_ the build tree
set(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
# Do not add default linker search paths to RPATH
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE)
# Use common bundle-relative RPATH for installed targets
set(CMAKE_INSTALL_RPATH "@executable_path/../Frameworks")
# Used for library exports only (obs-frontend-api)
set(OBS_LIBRARY_DESTINATION "lib")
set(OBS_INCLUDE_DESTINATION "include/obs")
set(OBS_CMAKE_DESTINATION "lib/cmake")
include(cpackconfig)