Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .gersemirc
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/BlankSpruce/gersemi/master/gersemi/configuration.schema.json

color: false
definitions: []
line_length: 120
indent: 2
list_expansion: favour-inlining
quiet: false
unsafe: false
workers: 10
warn_about_unknown_commands: false
1 change: 1 addition & 0 deletions .github/scripts/utils.zsh/setup_ubuntu
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ if (( ! (${skips[(Ie)all]} + ${skips[(Ie)deps]}) )) {
sudo apt-get install ${apt_args} \
build-essential \
libgles2-mesa-dev \
libsimde-dev \
obs-studio

local -a _qt_packages=()
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
!/cmake
!/data
!/src
!/tests
!.clang-format
!.gersemirc
!.gitignore
Expand Down
24 changes: 18 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/common/bootstrap.cmake" NO_POLICY_SCO

project(${_name} VERSION ${_version})

include(CTest)

option(ENABLE_FRONTEND_API "Use obs-frontend-api for UI functionality" OFF)
option(ENABLE_QT "Use Qt functionality" OFF)

Expand Down Expand Up @@ -37,12 +39,22 @@ endif()
# cmake-format: off
target_sources(
${CMAKE_PROJECT_NAME}
PRIVATE src/plugin-main.c
src/playlist.h
src/media-playlist-source.h
src/media-playlist-source.c
src/shuffler.h
src/shuffler.c)
PRIVATE
src/plugin-main.c
src/playlist.h
src/playback-coordinator.h
src/playback-coordinator.c
src/media-playlist-source.h
src/media-playlist-source.c
src/shuffler.h
src/shuffler.c
)
# cmake-format: on

set_target_properties_plugin(${CMAKE_PROJECT_NAME} PROPERTIES OUTPUT_NAME ${_name})

if(BUILD_TESTING)
add_executable(playback-coordinator-test tests/playback-coordinator-test.c src/playback-coordinator.c)
target_include_directories(playback-coordinator-test PRIVATE src)
add_test(NAME playback-coordinator COMMAND playback-coordinator-test)
endif()
20 changes: 10 additions & 10 deletions buildspec.json
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
{
"dependencies": {
"obs-studio": {
"version": "31.0.0",
"version": "31.1.1",
"baseUrl": "https://github.com/obsproject/obs-studio/archive/refs/tags",
"label": "OBS sources",
"hashes": {
"macos": "a22966ff07aba38833ba57c36c9e0d190d083be5dec5048d0a60cd9e6b997242",
"windows-x64": "e8434dcee06f1702f0a0bbd1489296c77116fc51356835c3af4a6ed21b1e1c74"
"macos": "39751f067bacc13d44b116c5138491b5f1391f91516d3d590d874edd21292291",
"windows-x64": "2c8427c10b55ac6d68008df2e9a3e82f4647aaad18f105e30d4713c2de678ccf"
}
},
"prebuilt": {
"version": "2024-09-12",
"version": "2025-07-11",
"baseUrl": "https://github.com/obsproject/obs-deps/releases/download",
"label": "Pre-Built obs-deps",
"hashes": {
"macos": "c857b211ee378772994b632036e1e5befe66b37e85286cb8e3cefc1435d5220a",
"windows-x64": "d4a4f194591766891ad3c0b267deec3c4b85239c8fe557273559927456aeedbb"
"macos": "495687e63383d1a287684b6e2e9bfe246bb8f156fe265926afb1a325af1edd2a",
"windows-x64": "c8c642c1070dc31ce9a0f1e4cef5bb992f4bff4882255788b5da12129e85caa7"
}
},
"qt6": {
"version": "2024-09-12",
"version": "2025-07-11",
"baseUrl": "https://github.com/obsproject/obs-deps/releases/download",
"label": "Pre-Built Qt6",
"hashes": {
"macos": "34a2de6b7f4d4d58fc5a15a4dba49a61d81a4045d0cedfc1a1f08c0dfb8047cf",
"windows-x64": "4d15ce13dbb0a8a2cabcce5ae0da5e80ee589b482a61b2025378465c1da32c4f"
"macos": "d3f5f04b6ea486e032530bdf0187cbda9a54e0a49621a4c8ba984c5023998867",
"windows-x64": "0e76bf0555dd5382838850b748d3dcfab44a1e1058441309ab54e1a65b156d0a"
},
"debugSymbols": {
"windows-x64": "dad2351a5c9cd438168e1ed8fb453a2534532252edb555f1001a5e8eb3f1bbd4"
"windows-x64": "11b7be92cf66a273299b8f3515c07a5cfb61614b59a4e67f7fc5ecba5e2bdf21"
}
}
},
Expand Down
55 changes: 40 additions & 15 deletions cmake/macos/compilerconfig.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,47 @@ include(compiler_common)
add_compile_options("$<$<NOT:$<COMPILE_LANGUAGE:Swift>>:-fopenmp-simd>")

# Ensure recent enough Xcode and platform SDK
set(_obs_macos_minimum_sdk 15.0) # Keep in sync with Xcode
set(_obs_macos_minimum_xcode 16.0) # Keep in sync with SDK
message(DEBUG "macOS SDK Path: ${CMAKE_OSX_SYSROOT}")
string(REGEX MATCH ".+/MacOSX.platform/Developer/SDKs/MacOSX([0-9]+\\.[0-9])+\\.sdk$" _ ${CMAKE_OSX_SYSROOT})
set(_obs_macos_current_sdk ${CMAKE_MATCH_1})
message(DEBUG "macOS SDK version: ${_obs_macos_current_sdk}")
if(_obs_macos_current_sdk VERSION_LESS _obs_macos_minimum_sdk)
message(
FATAL_ERROR
"Your macOS SDK version (${_obs_macos_current_sdk}) is too low. "
"The macOS ${_obs_macos_minimum_sdk} SDK (Xcode ${_obs_macos_minimum_xcode}) is required to build OBS."
function(check_sdk_requirements)
set(obs_macos_minimum_sdk 15.0) # Keep in sync with Xcode
set(obs_macos_minimum_xcode 16.0) # Keep in sync with SDK
execute_process(
COMMAND xcrun --sdk macosx --show-sdk-platform-version
OUTPUT_VARIABLE obs_macos_current_sdk
RESULT_VARIABLE result
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
unset(_obs_macos_current_sdk)
unset(_obs_macos_minimum_sdk)
unset(_obs_macos_minimum_xcode)
if(NOT result EQUAL 0)
message(
FATAL_ERROR
"Failed to fetch macOS SDK version. "
"Ensure that the macOS SDK is installed and that xcode-select points at the Xcode developer directory."
)
endif()
message(DEBUG "macOS SDK version: ${obs_macos_current_sdk}")
if(obs_macos_current_sdk VERSION_LESS obs_macos_minimum_sdk)
message(
FATAL_ERROR
"Your macOS SDK version (${obs_macos_current_sdk}) is too low. "
"The macOS ${obs_macos_minimum_sdk} SDK (Xcode ${obs_macos_minimum_xcode}) is required to build OBS."
)
endif()
execute_process(COMMAND xcrun --find xcodebuild OUTPUT_VARIABLE obs_macos_xcodebuild RESULT_VARIABLE result)
if(NOT result EQUAL 0)
message(
FATAL_ERROR
"Xcode was not found. "
"Ensure you have installed Xcode and that xcode-select points at the Xcode developer directory."
)
endif()
message(DEBUG "Path to xcodebuild binary: ${obs_macos_xcodebuild}")
if(XCODE_VERSION VERSION_LESS obs_macos_minimum_xcode)
message(
FATAL_ERROR
"Your Xcode version (${XCODE_VERSION}) is too low. Xcode ${obs_macos_minimum_xcode} is required to build OBS."
)
endif()
endfunction()
check_sdk_requirements()

# Enable dSYM generator for release builds
string(APPEND CMAKE_C_FLAGS_RELEASE " -g")
Expand Down
Loading