Browse Source

deps: Update CMake target source lists with alphabetic sorting

Also manually updates some CMake script files to make code more
readable.
PatTheMav 2 years ago
parent
commit
aa137f0766

+ 4 - 6
deps/CMakeLists.txt

@@ -1,16 +1,14 @@
 if(OS_WINDOWS)
-  if(NOT MINGW)
-    add_subdirectory(w32-pthreads)
-  endif()
   add_subdirectory(ipc-util)
+  add_subdirectory(w32-pthreads)
 endif()
 
 add_subdirectory(blake2)
+add_subdirectory(file-updater)
 add_subdirectory(glad)
+add_subdirectory(happy-eyeballs)
+add_subdirectory(libcaption)
 add_subdirectory(media-playback)
-add_subdirectory(file-updater)
 add_subdirectory(obs-scripting)
 add_subdirectory(opts-parser)
-add_subdirectory(libcaption)
 add_subdirectory(uthash)
-add_subdirectory(happy-eyeballs)

+ 5 - 10
deps/blake2/CMakeLists.txt

@@ -1,18 +1,13 @@
 cmake_minimum_required(VERSION 3.22...3.25)
 
-add_library(blake2 STATIC EXCLUDE_FROM_ALL )
+add_library(blake2 OBJECT)
 add_library(OBS::blake2 ALIAS blake2)
 
-target_sources(blake2 PRIVATE src/blake2b-ref.c src/blake2.h src/blake2-impl.h)
+target_sources(
+  blake2
+  PRIVATE src/blake2-impl.h src/blake2b-ref.c
+  PUBLIC src/blake2.h)
 
 target_include_directories(blake2 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src")
-set_source_files_properties(
-  src/blake2b-ref.c PROPERTIES COMPILE_OPTIONS
-                               "$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=implicit-int-conversion>")
-
-if(OS_WINDOWS)
-  target_compile_options(blake2 PRIVATE $<IF:$<CONFIG:Debug>,/MTd,/MT> /Zl)
-  target_compile_definitions(blake2 PRIVATE inline=_inline restrict=__restrict)
-endif()
 
 set_target_properties(blake2 PROPERTIES FOLDER deps)

+ 2 - 2
deps/file-updater/CMakeLists.txt

@@ -7,6 +7,6 @@ add_library(OBS::file-updater ALIAS file-updater)
 
 target_sources(file-updater INTERFACE file-updater/file-updater.c file-updater/file-updater.h)
 
-target_link_libraries(file-updater INTERFACE CURL::libcurl $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>)
-
 target_include_directories(file-updater INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
+
+target_link_libraries(file-updater INTERFACE CURL::libcurl $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>)

+ 18 - 15
deps/glad/CMakeLists.txt

@@ -2,29 +2,32 @@ cmake_minimum_required(VERSION 3.22...3.25)
 
 find_package(OpenGL REQUIRED)
 
-add_library(obsglad STATIC EXCLUDE_FROM_ALL )
+add_library(obsglad OBJECT)
 add_library(OBS::glad ALIAS obsglad)
 
 if(OBS_CMAKE_VERSION VERSION_LESS 3.0.0)
   add_library(OBS::obsglad ALIAS obsglad)
 endif()
 
-target_sources(obsglad PRIVATE src/glad.c include/glad/glad.h)
+# cmake-format: off
+target_sources(
+  obsglad
+  PRIVATE src/glad.c
+          $<$<PLATFORM_ID:Windows>:src/glad_wgl.c>
+          $<$<TARGET_EXISTS:OpenGL::EGL>:src/glad_egl.c>
+          $<$<TARGET_EXISTS:OpenGL::EGL>:include/EGL/eglplatform.h>
+  PUBLIC include/glad/glad.h
+         "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/include/glad/glad_wgl.h>"
+         "$<$<TARGET_EXISTS:OpenGL::EGL>:${CMAKE_CURRENT_SOURCE_DIR}/include/glad/glad_egl.h>")
+# cmake-format: on
 
-target_include_directories(obsglad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
-
-target_link_libraries(obsglad PUBLIC OpenGL::GL)
+target_compile_options(obsglad PRIVATE $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-strict-prototypes>)
 
-if(OS_WINDOWS)
-  target_sources(obsglad PRIVATE src/glad_wgl.c include/glad/glad_wgl.h)
-elseif(OS_MACOS)
-  target_compile_options(obsglad PRIVATE -Wno-strict-prototypes)
-elseif(OS_LINUX OR OS_FREEBSD)
-  if(TARGET OpenGL::EGL)
-    target_sources(obsglad PRIVATE src/glad_egl.c include/EGL/eglplatform.h include/glad/glad_egl.h)
+target_include_directories(obsglad PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include")
 
-    target_link_libraries(obsglad PRIVATE OpenGL::EGL)
-  endif()
-endif()
+target_link_libraries(
+  obsglad
+  PRIVATE $<$<NOT:$<PLATFORM_ID:Windows,Darwin>>:${CMAKE_DL_LIBS}>
+  PUBLIC OpenGL::GL $<$<TARGET_EXISTS:OpenGL::EGL>:OpenGL::EGL>)
 
 set_target_properties(obsglad PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

+ 8 - 9
deps/happy-eyeballs/CMakeLists.txt

@@ -1,16 +1,15 @@
 cmake_minimum_required(VERSION 3.22...3.25)
 
-add_library(happy-eyeballs INTERFACE)
+add_library(happy-eyeballs OBJECT)
 add_library(OBS::happy-eyeballs ALIAS happy-eyeballs)
 
-target_sources(happy-eyeballs INTERFACE happy-eyeballs.c happy-eyeballs.h)
+target_sources(
+  happy-eyeballs
+  PRIVATE happy-eyeballs.c
+  PUBLIC happy-eyeballs.h)
 
-target_include_directories(happy-eyeballs INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
+target_include_directories(happy-eyeballs PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
 
-target_link_libraries(happy-eyeballs INTERFACE OBS::libobs)
+target_link_libraries(happy-eyeballs PUBLIC OBS::libobs)
 
-if(OS_WINDOWS)
-  target_link_libraries(happy-eyeballs INTERFACE OBS::w32-pthreads)
-endif()
-
-set_target_properties(happy-eyeballs PROPERTIES FOLDER deps)
+set_target_properties(happy-eyeballs PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

+ 6 - 8
deps/ipc-util/CMakeLists.txt

@@ -1,14 +1,12 @@
 cmake_minimum_required(VERSION 3.24...3.25)
 
-# cmake-format: off
-add_library(ipc-util STATIC EXCLUDE_FROM_ALL)
-# cmake-format: on
+add_library(ipc-util INTERFACE)
 add_library(OBS::ipc-util ALIAS ipc-util)
 
-target_sources(ipc-util PRIVATE ipc-util/pipe.h)
-target_include_directories(ipc-util PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+target_sources(
+  ipc-util INTERFACE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/ipc-util/pipe-windows.c>" ipc-util/pipe.h
+                     "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_SOURCE_DIR}/ipc-util/pipe-windows.h>")
 
-target_sources(ipc-util PRIVATE ipc-util/pipe-windows.c ipc-util/pipe-windows.h)
-target_compile_options(ipc-util PRIVATE $<IF:$<CONFIG:Debug>,/MTd,/MT> /Zl)
+target_include_directories(ipc-util INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
 
-set_target_properties(ipc-util PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE ON)
+set_target_properties(ipc-util PROPERTIES FOLDER deps)

+ 12 - 4
deps/json11/CMakeLists.txt

@@ -1,9 +1,17 @@
 cmake_minimum_required(VERSION 3.22...3.25)
 
-add_library(json11 INTERFACE)
+add_library(json11 OBJECT)
 add_library(OBS::json11 ALIAS json11)
 
-target_include_directories(json11 INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
-target_compile_options(json11 INTERFACE $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-unqualified-std-cast-call>)
+target_sources(
+  json11
+  PRIVATE json11.cpp
+  PUBLIC json11.hpp)
 
-target_sources(json11 INTERFACE json11.cpp json11.hpp)
+target_include_directories(json11 PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+
+if(CMAKE_CXX_COMPILER_ID MATCHES "(AppleClang|Clang)" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 14)
+  target_compile_options(json11 PUBLIC -Wno-unqualified-std-cast-call)
+endif()
+
+set_target_properties(json11 PROPERTIES FOLDER deps)

+ 20 - 15
deps/libcaption/CMakeLists.txt

@@ -5,33 +5,38 @@ add_library(OBS::caption ALIAS caption)
 
 target_sources(
   caption
-  PRIVATE src/caption.c
+  PRIVATE # cmake-format: sortable
+          caption/cea708.h
+          caption/eia608.h
+          caption/eia608_charmap.h
+          caption/mpeg.h
+          caption/scc.h
+          caption/utf8.h
+          src/caption.c
           src/cea708.c
           src/eia608.c
           src/eia608_charmap.c
           src/eia608_from_utf8.c
           src/mpeg.c
-          src/srt.c
           src/scc.c
+          src/srt.c
           src/utf8.c
           src/xds.c
-          caption/eia608.h
-          caption/eia608_charmap.h
-          caption/cea708.h
-          caption/mpeg.h
-          caption/scc.h
-          caption/utf8.h
   PUBLIC caption/caption.h)
 
-target_compile_definitions(caption PRIVATE __STDC_CONSTANT_MACROS $<$<CXX_COMPILER_ID:MSVC>:_CRT_SECURE_NO_WARNINGS>)
-
-target_compile_options(
-  caption
-  PRIVATE "$<$<CXX_COMPILER_ID:Clang,AppleClang,GNU>:-Wno-unused-but-set-parameter;-Wno-comma;-Wno-strict-prototypes>")
-
 target_include_directories(
   caption
   PRIVATE caption
   PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
 
-set_target_properties(caption PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE ON)
+target_compile_definitions(caption PRIVATE __STDC_CONSTANT_MACROS)
+
+# cmake-format: off
+target_compile_options(
+  caption
+  PRIVATE $<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang,GNU>:-Wno-unused-but-set-parameter>
+          $<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang,GNU>:-Wno-strict-prototypes>
+          $<$<COMPILE_LANG_AND_ID:C,Clang,AppleClang>:-Wno-comma>)
+# cmake-format: on
+
+set_target_properties(caption PROPERTIES FOLDER deps POSITION_INDEPENDENT_CODE TRUE)

+ 10 - 6
deps/media-playback/CMakeLists.txt

@@ -1,24 +1,28 @@
 cmake_minimum_required(VERSION 3.22...3.25)
 
-find_package(FFmpeg REQUIRED COMPONENTS avcodec avdevice avutil avformat)
+find_package(FFmpeg REQUIRED avcodec avdevice avutil avformat)
 
 add_library(media-playback INTERFACE)
 add_library(OBS::media-playback ALIAS media-playback)
 
 target_sources(
   media-playback
-  INTERFACE media-playback/media.c
-            media-playback/media.h
+  INTERFACE # cmake-format: sortable
             media-playback/cache.c
             media-playback/cache.h
+            media-playback/closest-format.h
             media-playback/decode.c
             media-playback/decode.h
             media-playback/media-playback.c
             media-playback/media-playback.h
-            media-playback/closest-format.h)
+            media-playback/media.c
+            media-playback/media.h)
 
 target_include_directories(media-playback INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
-target_compile_options(media-playback INTERFACE ${ARCH_SIMD_FLAGS})
-target_compile_definitions(media-playback INTERFACE ${ARCH_SIMD_DEFINES})
+
+if(OBS_CMAKE_VERSION VERSION_LESS 3.0)
+  target_compile_options(media-playback INTERFACE ${ARCH_SIMD_FLAGS})
+  target_compile_definitions(media-playback INTERFACE ${ARCH_SIMD_DEFINES})
+endif()
 
 target_link_libraries(media-playback INTERFACE FFmpeg::avcodec FFmpeg::avdevice FFmpeg::avutil FFmpeg::avformat)

+ 15 - 11
deps/obs-scripting/CMakeLists.txt

@@ -7,11 +7,7 @@ if(NOT ENABLE_SCRIPTING)
   return()
 endif()
 
-add_library(obs-cstrcache INTERFACE)
-add_library(OBS::cstrcache ALIAS obs-cstrcache)
-
-target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h)
-target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
+include(cmake/cstrcache.cmake)
 
 find_package(SWIG 4 REQUIRED)
 
@@ -31,20 +27,28 @@ endif()
 target_sources(
   obs-scripting
   PUBLIC obs-scripting.h
-  PRIVATE obs-scripting.c obs-scripting-logging.c obs-scripting-callback.h
-          $<$<BOOL:${ENABLE_UI}>:obs-scripting-python-frontend.c> $<$<BOOL:${ENABLE_UI}>:obs-scripting-lua-frontend.c>)
+  PRIVATE obs-scripting-callback.h obs-scripting-logging.c obs-scripting.c)
 
 target_compile_definitions(obs-scripting PRIVATE SCRIPT_DIR="${OBS_SCRIPT_PLUGIN_PATH}"
                                                  $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
-target_compile_features(obs-scripting PRIVATE cxx_auto_type)
-target_include_directories(obs-scripting PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
 
-target_link_libraries(obs-scripting PRIVATE OBS::libobs OBS::cstrcache $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
-                                            $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads> $<$<PLATFORM_ID:Darwin>:objc>)
+target_include_directories(obs-scripting PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+
+# cmake-format: off
+target_link_libraries(
+  obs-scripting
+  PRIVATE OBS::libobs
+          OBS::cstrcache
+          $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
+          $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
+          $<$<PLATFORM_ID:Darwin>:objc>)
+# cmake-format: on
 
 if(OS_WINDOWS)
   configure_file(cmake/windows/obs-module.rc.in obs-scripting.rc)
   target_sources(obs-scripting PRIVATE obs-scripting.rc)
 endif()
 
+# cmake-format: off
 set_target_properties_obs(obs-scripting PROPERTIES FOLDER scripting PREFIX "")
+# cmake-format: on

+ 5 - 0
deps/obs-scripting/cmake/cstrcache.cmake

@@ -0,0 +1,5 @@
+add_library(obs-cstrcache INTERFACE)
+add_library(OBS::cstrcache ALIAS obs-cstrcache)
+
+target_sources(obs-cstrcache INTERFACE cstrcache.cpp cstrcache.h)
+target_include_directories(obs-cstrcache INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")

+ 24 - 18
deps/obs-scripting/cmake/lua.cmake

@@ -4,26 +4,32 @@ option(ENABLE_SCRIPTING_LUA "Enable Lua scripting support" ON)
 
 if(ENABLE_SCRIPTING_LUA)
   add_subdirectory(obslua)
+
   find_package(Luajit REQUIRED)
-else()
-  target_disable_feature(obs-scripting "Lua scripting support")
-endif()
 
-target_sources(obs-scripting PRIVATE obs-scripting-lua.c obs-scripting-lua.h obs-scripting-lua-source.c)
-target_compile_definitions(obs-scripting PUBLIC LUAJIT_FOUND)
+  add_custom_command(
+    OUTPUT swig/swigluarun.h
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    PRE_BUILD
+    COMMAND ${CMAKE_COMMAND} -E make_directory swig
+    COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -lua -external-runtime swig/swigluarun.h
+    COMMENT "obs-scripting - generating Luajit SWIG interface headers")
+
+  set_source_files_properties(swig/swigluarun.h PROPERTIES GENERATED TRUE)
 
-add_custom_command(
-  OUTPUT swig/swigluarun.h
-  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-  PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E make_directory swig
-  COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -lua -external-runtime swig/swigluarun.h
-  COMMENT "obs-scripting - generating Luajit SWIG interface headers")
+  target_sources(
+    obs-scripting
+    PRIVATE # cmake-format: sortable
+            $<$<BOOL:${ENABLE_UI}>:obs-scripting-lua-frontend.c> obs-scripting-lua-source.c obs-scripting-lua.c
+            obs-scripting-lua.h swig/swigluarun.h)
 
-target_sources(obs-scripting PRIVATE swig/swigluarun.h)
-set_source_files_properties(swig/swigluarun.h PROPERTIES GENERATED ON)
-set_source_files_properties(
-  obs-scripting-lua.c obs-scripting-lua-source.c
-  PROPERTIES COMPILE_OPTIONS "$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=shorten-64-to-32;-Wno-error=shadow>")
+  target_compile_definitions(obs-scripting PUBLIC LUAJIT_FOUND)
 
-target_link_libraries(obs-scripting PRIVATE Luajit::Luajit)
+  set_source_files_properties(
+    obs-scripting-lua.c obs-scripting-lua-source.c
+    PROPERTIES COMPILE_OPTIONS $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-error=shorten-64-to-32>)
+
+  target_link_libraries(obs-scripting PRIVATE Luajit::Luajit)
+else()
+  target_disable_feature(obs-scripting "Lua scripting support")
+endif()

+ 35 - 35
deps/obs-scripting/cmake/python.cmake

@@ -4,46 +4,46 @@ option(ENABLE_SCRIPTING_PYTHON "Enable Python scripting support" ON)
 
 if(ENABLE_SCRIPTING_PYTHON)
   add_subdirectory(obspython)
+
   if(OS_WINDOWS)
     find_package(Python 3.8...<3.11 REQUIRED Interpreter Development)
   else()
     find_package(Python 3.8...<3.12 REQUIRED Interpreter Development)
   endif()
+
+  add_custom_command(
+    OUTPUT swig/swigpyrun.h
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    PRE_BUILD
+    COMMAND ${CMAKE_COMMAND} -E make_directory swig
+    COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -python
+            $<$<PLATFORM_ID:Windows,Darwin>:-py3-stable-abi> -external-runtime swig/swigpyrun.h
+    COMMENT "obs-scripting - generating Python 3 SWIG interface headers")
+
+  set_source_files_properties(swig/swigpyrun.h PROPERTIES GENERATED TRUE)
+
+  target_sources(
+    obs-scripting
+    PRIVATE # cmake-format: sortable
+            $<$<BOOL:${ENABLE_UI}>:obs-scripting-python-frontend.c>
+            $<$<PLATFORM_ID:Windows,Darwin>:obs-scripting-python-import.c>
+            obs-scripting-python-import.h
+            obs-scripting-python.c
+            obs-scripting-python.h
+            swig/swigpyrun.h)
+
+  target_compile_definitions(
+    obs-scripting
+    PRIVATE ENABLE_SCRIPTING PYTHON_LIB="$<TARGET_LINKER_FILE_NAME:Python::Python>"
+    PUBLIC Python_FOUND)
+
+  target_include_directories(
+    obs-scripting
+    PRIVATE "$<$<PLATFORM_ID:Windows,Darwin>:$<TARGET_PROPERTY:Python::Python,INTERFACE_INCLUDE_DIRECTORIES>>")
+
+  target_link_libraries(obs-scripting PRIVATE $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:Python::Python>)
+
+  target_link_options(obs-scripting PRIVATE $<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>)
 else()
   target_disable_feature(obs-scripting "Python scripting support")
 endif()
-
-target_sources(obs-scripting PRIVATE obs-scripting-python.c obs-scripting-python.h obs-scripting-python-import.h)
-
-target_compile_definitions(
-  obs-scripting
-  PRIVATE ENABLE_SCRIPTING PYTHON_LIB="$<TARGET_LINKER_FILE_NAME:Python::Python>"
-  PUBLIC Python_FOUND)
-
-add_custom_command(
-  OUTPUT swig/swigpyrun.h
-  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-  PRE_BUILD
-  COMMAND ${CMAKE_COMMAND} -E make_directory swig
-  COMMAND ${CMAKE_COMMAND} -E env "SWIG_LIB=${SWIG_DIR}" ${SWIG_EXECUTABLE} -python
-          $<IF:$<BOOL:${OS_LINUX}>,-py3,-py3-stable-abi> -external-runtime swig/swigpyrun.h
-  COMMENT "obs-scripting - generating Python 3 SWIG interface headers")
-
-target_sources(obs-scripting PRIVATE swig/swigpyrun.h)
-set_source_files_properties(swig/swigpyrun.h PROPERTIES GENERATED ON)
-
-if(OS_WINDOWS)
-  target_sources(obs-scripting PRIVATE obs-scripting-python-import.c)
-
-  get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
-  target_include_directories(obs-scripting PRIVATE ${_python_include_directory})
-elseif(OS_MACOS)
-  target_sources(obs-scripting PRIVATE obs-scripting-python-import.c)
-
-  get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
-  target_include_directories(obs-scripting PRIVATE ${_python_include_directory})
-
-  target_link_options(obs-scripting PRIVATE LINKER:-undefined LINKER:dynamic_lookup)
-elseif(OS_LINUX OR OS_FREEBSD)
-  target_link_libraries(obs-scripting PRIVATE Python::Python)
-endif()

+ 16 - 14
deps/obs-scripting/obslua/CMakeLists.txt

@@ -11,12 +11,12 @@ if(POLICY CMP0086)
 endif()
 
 find_package(Luajit REQUIRED)
-
 find_package(SWIG 4 REQUIRED)
 
 include(UseSWIG)
 
 set_source_files_properties(obslua.i PROPERTIES USE_TARGET_INCLUDE_DIRECTORIES TRUE)
+
 swig_add_library(
   obslua
   LANGUAGE lua
@@ -25,21 +25,21 @@ swig_add_library(
 
 add_library(OBS::lua ALIAS obslua)
 
-target_compile_options(obslua PRIVATE "$<$<C_COMPILER_ID:AppleClang,Clang>:-Wno-error=shorten-64-to-32>")
+target_compile_options(
+  obslua
+  PRIVATE $<$<PLATFORM_ID:Windows>:/wd4054>
+          $<$<PLATFORM_ID:Windows>:/wd4197>
+          $<$<PLATFORM_ID:Windows>:/wd4244>
+          $<$<PLATFORM_ID:Windows>:/wd4267>
+          $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-shorten-64-to-32>
+          $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unreachable-code>
+          $<$<COMPILE_LANG_AND_ID:C,GNU>:-Wno-maybe-uninitialized>)
+
 target_compile_definitions(obslua PRIVATE SWIG_TYPE_TABLE=obslua SWIG_LUA_INTERPRETER_NO_DEBUG
                                           $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
 
-target_link_libraries(obslua PRIVATE OBS::scripting OBS::cstrcache OBS::libobs Luajit::Luajit
-                                     $<$<BOOL:ENABLE_UI>:OBS::frontend-api>)
-
-if(OS_WINDOWS)
-  target_compile_options(obslua PRIVATE /wd4054 /wd4197 /wd4244 /wd4267)
-elseif(OS_MACOS)
-  set_property(TARGET obslua PROPERTY XCODE_ATTRIBUTE_STRIP_STYLE non-global)
-  target_compile_options(obslua PRIVATE -Wno-unreachable-code)
-elseif(OS_LINUX OR OS_FREEBSD)
-  target_compile_options(obslua PRIVATE -Wno-maybe-uninitialized)
-endif()
+target_link_libraries(obslua PRIVATE OBS::cstrcache OBS::libobs OBS::scripting Luajit::Luajit
+                                     $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>)
 
 set_property(
   TARGET obslua
@@ -47,4 +47,6 @@ set_property(
   PROPERTY SWIG_COMPILE_DEFINITIONS "SWIG_TYPE_TABLE=obslua" "SWIG_LUA_INTERPRETER_NO_DEBUG"
            "$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>")
 
-set_target_properties_obs(obslua PROPERTIES FOLDER scripting)
+# cmake-format: off
+set_target_properties_obs(obslua PROPERTIES FOLDER scripting XCODE_ATTRIBUTE_STRIP_STYLE non-global)
+# cmake-format: on

+ 19 - 20
deps/obs-scripting/obspython/CMakeLists.txt

@@ -20,7 +20,7 @@ find_package(SWIG 4 REQUIRED)
 include(UseSWIG)
 
 set_source_files_properties(obspython.i PROPERTIES USE_TARGET_INCLUDE_DIRECTORIES TRUE
-                                                   SWIG_FLAGS "$<IF:$<BOOL:${OS_LINUX}>,-py3,-py3-stable-abi>")
+                                                   SWIG_FLAGS $<$<PLATFORM_ID:Windows,Darwin>:-py3-stable-abi>)
 
 swig_add_library(
   obspython
@@ -35,29 +35,26 @@ file(
   OUTPUT $<$<PLATFORM_ID:Windows>:$<CONFIG>/>obspython.h
   CONTENT "#pragma once\n\n#define PYTHON_LIB \"$<TARGET_LINKER_FILE_NAME:Python::Python>\"\n")
 
-target_include_directories(obspython PRIVATE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>>")
+target_include_directories(
+  obspython PRIVATE "$<$<PLATFORM_ID:Windows>:${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>>"
+                    "$<$<PLATFORM_ID:Darwin>:$<TARGET_PROPERTY:Python::Python,INTERFACE_INCLUDE_DIRECTORIES>>")
 
-list(APPEND _SWIG_DEFINITIONS "SWIG_TYPE_TABLE=obspython" "Py_ENABLE_SHARED=1" "SWIG_PYTHON_INTERPRETER_NO_DEBUG")
+target_compile_options(
+  obspython
+  PRIVATE $<$<PLATFORM_ID:Windows>:/wd4100>
+          $<$<PLATFORM_ID:Windows>:/wd4197>
+          $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unused-parameter>
+          $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-macro-redefined>
+          $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-unreachable-code>)
 
 target_compile_definitions(obspython PRIVATE SWIG_TYPE_TABLE=obspython Py_ENABLE_SHARED=1
                                              SWIG_PYTHON_INTERPRETER_NO_DEBUG $<$<BOOL:${ENABLE_UI}>:ENABLE_UI>)
 
-target_link_libraries(obspython PRIVATE OBS::scripting OBS::cstrcache OBS::libobs
-                                        $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>)
-
-if(OS_WINDOWS)
-  target_link_libraries(obspython PRIVATE Python::Python)
-  target_compile_options(obspython PRIVATE /wd4100 /wd4197)
-elseif(OS_MACOS)
-  get_target_property(_python_include_directory Python::Python INTERFACE_INCLUDE_DIRECTORIES)
-  target_include_directories(obspython PRIVATE ${_python_include_directory})
-  target_compile_options(obspython PRIVATE -Wno-unused-parameter -Wno-macro-redefined -Wno-unreachable-code)
-  target_link_options(obspython PUBLIC LINKER:-undefined,dynamic_lookup)
-
-  set_property(TARGET obspython PROPERTY XCODE_ATTRIBUTE_STRIP_STYLE non-global)
-elseif(OS_LINUX OR OS_FREEBSD)
-  target_link_libraries(obspython PRIVATE Python::Python)
-endif()
+target_link_libraries(
+  obspython PRIVATE OBS::cstrcache OBS::libobs OBS::scripting $<$<BOOL:${ENABLE_UI}>:OBS::frontend-api>
+                    $<$<NOT:$<PLATFORM_ID:Darwin>>:Python::Python>)
+
+target_link_options(obspython PRIVATE $<$<PLATFORM_ID:Darwin>:LINKER:-undefined,dynamic_lookup>)
 
 if(MSVC OR XCODE)
   add_custom_command(
@@ -74,4 +71,6 @@ set_property(
   PROPERTY SWIG_COMPILE_DEFINITIONS "SWIG_TYPE_TABLE=obspython" "Py_ENABLE_SHARED=1" "SWIG_PYTHON_INTERPRETER_NO_DEBUG"
            "$<$<BOOL:${ENABLE_UI}>:ENABLE_UI>" "$<$<PLATFORM_ID:Windows>:MS_NO_COREDLL>")
 
-set_target_properties_obs(obspython PROPERTIES FOLDER scripting PREFIX "_")
+# cmake-format: off
+set_target_properties_obs(obspython PROPERTIES FOLDER scripting PREFIX "_" XCODE_ATTRIBUTE_STRIP_STYLE non-global)
+# cmake-format: on

+ 10 - 4
deps/opts-parser/CMakeLists.txt

@@ -1,9 +1,15 @@
 cmake_minimum_required(VERSION 3.22...3.25)
 
-add_library(opts-parser INTERFACE)
+add_library(opts-parser OBJECT)
 add_library(OBS::opts-parser ALIAS opts-parser)
 
-target_sources(opts-parser INTERFACE opts-parser.c opts-parser.h)
-target_include_directories(opts-parser INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
+target_sources(
+  opts-parser
+  PRIVATE opts-parser.c
+  PUBLIC opts-parser.h)
 
-target_link_libraries(opts-parser INTERFACE OBS::libobs)
+target_include_directories(opts-parser PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
+
+target_link_libraries(opts-parser PUBLIC OBS::libobs)
+
+set_target_properties(opts-parser PROPERTIES FOLDER deps)

+ 1 - 1
deps/uthash/CMakeLists.txt

@@ -5,4 +5,4 @@ add_library(OBS::uthash ALIAS uthash)
 
 target_sources(uthash INTERFACE uthash/uthash.h)
 
-set_target_properties(uthash PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}")
+target_include_directories(uthash INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")

+ 5 - 1
deps/w32-pthreads/CMakeLists.txt

@@ -5,8 +5,11 @@ legacy_check()
 add_library(w32-pthreads SHARED EXCLUDE_FROM_ALL )
 add_library(OBS::w32-pthreads ALIAS w32-pthreads)
 
-target_sources(w32-pthreads PRIVATE implement.h pthread.c pthread.h sched.h semaphore.h w32-pthreads.rc)
+target_sources(w32-pthreads PRIVATE # cmake-format: sortable
+                                    implement.h pthread.c pthread.h sched.h semaphore.h w32-pthreads.rc)
+
 target_compile_definitions(w32-pthreads PRIVATE __CLEANUP_C PTW32_BUILD)
+
 target_include_directories(w32-pthreads PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
 
 configure_file(cmake/windows/obs-module.rc.in w32-pthreads.rc)
@@ -17,4 +20,5 @@ set_property(
   TARGET w32-pthreads
   APPEND
   PROPERTY PUBLIC_HEADER pthread.h sched.h)
+
 target_export(w32-pthreads)