CMakeLists.txt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. cmake_minimum_required(VERSION 3.28...3.30)
  2. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG TRUE)
  3. find_package(MbedTLS REQUIRED)
  4. set(CMAKE_FIND_PACKAGE_PREFER_CONFIG FALSE)
  5. find_package(ZLIB REQUIRED)
  6. if(NOT TARGET happy-eyeballs)
  7. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/happy-eyeballs" "${CMAKE_BINARY_DIR}/shared/happy-eyeballs")
  8. endif()
  9. if(NOT TARGET OBS::opts-parser)
  10. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/opts-parser" "${CMAKE_BINARY_DIR}/shared/opts-parser")
  11. endif()
  12. if(NOT TARGET OBS::bpm)
  13. add_subdirectory("${CMAKE_SOURCE_DIR}/shared/bpm" bpm)
  14. endif()
  15. add_library(obs-outputs MODULE)
  16. add_library(OBS::outputs ALIAS obs-outputs)
  17. target_sources(
  18. obs-outputs
  19. PRIVATE
  20. $<$<BOOL:${ENABLE_HEVC}>:rtmp-hevc.c>
  21. $<$<BOOL:${ENABLE_HEVC}>:rtmp-hevc.h>
  22. flv-mux.c
  23. flv-mux.h
  24. flv-output.c
  25. librtmp/amf.c
  26. librtmp/amf.h
  27. librtmp/bytes.h
  28. librtmp/cencode.c
  29. librtmp/cencode.h
  30. librtmp/handshake.h
  31. librtmp/hashswf.c
  32. librtmp/http.h
  33. librtmp/log.c
  34. librtmp/log.h
  35. librtmp/md5.c
  36. librtmp/md5.h
  37. librtmp/parseurl.c
  38. librtmp/rtmp.c
  39. librtmp/rtmp.h
  40. librtmp/rtmp_sys.h
  41. mp4-mux-internal.h
  42. mp4-mux.c
  43. mp4-mux.h
  44. mp4-output.c
  45. net-if.c
  46. net-if.h
  47. null-output.c
  48. obs-output-ver.h
  49. obs-outputs.c
  50. rtmp-av1.c
  51. rtmp-av1.h
  52. rtmp-helpers.h
  53. rtmp-stream.c
  54. rtmp-stream.h
  55. rtmp-windows.c
  56. utils.h
  57. )
  58. target_compile_definitions(obs-outputs PRIVATE USE_MBEDTLS CRYPTO)
  59. target_compile_options(
  60. obs-outputs
  61. PRIVATE
  62. $<$<COMPILE_LANG_AND_ID:C,AppleClang,Clang>:-Wno-comma>
  63. $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<COMPILE_LANG_AND_ID:C,Clang>>:-Wno-error=unreachable-code>
  64. )
  65. target_link_libraries(
  66. obs-outputs
  67. PRIVATE
  68. OBS::libobs
  69. OBS::happy-eyeballs
  70. OBS::opts-parser
  71. OBS::bpm
  72. MbedTLS::mbedtls
  73. ZLIB::ZLIB
  74. $<$<PLATFORM_ID:Windows>:OBS::w32-pthreads>
  75. $<$<PLATFORM_ID:Windows>:crypt32>
  76. $<$<PLATFORM_ID:Windows>:iphlpapi>
  77. $<$<PLATFORM_ID:Windows>:winmm>
  78. $<$<PLATFORM_ID:Windows>:ws2_32>
  79. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Foundation.framework>>"
  80. "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,Security.framework>>"
  81. )
  82. # Remove once jansson has been fixed on obs-deps
  83. target_link_options(
  84. obs-outputs
  85. PRIVATE $<$<PLATFORM_ID:Windows>:/IGNORE:4098> $<$<AND:$<PLATFORM_ID:Windows>,$<CONFIG:DEBUG>>:/NODEFAULTLIB:MSVCRT>
  86. )
  87. if(OS_WINDOWS)
  88. configure_file(cmake/windows/obs-module.rc.in obs-outputs.rc)
  89. target_sources(obs-outputs PRIVATE obs-outputs.rc)
  90. endif()
  91. set_target_properties_obs(obs-outputs PROPERTIES FOLDER plugins/obs-outputs PREFIX "")