فهرست منبع

cmake: Fix headers installation

- Headers are now installed per default on Linux.
- `obs-hevc.h` is not installed if HEVC is disabled.
- OS exclusive headers are no longer installed on the wrong OS.
tytan652 3 سال پیش
والد
کامیت
ed486b00e1

+ 0 - 22
cmake/Modules/ObsHelpers.cmake

@@ -295,28 +295,6 @@ function(export_target target)
     EXCLUDE_FROM_ALL)
 endfunction()
 
-# Helper function to install header files
-function(install_headers target)
-  install(
-    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
-    DESTINATION ${OBS_INCLUDE_DESTINATION}
-    COMPONENT obs_libraries
-    EXCLUDE_FROM_ALL FILES_MATCHING
-    PATTERN "*.h"
-    PATTERN "*.hpp"
-    PATTERN "cmake" EXCLUDE
-    PATTERN "pkgconfig" EXCLUDE
-    PATTERN "data" EXCLUDE)
-
-  if(NOT EXISTS "${OBS_INCLUDE_DESTINATION}/obsconfig.h")
-    install(
-      FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
-      DESTINATION "${OBS_INCLUDE_DESTINATION}"
-      COMPONENT obs_libraries
-      EXCLUDE_FROM_ALL)
-  endif()
-endfunction()
-
 # Helper function to define available graphics modules for targets
 function(define_graphic_modules target)
   foreach(_GRAPHICS_API metal d3d11 opengl d3d9)

+ 41 - 0
cmake/Modules/ObsHelpers_Linux.cmake

@@ -61,3 +61,44 @@ function(export_target_pkgconf target)
   install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.pc"
           DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
 endfunction()
+
+# Helper function to install header files
+function(install_headers target)
+  install(
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
+    DESTINATION ${OBS_INCLUDE_DESTINATION}
+    COMPONENT obs_libraries
+    FILES_MATCHING
+    PATTERN "*.h"
+    PATTERN "*.hpp"
+    PATTERN "obs-hevc.h" EXCLUDE
+    PATTERN "*-windows.h" EXCLUDE
+    PATTERN "audio-monitoring" EXCLUDE
+    PATTERN "util/apple" EXCLUDE
+    PATTERN "util/windows" EXCLUDE
+    PATTERN "cmake" EXCLUDE
+    PATTERN "pkgconfig" EXCLUDE
+    PATTERN "data" EXCLUDE)
+
+  if(ENABLE_PULSEAUDIO)
+    install(
+      FILES
+        "${CMAKE_CURRENT_SOURCE_DIR}/audio-monitoring/pulse/pulseaudio-wrapper.h"
+      DESTINATION "${OBS_INCLUDE_DESTINATION}/audio-monitoring/pulse/"
+      COMPONENT obs_libraries)
+  endif()
+
+  if(ENABLE_HEVC)
+    install(
+      FILES "${CMAKE_CURRENT_SOURCE_DIR}/obs-hevc.h"
+      DESTINATION "${OBS_INCLUDE_DESTINATION}"
+      COMPONENT obs_libraries)
+  endif()
+
+  if(NOT EXISTS "${OBS_INCLUDE_DESTINATION}/obsconfig.h")
+    install(
+      FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
+      DESTINATION "${OBS_INCLUDE_DESTINATION}"
+      COMPONENT obs_libraries)
+  endif()
+endfunction()

+ 37 - 0
cmake/Modules/ObsHelpers_Windows.cmake

@@ -417,3 +417,40 @@ function(generate_multiarch_installer)
     DESTINATION "."
     USE_SOURCE_PERMISSIONS)
 endfunction()
+
+# Helper function to install header files
+function(install_headers target)
+  install(
+    DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
+    DESTINATION ${OBS_INCLUDE_DESTINATION}
+    COMPONENT obs_libraries
+    EXCLUDE_FROM_ALL FILES_MATCHING
+    PATTERN "*.h"
+    PATTERN "*.hpp"
+    PATTERN "obs-hevc.h" EXCLUDE
+    PATTERN "obs-nix-*.h" EXCLUDE
+    PATTERN "*-posix.h" EXCLUDE
+    PATTERN "audio-monitoring/null" EXCLUDE
+    PATTERN "audio-monitoring/osx" EXCLUDE
+    PATTERN "audio-monitoring/pulse" EXCLUDE
+    PATTERN "util/apple" EXCLUDE
+    PATTERN "cmake" EXCLUDE
+    PATTERN "pkgconfig" EXCLUDE
+    PATTERN "data" EXCLUDE)
+
+  if(ENABLE_HEVC)
+    install(
+      FILES "${CMAKE_CURRENT_SOURCE_DIR}/obs-hevc.h"
+      DESTINATION "${OBS_INCLUDE_DESTINATION}"
+      COMPONENT obs_libraries
+      EXCLUDE_FROM_ALL)
+  endif()
+
+  if(NOT EXISTS "${OBS_INCLUDE_DESTINATION}/obsconfig.h")
+    install(
+      FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
+      DESTINATION "${OBS_INCLUDE_DESTINATION}"
+      COMPONENT obs_libraries
+      EXCLUDE_FROM_ALL)
+  endif()
+endfunction()

+ 17 - 0
cmake/Modules/ObsHelpers_macOS.cmake

@@ -480,10 +480,27 @@ function(install_headers target)
     EXCLUDE_FROM_ALL FILES_MATCHING
     PATTERN "*.h"
     PATTERN "*.hpp"
+    PATTERN "obs-hevc.h" EXCLUDE
+    PATTERN "*-windows.h" EXCLUDE
+    PATTERN "*-x11.h" EXCLUDE
+    PATTERN "*-wayland.h" EXCLUDE
+    PATTERN "audio-monitoring/null" EXCLUDE
+    PATTERN "audio-monitoring/win32" EXCLUDE
+    PATTERN "audio-monitoring/pulse" EXCLUDE
+    PATTERN "util/windows" EXCLUDE
     PATTERN "cmake" EXCLUDE
     PATTERN "pkgconfig" EXCLUDE
     PATTERN "data" EXCLUDE)
 
+  if(ENABLE_HEVC)
+    install(
+      FILES "${CMAKE_CURRENT_SOURCE_DIR}/obs-hevc.h"
+      DESTINATION
+        $<IF:$<BOOL:$<TARGET_PROPERTY:${target},FRAMEWORK>>,Frameworks/$<TARGET_FILE_BASE_NAME:${target}>.framework/Headers,${OBS_INCLUDE_DESTINATION}>
+      COMPONENT obs_libraries
+      EXCLUDE_FROM_ALL)
+  endif()
+
   install(
     FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
     DESTINATION