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:
PatTheMav
2026-01-06 22:38:53 +01:00
committed by Ryan Foster
parent bf85aed2d5
commit 3e7fbf69a7
3 changed files with 32 additions and 9 deletions
+29 -3
View File
@@ -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)
+1 -3
View File
@@ -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}"
+2 -3
View File
@@ -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}")