SceneSwitcher/cmake/macos/buildspec.cmake
2024-02-17 10:03:04 +01:00

66 lines
2.0 KiB
CMake

# CMake macOS build dependencies module
include_guard(GLOBAL)
include(buildspec_common)
# Hacky workaround to ensure all libobs headers are available at build time
function(_check_for_libobs_headers)
set(dependencies_dir "${CMAKE_CURRENT_SOURCE_DIR}/.deps")
set(headers_to_copy "util/config-file.h" "util/platform.h"
"graphics/matrix4.h" "graphics/axisang.h")
foreach(header IN LISTS headers_to_copy)
set(libobs_header_location
"${dependencies_dir}/Frameworks/libobs.framework/Versions/A/Headers/${header}"
)
if(EXISTS ${libobs_header_location})
continue()
endif()
string(
JSON
version
GET
${buildspec}
dependencies
obs-studio
version)
set(input_file "${dependencies_dir}/obs-studio-${version}/libobs/${header}")
message(STATUS "Will copy ${input_file} to ${libobs_header_location} ...")
configure_file(${input_file} ${libobs_header_location} COPYONLY)
endforeach()
endfunction()
# _check_dependencies_macos: Set up macOS slice for _check_dependencies
function(_check_dependencies_macos)
set(arch universal)
set(platform macos)
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/buildspec.json" buildspec)
set(dependencies_dir "${CMAKE_CURRENT_SOURCE_DIR}/.deps")
set(prebuilt_filename "macos-deps-VERSION-ARCH_REVISION.tar.xz")
set(prebuilt_destination "obs-deps-VERSION-ARCH")
set(qt6_filename "macos-deps-qt6-VERSION-ARCH-REVISION.tar.xz")
set(qt6_destination "obs-deps-qt6-VERSION-ARCH")
set(obs-studio_filename "VERSION.tar.gz")
set(obs-studio_destination "obs-studio-VERSION")
set(dependencies_list prebuilt qt6 obs-studio)
_check_dependencies()
execute_process(COMMAND "xattr" -r -d com.apple.quarantine
"${dependencies_dir}" RESULT_VARIABLE result)
list(APPEND CMAKE_FRAMEWORK_PATH "${dependencies_dir}/Frameworks")
set(CMAKE_FRAMEWORK_PATH
${CMAKE_FRAMEWORK_PATH}
PARENT_SCOPE)
endfunction()
_check_dependencies_macos()
_check_for_libobs_headers()