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.
master
tytan652 2022-05-06 14:56:51 +02:00 committed by Jim
parent 7ed5415a2b
commit ed486b00e1
4 changed files with 95 additions and 22 deletions

View File

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

View File

@ -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()

View File

@ -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()

View File

@ -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