CMakeLists.txt 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. project(obs-outputs)
  2. set(WITH_RTMPS AUTO CACHE STRING "Enable RTMPS support with mbedTLS")
  3. set_property(CACHE WITH_RTMPS PROPERTY STRINGS AUTO ON OFF)
  4. option(STATIC_MBEDTLS "Statically link mbedTLS into binary" OFF)
  5. if (WITH_RTMPS STREQUAL "AUTO")
  6. find_package(MbedTLS)
  7. find_package(ZLIB)
  8. if (NOT MBEDTLS_FOUND OR NOT ZLIB_FOUND)
  9. set(WITH_RTMPS "OFF")
  10. message(WARNING "mbedTLS or zlib was not found, RTMPS will be auto-disabled")
  11. endif()
  12. endif()
  13. if (WITH_RTMPS)
  14. find_package(MbedTLS REQUIRED)
  15. find_package(ZLIB REQUIRED)
  16. add_definitions(-DCRYPTO -DUSE_MBEDTLS)
  17. include_directories(${MBEDTLS_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS})
  18. else()
  19. add_definitions(-DNO_CRYPTO)
  20. endif()
  21. if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
  22. find_package(Libcurl REQUIRED)
  23. message(STATUS "Found ftl-sdk: ftl outputs enabled")
  24. add_definitions(-DFTL_STATIC_COMPILE)
  25. include_directories(${LIBCURL_INCLUDE_DIRS})
  26. set(ftl_SOURCES
  27. ftl-stream.c
  28. ftl-sdk/libftl/hmac/hmac.c
  29. ftl-sdk/libftl/hmac/sha2.c
  30. ftl-sdk/libftl/ftl-sdk.c
  31. ftl-sdk/libftl/handshake.c
  32. ftl-sdk/libftl/ingest.c
  33. ftl-sdk/libftl/ftl_helpers.c
  34. ftl-sdk/libftl/media.c
  35. ftl-sdk/libftl/gettimeofday/gettimeofday.c
  36. ftl-sdk/libftl/logging.c)
  37. set(ftl_HEADERS
  38. ftl-sdk/libftl/hmac/hmac.h
  39. ftl-sdk/libftl/hmac/sha2.h
  40. ftl-sdk/libftl/ftl.h
  41. ftl-sdk/libftl/ftl_private.h)
  42. set(ftl_IMPORTS
  43. ${OBS_JANSSON_IMPORT}
  44. ${LIBCURL_LIBRARIES})
  45. if (WIN32)
  46. list(APPEND ftl_SOURCES
  47. ftl-sdk/libftl/win32/socket.c
  48. ftl-sdk/libftl/gettimeofday/gettimeofday.c
  49. ftl-sdk/libftl/win32/threads.c)
  50. list(APPEND ftl_HEADERS
  51. ftl-sdk/libftl/gettimeofday/gettimeofday.h
  52. ftl-sdk/libftl/win32/threads.h)
  53. include_directories(ftl-sdk/libftl/win32)
  54. else()
  55. list(APPEND ftl_SOURCES
  56. ftl-sdk/libftl/posix/socket.c
  57. ftl-sdk/libftl/posix/threads.c)
  58. list(APPEND ftl_HEADERS
  59. ftl-sdk/libftl/posix/threads.h)
  60. include_directories(ftl-sdk/libftl/posix)
  61. endif()
  62. include_directories(ftl-sdk/libftl)
  63. set(COMPILE_FTL TRUE)
  64. else()
  65. set(COMPILE_FTL FALSE)
  66. endif()
  67. configure_file(
  68. "${CMAKE_CURRENT_SOURCE_DIR}/obs-outputs-config.h.in"
  69. "${CMAKE_BINARY_DIR}/plugins/obs-outputs/config/obs-outputs-config.h")
  70. include_directories("${CMAKE_BINARY_DIR}/plugins/obs-outputs/config")
  71. if(WIN32)
  72. set(obs-outputs_PLATFORM_DEPS
  73. ws2_32
  74. winmm
  75. Iphlpapi)
  76. if (WITH_RTMPS OR (WITH_RTMPS STREQUAL "AUTO"))
  77. SET(obs-outputs_PLATFORM_DEPS
  78. ${obs-outputs_PLATFORM_DEPS}
  79. crypt32)
  80. endif()
  81. endif()
  82. if(MSVC)
  83. set(obs-outputs_PLATFORM_DEPS
  84. ${obs-outputs_PLATFORM_DEPS}
  85. w32-pthreads)
  86. endif()
  87. if(APPLE AND (WITH_RTMPS OR (WITH_RTMPS STREQUAL "AUTO")))
  88. find_library(FOUNDATION_FRAMEWORK Foundation)
  89. find_library(SECURITY_FRAMEWORK Security)
  90. set(obs-outputs_PLATFORM_DEPS
  91. ${obs-outputs_PLATFORM_DEPS}
  92. ${FOUNDATION_FRAMEWORK}
  93. ${SECURITY_FRAMEWORK})
  94. endif()
  95. set(obs-outputs_librtmp_HEADERS
  96. librtmp/amf.h
  97. librtmp/bytes.h
  98. librtmp/cencode.h
  99. librtmp/dh.h
  100. librtmp/dhgroups.h
  101. librtmp/handshake.h
  102. librtmp/http.h
  103. librtmp/log.h
  104. librtmp/md5.h
  105. librtmp/rtmp.h
  106. librtmp/rtmp_sys.h)
  107. set(obs-outputs_librtmp_SOURCES
  108. librtmp/amf.c
  109. librtmp/cencode.c
  110. librtmp/hashswf.c
  111. librtmp/log.c
  112. librtmp/md5.c
  113. librtmp/parseurl.c
  114. librtmp/rtmp.c)
  115. if(NOT WIN32)
  116. set_source_files_properties(${obs-outputs_librtmp_SOURCES} PROPERTIES
  117. COMPILE_FLAGS "-fvisibility=hidden")
  118. endif()
  119. set(obs-outputs_HEADERS
  120. "${CMAKE_BINARY_DIR}/plugins/obs-outputs/config/obs-outputs-config.h"
  121. obs-output-ver.h
  122. rtmp-helpers.h
  123. rtmp-stream.h
  124. net-if.h
  125. flv-mux.h)
  126. set(obs-outputs_SOURCES
  127. obs-outputs.c
  128. null-output.c
  129. rtmp-stream.c
  130. rtmp-windows.c
  131. flv-output.c
  132. flv-mux.c
  133. net-if.c)
  134. if(WIN32)
  135. set(MODULE_DESCRIPTION "OBS output module")
  136. configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-outputs.rc)
  137. list(APPEND obs-outputs_SOURCES
  138. obs-outputs.rc)
  139. endif()
  140. add_library(obs-outputs MODULE
  141. ${ftl_SOURCES}
  142. ${ftl_HEADERS}
  143. ${obs-outputs_SOURCES}
  144. ${obs-outputs_HEADERS}
  145. ${obs-outputs_librtmp_SOURCES}
  146. ${obs-outputs_librtmp_HEADERS})
  147. target_link_libraries(obs-outputs
  148. libobs
  149. ${MBEDTLS_LIBRARIES}
  150. ${ZLIB_LIBRARIES}
  151. ${ftl_IMPORTS}
  152. ${obs-outputs_PLATFORM_DEPS})
  153. set_target_properties(obs-outputs PROPERTIES FOLDER "plugins")
  154. install_obs_plugin_with_data(obs-outputs data)