ObsHelpers_Linux.cmake 3.6 KB

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