ftl.cmake 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. find_package(CURL REQUIRED)
  2. find_package(jansson REQUIRED)
  3. add_library(ftl-sdk INTERFACE)
  4. add_library(OBS::ftl-sdk ALIAS ftl-sdk)
  5. target_compile_definitions(ftl-sdk INTERFACE FTL_STATIC_COMPILE FTL_FOUND)
  6. target_link_libraries(ftl-sdk INTERFACE jansson::jansson CURL::libcurl)
  7. target_sources(
  8. ftl-sdk
  9. INTERFACE ftl-stream.c
  10. ftl-sdk/libftl/ftl.h
  11. ftl-sdk/libftl/ftl_private.h
  12. ftl-sdk/libftl/hmac/hmac.c
  13. ftl-sdk/libftl/hmac/hmac.h
  14. ftl-sdk/libftl/hmac/sha2.c
  15. ftl-sdk/libftl/hmac/sha2.h
  16. ftl-sdk/libftl/ftl-sdk.c
  17. ftl-sdk/libftl/handshake.c
  18. ftl-sdk/libftl/ingest.c
  19. ftl-sdk/libftl/ftl_helpers.c
  20. ftl-sdk/libftl/media.c
  21. ftl-sdk/libftl/gettimeofday/gettimeofday.c
  22. ftl-sdk/libftl/logging.c)
  23. target_include_directories(ftl-sdk INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/libftl")
  24. if(OS_WINDOWS)
  25. target_sources(
  26. ftl-sdk INTERFACE ftl-sdk/libftl/gettimeofday/gettimeofday.c ftl-sdk/libftl/gettimeofday/gettimeofday.h
  27. ftl-sdk/libftl/win32/socket.c ftl-sdk/libftl/win32/threads.c ftl-sdk/libftl/win32/threads.h)
  28. target_include_directories(ftl-sdk INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/libftl/win32")
  29. else()
  30. target_sources(ftl-sdk INTERFACE ftl-sdk/libftl/posix/socket.c ftl-sdk/libftl/posix/threads.c
  31. ftl-sdk/libftl/posix/threads.h)
  32. target_include_directories(ftl-sdk INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/libftl/posix")
  33. endif()
  34. target_link_libraries(obs-outputs PRIVATE ftl-sdk)
  35. target_enable_feature(obs-outputs "FTL protocol support")
  36. get_target_property(target_sources ftl-sdk INTERFACE_SOURCES)
  37. list(
  38. APPEND
  39. silence_ftl
  40. -Wno-error=unused-parameter
  41. -Wno-error=unused-variable
  42. -Wno-error=sign-compare
  43. -Wno-error=pointer-sign
  44. -Wno-error=int-conversion)
  45. if(CMAKE_C_COMPILER_ID STREQUAL AppleClang OR CMAKE_C_COMPILER_ID STREQUAL Clang)
  46. list(APPEND silence_ftl -Wno-error=incompatible-function-pointer-types -Wno-error=implicit-int-conversion
  47. -Wno-error=shorten-64-to-32 -Wno-error=macro-redefined)
  48. elseif(CMAKE_C_COMPILER_ID STREQUAL GNU)
  49. list(APPEND silence_ftl -Wno-error=extra -Wno-error=incompatible-pointer-types -Wno-error=int-conversion
  50. -Wno-error=builtin-macro-redefined)
  51. endif()
  52. if((NOT CMAKE_C_COMPILER_ID STREQUAL GNU) OR CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 10)
  53. list(APPEND silence_ftl -Wno-error=enum-conversion)
  54. endif()
  55. set_source_files_properties(${target_sources} PROPERTIES COMPILE_OPTIONS "${silence_ftl}")
  56. set(target_headers ${target_sources})
  57. list(FILTER target_sources INCLUDE REGEX ".+ftl-sdk/.+\\.(m|c[cp]?p?|swift)")
  58. list(FILTER target_headers INCLUDE REGEX ".+ftl-sdk/.+\\.h(pp)?")
  59. source_group("ftl-sdk\\Source Files" FILES ${target_sources})
  60. source_group("ftl-sdk\\Header Files" FILES ${target_headers})