瀏覽代碼

libobs: Update CMake target source lists with alphabetic sorting

PatTheMav 2 年之前
父節點
當前提交
e065f2a839

+ 18 - 14
libobs/CMakeLists.txt

@@ -2,23 +2,15 @@ cmake_minimum_required(VERSION 3.22...3.25)
 
 legacy_check()
 
-# cmake-format: off
-add_library(libobs-version STATIC EXCLUDE_FROM_ALL)
-add_library(OBS::libobs-version ALIAS libobs-version)
-# cmake-format: on
-configure_file(obsversion.c.in obsversion.c @ONLY)
-target_sources(libobs-version PRIVATE obsversion.c obsversion.h)
-set_property(TARGET libobs-version PROPERTY FOLDER core)
-
-add_library(libobs SHARED)
-add_library(OBS::libobs ALIAS libobs)
+include(cmake/obs-version.cmake)
 
 find_package(Threads REQUIRED)
+
 # cmake-format: off
 if(OS_WINDOWS OR OS_MACOS)
   set(ffmpeg_version 6)
 else()
-  set(ffmpeg_version 5.1)
+  set(ffmpeg_version 4.4)
 endif()
 
 find_package(
@@ -29,6 +21,7 @@ find_package(
            swresample
   OPTIONAL_COMPONENTS avcodec)
 # cmake-format: on
+
 find_package(ZLIB REQUIRED)
 
 if(ENABLE_UI)
@@ -36,8 +29,16 @@ if(ENABLE_UI)
 endif()
 
 find_package(jansson REQUIRED)
-add_subdirectory("${CMAKE_SOURCE_DIR}/deps/libcaption" "${CMAKE_BINARY_DIR}/deps/libcaption")
-add_subdirectory("${CMAKE_SOURCE_DIR}/deps/uthash" "${CMAKE_BINARY_DIR}/deps/uthash")
+if(NOT TARGET OBS::caption)
+  add_subdirectory("${CMAKE_SOURCE_DIR}/deps/libcaption" "${CMAKE_BINARY_DIR}/deps/libcaption")
+endif()
+
+if(NOT TARGET OBS::uthash)
+  add_subdirectory("${CMAKE_SOURCE_DIR}/deps/uthash" "${CMAKE_BINARY_DIR}/deps/uthash")
+endif()
+
+add_library(libobs SHARED)
+add_library(OBS::libobs ALIAS libobs)
 
 target_sources(
   libobs
@@ -238,6 +239,7 @@ target_sources(
           graphics/vec4.h)
 
 target_compile_features(libobs PUBLIC cxx_std_17)
+
 target_compile_definitions(
   libobs
   PRIVATE IS_LIBOBS
@@ -264,13 +266,15 @@ elseif(OS_MACOS)
   include(cmake/os-macos.cmake)
 elseif(OS_LINUX)
   include(cmake/os-linux.cmake)
-elseif(OS_FREEBSD)
+elseif(OS_FREEBSD OR OS_OPENBSD)
   include(cmake/os-freebsd.cmake)
 endif()
 
 configure_file(obsconfig.h.in "${CMAKE_BINARY_DIR}/config/obsconfig.h" @ONLY)
+
 target_include_directories(libobs PUBLIC "$<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/config>"
                                          "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
+
 target_compile_definitions(libobs PUBLIC HAVE_OBSCONFIG_H)
 
 set(public_headers

+ 13 - 0
libobs/cmake/obs-version.cmake

@@ -0,0 +1,13 @@
+add_library(libobs-version OBJECT)
+add_library(OBS::libobs-version ALIAS libobs-version)
+
+configure_file(obsversion.c.in obsversion.c @ONLY)
+
+target_sources(
+  libobs-version
+  PRIVATE obsversion.c
+  PUBLIC obsversion.h)
+
+target_include_directories(libobs-version PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>")
+
+set_property(TARGET libobs-version PROPERTY FOLDER core)

+ 12 - 5
libobs/cmake/os-freebsd.cmake

@@ -1,24 +1,28 @@
 find_package(X11 REQUIRED)
 find_package(x11-xcb REQUIRED)
 # cmake-format: off
-find_package(xcb OPTIONAL_COMPONENTS xcb-xinput QUIET)
+find_package(xcb REQUIRED xcb OPTIONAL_COMPONENTS xcb-xinput)
 # cmake-format: on
 find_package(gio)
 find_package(Sysinfo REQUIRED)
 
 target_sources(
   libobs
-  PRIVATE obs-nix.c
+  PRIVATE # cmake-format: sortable
           obs-nix-platform.c
           obs-nix-platform.h
           obs-nix-x11.c
+          obs-nix.c
           util/pipe-posix.c
           util/platform-nix.c
           util/threading-posix.c
           util/threading-posix.h)
-target_compile_definitions(libobs PRIVATE $<$<OR:$<C_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:GNU>>:ENABLE_DARRAY_TYPE_TEST>)
+
+target_compile_definitions(libobs PRIVATE $<$<COMPILE_LANG_AND_ID:C,GNU>:ENABLE_DARRAY_TYPE_TEST>
+                                          $<$<COMPILE_LANG_AND_ID:CXX,GNU>:ENABLE_DARRAY_TYPE_TEST>)
 
 target_link_libraries(libobs PRIVATE X11::x11-xcb xcb::xcb Sysinfo::Sysinfo)
+
 if(TARGET xcb::xcb-xinput)
   target_link_libraries(libobs PRIVATE xcb::xcb-xinput)
 endif()
@@ -28,8 +32,11 @@ if(ENABLE_PULSEAUDIO)
 
   target_sources(
     libobs
-    PRIVATE audio-monitoring/pulse/pulseaudio-enum-devices.c audio-monitoring/pulse/pulseaudio-monitoring-available.c
-            audio-monitoring/pulse/pulseaudio-output.c audio-monitoring/pulse/pulseaudio-wrapper.c
+    PRIVATE # cmake-format: sortable
+            audio-monitoring/pulse/pulseaudio-enum-devices.c
+            audio-monitoring/pulse/pulseaudio-monitoring-available.c
+            audio-monitoring/pulse/pulseaudio-output.c
+            audio-monitoring/pulse/pulseaudio-wrapper.c
             audio-monitoring/pulse/pulseaudio-wrapper.h)
 
   target_link_libraries(libobs PRIVATE PulseAudio::PulseAudio)

+ 11 - 5
libobs/cmake/os-linux.cmake

@@ -2,24 +2,27 @@ find_package(LibUUID REQUIRED)
 find_package(X11 REQUIRED)
 find_package(x11-xcb REQUIRED)
 # cmake-format: off
-find_package(xcb COMPONENTS xcb OPTIONAL_COMPONENTS xcb-xinput QUIET)
+find_package(xcb REQUIRED xcb OPTIONAL_COMPONENTS xcb-xinput)
 # cmake-format: on
 find_package(gio)
 
 target_sources(
   libobs
-  PRIVATE obs-nix.c
+  PRIVATE # cmake-format: sortable
           obs-nix-platform.c
           obs-nix-platform.h
           obs-nix-x11.c
+          obs-nix.c
           util/pipe-posix.c
           util/platform-nix.c
           util/threading-posix.c
           util/threading-posix.h)
 
-target_compile_definitions(libobs PRIVATE USE_XDG $<$<C_COMPILER_ID:GNU>:ENABLE_DARRAY_TYPE_TEST>)
+target_compile_definitions(libobs PRIVATE USE_XDG $<$<COMPILE_LANG_AND_ID:C,GNU>:ENABLE_DARRAY_TYPE_TEST>
+                                          $<$<COMPILE_LANG_AND_ID:CXX,GNU>:ENABLE_DARRAY_TYPE_TEST>)
 
 target_link_libraries(libobs PRIVATE X11::x11-xcb xcb::xcb LibUUID::LibUUID ${CMAKE_DL_LIBS})
+
 if(TARGET xcb::xcb-xinput)
   target_link_libraries(libobs PRIVATE xcb::xcb-xinput)
 endif()
@@ -29,8 +32,11 @@ if(ENABLE_PULSEAUDIO)
 
   target_sources(
     libobs
-    PRIVATE audio-monitoring/pulse/pulseaudio-enum-devices.c audio-monitoring/pulse/pulseaudio-output.c
-            audio-monitoring/pulse/pulseaudio-monitoring-available.c audio-monitoring/pulse/pulseaudio-wrapper.c
+    PRIVATE # cmake-format: sortable
+            audio-monitoring/pulse/pulseaudio-enum-devices.c
+            audio-monitoring/pulse/pulseaudio-monitoring-available.c
+            audio-monitoring/pulse/pulseaudio-output.c
+            audio-monitoring/pulse/pulseaudio-wrapper.c
             audio-monitoring/pulse/pulseaudio-wrapper.h)
 
   target_link_libraries(libobs PRIVATE PulseAudio::PulseAudio)

+ 11 - 9
libobs/cmake/os-macos.cmake

@@ -1,28 +1,30 @@
 target_link_libraries(
   libobs
-  PRIVATE "$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>"
-          "$<LINK_LIBRARY:FRAMEWORK,CoreAudio.framework>"
+  PRIVATE # cmake-format: sortable
+          "$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>"
           "$<LINK_LIBRARY:FRAMEWORK,AudioToolbox.framework>"
           "$<LINK_LIBRARY:FRAMEWORK,AudioUnit.framework>"
-          "$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>"
-          "$<LINK_LIBRARY:FRAMEWORK,IOKit.framework>"
-          "$<LINK_LIBRARY:FRAMEWORK,Carbon.framework>")
+          "$<LINK_LIBRARY:FRAMEWORK,Carbon.framework>"
+          "$<LINK_LIBRARY:FRAMEWORK,Cocoa.framework>"
+          "$<LINK_LIBRARY:FRAMEWORK,CoreAudio.framework>"
+          "$<LINK_LIBRARY:FRAMEWORK,IOKit.framework>")
 
 target_sources(
   libobs
-  PRIVATE obs-cocoa.m
+  PRIVATE # cmake-format: sortable
           audio-monitoring/osx/coreaudio-enum-devices.c
           audio-monitoring/osx/coreaudio-monitoring-available.c
           audio-monitoring/osx/coreaudio-output.c
           audio-monitoring/osx/mac-helpers.h
+          obs-cocoa.m
+          util/apple/cfstring-utils.h
           util/pipe-posix.c
           util/platform-cocoa.m
           util/platform-nix.c
           util/threading-posix.c
-          util/threading-posix.h
-          util/apple/cfstring-utils.h)
+          util/threading-posix.h)
 
 target_compile_options(libobs PUBLIC -Wno-strict-prototypes -Wno-shorten-64-to-32)
 
-set_property(SOURCE util/platform-cocoa.m obs-cocoa.m PROPERTY COMPILE_FLAGS -fobjc-arc)
+set_property(SOURCE obs-cocoa.m util/platform-cocoa.m PROPERTY COMPILE_FLAGS -fobjc-arc)
 set_property(TARGET libobs PROPERTY FRAMEWORK TRUE)

+ 5 - 3
libobs/cmake/os-windows.cmake

@@ -17,13 +17,14 @@ target_include_directories(obs-winhandle INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}"
 
 target_sources(
   libobs
-  PRIVATE libobs.rc
-          obs-win-crash-handler.c
-          obs-windows.c
+  PRIVATE # cmake-format: sortable
           audio-monitoring/win32/wasapi-enum-devices.c
           audio-monitoring/win32/wasapi-monitoring-available.c
           audio-monitoring/win32/wasapi-output.c
           audio-monitoring/win32/wasapi-output.h
+          libobs.rc
+          obs-win-crash-handler.c
+          obs-windows.c
           util/pipe-windows.c
           util/platform-windows.c
           util/threading-windows.c
@@ -40,6 +41,7 @@ target_sources(
           util/windows/window-helpers.h)
 
 target_compile_options(libobs PRIVATE $<$<COMPILE_LANGUAGE:C,CXX>:/EHc->)
+
 set_source_files_properties(obs-win-crash-handler.c PROPERTIES COMPILE_DEFINITIONS
                                                                OBS_VERSION="${OBS_VERSION_CANONICAL}")