mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-08-28 17:42:28 +08:00
cmake: Update buildspec system to use preset file
Updates code for dependency management to use "vendor" information from the CMake preset file.
This commit is contained in:
@@ -46,11 +46,37 @@ function(_check_deps_version version)
|
||||
return(PROPAGATE found CMAKE_PREFIX_PATH)
|
||||
endfunction()
|
||||
|
||||
function(_get_dependency_data variable_name)
|
||||
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/CMakePresets.json" preset_data)
|
||||
|
||||
string(JSON configure_presets GET ${preset_data} "configurePresets")
|
||||
|
||||
string(JSON preset_count LENGTH "${configure_presets}")
|
||||
math(EXPR preset_count "${preset_count}-1")
|
||||
|
||||
foreach(index RANGE 0 ${preset_count})
|
||||
string(JSON preset_member_data GET "${configure_presets}" ${index})
|
||||
string(JSON preset_name GET ${preset_member_data} "name")
|
||||
|
||||
if(preset_name STREQUAL dependencies)
|
||||
string(JSON vendor_data GET ${preset_member_data} "vendor")
|
||||
string(JSON vendor_data GET ${vendor_data} "obsproject.com/obs-studio")
|
||||
string(JSON dependency_data GET ${vendor_data} "dependencies")
|
||||
break()
|
||||
else()
|
||||
continue()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(${variable_name} "${dependency_data}")
|
||||
|
||||
return(PROPAGATE ${variable_name})
|
||||
endfunction()
|
||||
|
||||
# _check_dependencies: Fetch and extract pre-built OBS build dependencies
|
||||
function(_check_dependencies)
|
||||
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/buildspec.json" buildspec)
|
||||
|
||||
string(JSON dependency_data GET ${buildspec} dependencies)
|
||||
set(dependencies_list ${ARGV})
|
||||
_get_dependency_data(dependency_data)
|
||||
|
||||
foreach(dependency IN LISTS dependencies_list)
|
||||
if(dependency STREQUAL cef AND NOT ENABLE_BROWSER)
|
||||
|
||||
@@ -9,8 +9,6 @@ function(_check_dependencies_macos)
|
||||
set(arch universal)
|
||||
set(platform macos-${arch})
|
||||
|
||||
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")
|
||||
@@ -20,7 +18,7 @@ function(_check_dependencies_macos)
|
||||
set(cef_destination "cef_binary_VERSION_macos_ARCH")
|
||||
set(dependencies_list prebuilt qt6 cef)
|
||||
|
||||
_check_dependencies()
|
||||
_check_dependencies(${dependencies_list})
|
||||
|
||||
execute_process(
|
||||
COMMAND "xattr" -r -d com.apple.quarantine "${dependencies_dir}/${destination}"
|
||||
|
||||
@@ -11,9 +11,8 @@ function(_handle_qt_cross_compile architecture)
|
||||
set(multiValueArgs "")
|
||||
cmake_parse_arguments(PARSE_ARGV 0 _HQCC "${options}" "${oneValueArgs}" "${multiValueArgs}")
|
||||
|
||||
file(READ "${CMAKE_CURRENT_SOURCE_DIR}/buildspec.json" buildspec)
|
||||
_get_dependency_data(dependency_data)
|
||||
|
||||
string(JSON dependency_data GET ${buildspec} dependencies)
|
||||
string(JSON data GET ${dependency_data} qt6)
|
||||
string(JSON version GET ${data} version)
|
||||
|
||||
@@ -100,7 +99,7 @@ function(_check_dependencies_windows)
|
||||
endif()
|
||||
set(platform windows-${arch})
|
||||
|
||||
_check_dependencies()
|
||||
_check_dependencies(${dependencies_list})
|
||||
|
||||
if(NOT CMAKE_VS_PLATFORM_NAME STREQUAL Win32)
|
||||
_handle_qt_cross_compile(${CMAKE_HOST_SYSTEM_PROCESSOR} DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/.deps/${qt6_destination}")
|
||||
|
||||
Reference in New Issue
Block a user