File: ObsHelpers_Linux.cmake

package info (click to toggle)
obs-studio 30.2.3%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 47,852 kB
  • sloc: ansic: 202,137; cpp: 112,402; makefile: 868; python: 599; sh: 275; javascript: 19
file content (104 lines) | stat: -rw-r--r-- 3,658 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# 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()