1
0

ObsHelpers_Linux.cmake 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # Helper function to set up runtime or library targets
  2. function(setup_binary_target target)
  3. set_target_properties(
  4. ${target}
  5. PROPERTIES
  6. BUILD_RPATH
  7. "${OBS_OUTPUT_DIR}/$<CONFIG>/${OBS_EXECUTABLE_DESTINATION}$<$<BOOL:LINUX_PORTABLE>:/${_ARCH_SUFFIX}bit>"
  8. )
  9. _setup_binary_target(${target})
  10. endfunction()
  11. # Helper function to export target to build and install tree Allows usage of
  12. # `find_package(libobs)` by other build trees
  13. function(export_target target)
  14. _export_target(${ARGV})
  15. if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig")
  16. export_target_pkgconf(${target})
  17. endif()
  18. endfunction()
  19. # Helper function to build pkgconfig file for target
  20. function(export_target_pkgconf target)
  21. get_target_property(_TARGET_DEPENDENCIES ${target} INTERFACE_LINK_LIBRARIES)
  22. get_target_property(_TARGET_DEFINITIONS ${target}
  23. INTERFACE_COMPILE_DEFINITIONS)
  24. get_target_property(_TARGET_OPTIONS ${target} INTERFACE_COMPILE_OPTIONS)
  25. foreach(_LIBRARY IN LISTS _TARGET_DEPENDENCIES)
  26. get_target_property(_LINK_LIBRARY ${_LIBRARY} INTERFACE_LINK_LIBRARIES)
  27. get_target_property(_LINK_DEFINITIONS ${_LIBRARY}
  28. INTERFACE_COMPILE_DEFINITIONS)
  29. get_target_property(_LINK_OPTIONS ${_LIBRARY} INTERFACE_COMPILE_OPTIONS)
  30. if(NOT "${_LINK_LIBRARY}" STREQUAL "_LINK_LIBRARY-NOTFOUND")
  31. list(APPEND _LINKED_LIBRARIES "${_LINK_LIBRARY}")
  32. endif()
  33. if(NOT "${_LINK_DEFINITIONS}" STREQUAL "_LINK_DEFINITIONS-NOTFOUND")
  34. list(APPEND _LINKED_DEFINITIONS "${_LINK_DEFINITIONS}")
  35. endif()
  36. if(NOT "${_LINK_OPTIONS}" STREQUAL "_LINK_OPTIONS-NOTFOUND")
  37. list(APPEND _LINKED_OPTIONS "${_LINK_OPTIONS}")
  38. endif()
  39. endforeach()
  40. string(REPLACE ";" " " _LINKED_LIBRARIES "${_LINKED_LIBRARIES}")
  41. string(REPLACE ";" " " _LINKED_DEFINITIONS "${_LINKED_DEFINITIONS}")
  42. string(REPLACE ";" " " _LINKED_OPTIONS "${_LINKED_OPTIONS}")
  43. if(NOT "${_TARGET_DEFINITIONS}" STREQUAL "_TARGET_DEFINITIONS-NOTFOUND")
  44. list(JOIN _TARGET_DEFINITIONS "-D" _TARGET_DEFINITIONS)
  45. set(_TARGET_DEFINITIONS "-D${_TARGET_DEFINITIONS}")
  46. else()
  47. set(_TARGET_DEFINITIONS "")
  48. endif()
  49. if(NOT "${_TARGET_OPTIONS}" STREQUAL "_TARGET_OPTIONS-NOTFOUND")
  50. list(JOIN _TARGET_OPTIONS " " _TARGET_OPTIONS)
  51. else()
  52. set(_TARGET_OPTIONS "")
  53. endif()
  54. configure_file("${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/${target}.pc.in"
  55. "${target}.pc" @ONLY)
  56. install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${target}.pc"
  57. DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
  58. endfunction()
  59. # Helper function to install header files
  60. function(install_headers target)
  61. install(
  62. DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/"
  63. DESTINATION ${OBS_INCLUDE_DESTINATION}
  64. COMPONENT obs_libraries
  65. FILES_MATCHING
  66. PATTERN "*.h"
  67. PATTERN "*.hpp"
  68. PATTERN "obs-hevc.h" EXCLUDE
  69. PATTERN "*-windows.h" EXCLUDE
  70. PATTERN "audio-monitoring" EXCLUDE
  71. PATTERN "util/apple" EXCLUDE
  72. PATTERN "util/windows" EXCLUDE
  73. PATTERN "cmake" EXCLUDE
  74. PATTERN "pkgconfig" EXCLUDE
  75. PATTERN "data" EXCLUDE)
  76. if(ENABLE_PULSEAUDIO)
  77. install(
  78. FILES
  79. "${CMAKE_CURRENT_SOURCE_DIR}/audio-monitoring/pulse/pulseaudio-wrapper.h"
  80. DESTINATION "${OBS_INCLUDE_DESTINATION}/audio-monitoring/pulse/"
  81. COMPONENT obs_libraries)
  82. endif()
  83. if(ENABLE_HEVC)
  84. install(
  85. FILES "${CMAKE_CURRENT_SOURCE_DIR}/obs-hevc.h"
  86. DESTINATION "${OBS_INCLUDE_DESTINATION}"
  87. COMPONENT obs_libraries)
  88. endif()
  89. if(NOT EXISTS "${OBS_INCLUDE_DESTINATION}/obsconfig.h")
  90. install(
  91. FILES "${CMAKE_BINARY_DIR}/config/obsconfig.h"
  92. DESTINATION "${OBS_INCLUDE_DESTINATION}"
  93. COMPONENT obs_libraries)
  94. endif()
  95. endfunction()