123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- # Helper function to set up runtime or library targets
- function(setup_binary_target target)
- set_target_properties(
- ${target}
- PROPERTIES
- BUILD_RPATH
- "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_EXECUTABLE_DESTINATION}$<$<BOOL:LINUX_PORTABLE>:/${_ARCH_SUFFIX}bit>"
- )
- _setup_binary_target(${target})
- endfunction()
- # Helper function to export target to build and install tree Allows usage of
- # `find_package(libobs)` by other build trees
- function(export_target target)
- _export_target(${ARGV})
- if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig")
- export_target_pkgconf(${target})
- endif()
- endfunction()
- # Helper function to build pkgconfig file for target
- function(export_target_pkgconf target)
- get_target_property(_TARGET_DEPENDENCIES ${target} INTERFACE_LINK_LIBRARIES)
- get_target_property(_TARGET_DEFINITIONS ${target}
- INTERFACE_COMPILE_DEFINITIONS)
- get_target_property(_TARGET_OPTIONS ${target} INTERFACE_COMPILE_OPTIONS)
- foreach(_LIBRARY IN LISTS _TARGET_DEPENDENCIES)
- get_target_property(_LINK_LIBRARY ${_LIBRARY} INTERFACE_LINK_LIBRARIES)
- get_target_property(_LINK_DEFINITIONS ${_LIBRARY}
- INTERFACE_COMPILE_DEFINITIONS)
- get_target_property(_LINK_OPTIONS ${_LIBRARY} INTERFACE_COMPILE_OPTIONS)
- if(NOT "${_LINK_LIBRARY}" STREQUAL "_LINK_LIBRARY-NOTFOUND")
- list(APPEND _LINKED_LIBRARIES "${_LINK_LIBRARY}")
- endif()
- if(NOT "${_LINK_DEFINITIONS}" STREQUAL "_LINK_DEFINITIONS-NOTFOUND")
- list(APPEND _LINKED_DEFINITIONS "${_LINK_DEFINITIONS}")
- endif()
- if(NOT "${_LINK_OPTIONS}" STREQUAL "_LINK_OPTIONS-NOTFOUND")
- list(APPEND _LINKED_OPTIONS "${_LINK_OPTIONS}")
- endif()
- endforeach()
- string(REPLACE ";" " " _LINKED_LIBRARIES "${_LINKED_LIBRARIES}")
- string(REPLACE ";" " " _LINKED_DEFINITIONS "${_LINKED_DEFINITIONS}")
- string(REPLACE ";" " " _LINKED_OPTIONS "${_LINKED_OPTIONS}")
- if(NOT "${_TARGET_DEFINITIONS}" STREQUAL "_TARGET_DEFINITIONS-NOTFOUND")
- list(JOIN _TARGET_DEFINITIONS "-D" _TARGET_DEFINITIONS)
- set(_TARGET_DEFINITIONS "-D${_TARGET_DEFINITIONS}")
- else()
- set(_TARGET_DEFINITIONS "")
- endif()
- if(NOT "${_TARGET_OPTIONS}" STREQUAL "_TARGET_OPTIONS-NOTFOUND")
- list(JOIN _TARGET_OPTIONS " " _TARGET_OPTIONS)
- else()
- set(_TARGET_OPTIONS "")
- endif()
- configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/${target}.pc.in"
- "${target}.pc" @ONLY)
- 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()
|