Kaynağa Gözat

cmake: Update buildspec system to use preset file

Updates code for dependency management to use "vendor" information from
the CMake preset file.
PatTheMav 1 hafta önce
ebeveyn
işleme
3e7fbf69a7

+ 29 - 3
cmake/common/buildspec_common.cmake

@@ -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
cmake/macos/buildspec.cmake

@@ -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
cmake/windows/buildspec.cmake

@@ -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}")