As of 3.17 using find_package_handle_standard_args checks that the name of the FindXXX file and the first argument are the same case. Some modules used non-standard variables or the old singular variables instead of plurals. This normalizes variable usage to the new-style. Some CMakeLists.txt did custom error checking instead of propagating find_package errors. These were changes to call find_package with REQUIRED or without QUIET where needed and shortens the custom status messages. This helps users who want to enable that functionality see what precisely wasnt found.
181 lines
4.2 KiB
CMake
181 lines
4.2 KiB
CMake
project(obs-outputs)
|
|
|
|
set(WITH_RTMPS AUTO CACHE STRING "Enable RTMPS support with mbedTLS")
|
|
set_property(CACHE WITH_RTMPS PROPERTY STRINGS AUTO ON OFF)
|
|
|
|
option(STATIC_MBEDTLS "Statically link mbedTLS into binary" OFF)
|
|
|
|
if (WITH_RTMPS STREQUAL "AUTO")
|
|
find_package(MbedTLS)
|
|
find_package(ZLIB)
|
|
if (NOT MBEDTLS_FOUND OR NOT ZLIB_FOUND)
|
|
set(WITH_RTMPS "OFF")
|
|
message(WARNING "mbedTLS or zlib was not found, RTMPS will be auto-disabled")
|
|
endif()
|
|
endif()
|
|
|
|
if (WITH_RTMPS)
|
|
find_package(MbedTLS REQUIRED)
|
|
find_package(ZLIB REQUIRED)
|
|
add_definitions(-DCRYPTO -DUSE_MBEDTLS)
|
|
include_directories(${MBEDTLS_INCLUDE_DIRS} ${ZLIB_INCLUDE_DIRS})
|
|
else()
|
|
add_definitions(-DNO_CRYPTO)
|
|
endif()
|
|
|
|
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ftl-sdk/CMakeLists.txt")
|
|
find_package(Libcurl REQUIRED)
|
|
message(STATUS "Found ftl-sdk: ftl outputs enabled")
|
|
|
|
add_definitions(-DFTL_STATIC_COMPILE)
|
|
|
|
include_directories(${LIBCURL_INCLUDE_DIRS})
|
|
|
|
set(ftl_SOURCES
|
|
ftl-stream.c
|
|
ftl-sdk/libftl/hmac/hmac.c
|
|
ftl-sdk/libftl/hmac/sha2.c
|
|
ftl-sdk/libftl/ftl-sdk.c
|
|
ftl-sdk/libftl/handshake.c
|
|
ftl-sdk/libftl/ingest.c
|
|
ftl-sdk/libftl/ftl_helpers.c
|
|
ftl-sdk/libftl/media.c
|
|
ftl-sdk/libftl/gettimeofday/gettimeofday.c
|
|
ftl-sdk/libftl/logging.c)
|
|
set(ftl_HEADERS
|
|
ftl-sdk/libftl/hmac/hmac.h
|
|
ftl-sdk/libftl/hmac/sha2.h
|
|
ftl-sdk/libftl/ftl.h
|
|
ftl-sdk/libftl/ftl_private.h)
|
|
set(ftl_IMPORTS
|
|
${OBS_JANSSON_IMPORT}
|
|
${LIBCURL_LIBRARIES})
|
|
|
|
if (WIN32)
|
|
list(APPEND ftl_SOURCES
|
|
ftl-sdk/libftl/win32/socket.c
|
|
ftl-sdk/libftl/gettimeofday/gettimeofday.c
|
|
ftl-sdk/libftl/win32/threads.c)
|
|
list(APPEND ftl_HEADERS
|
|
ftl-sdk/libftl/gettimeofday/gettimeofday.h
|
|
ftl-sdk/libftl/win32/threads.h)
|
|
|
|
include_directories(ftl-sdk/libftl/win32)
|
|
else()
|
|
list(APPEND ftl_SOURCES
|
|
ftl-sdk/libftl/posix/socket.c
|
|
ftl-sdk/libftl/posix/threads.c)
|
|
list(APPEND ftl_HEADERS
|
|
ftl-sdk/libftl/posix/threads.h)
|
|
|
|
include_directories(ftl-sdk/libftl/posix)
|
|
endif()
|
|
|
|
include_directories(ftl-sdk/libftl)
|
|
|
|
set(COMPILE_FTL TRUE)
|
|
else()
|
|
set(COMPILE_FTL FALSE)
|
|
endif()
|
|
|
|
configure_file(
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/obs-outputs-config.h.in"
|
|
"${CMAKE_BINARY_DIR}/plugins/obs-outputs/config/obs-outputs-config.h")
|
|
|
|
include_directories("${CMAKE_BINARY_DIR}/plugins/obs-outputs/config")
|
|
|
|
if(WIN32)
|
|
set(obs-outputs_PLATFORM_DEPS
|
|
ws2_32
|
|
winmm
|
|
Iphlpapi)
|
|
|
|
if (WITH_RTMPS OR (WITH_RTMPS STREQUAL "AUTO"))
|
|
SET(obs-outputs_PLATFORM_DEPS
|
|
${obs-outputs_PLATFORM_DEPS}
|
|
crypt32)
|
|
endif()
|
|
endif()
|
|
|
|
if(MSVC)
|
|
set(obs-outputs_PLATFORM_DEPS
|
|
${obs-outputs_PLATFORM_DEPS}
|
|
w32-pthreads)
|
|
endif()
|
|
|
|
if(APPLE AND (WITH_RTMPS OR (WITH_RTMPS STREQUAL "AUTO")))
|
|
find_library(FOUNDATION_FRAMEWORK Foundation)
|
|
find_library(SECURITY_FRAMEWORK Security)
|
|
|
|
set(obs-outputs_PLATFORM_DEPS
|
|
${obs-outputs_PLATFORM_DEPS}
|
|
${FOUNDATION_FRAMEWORK}
|
|
${SECURITY_FRAMEWORK})
|
|
endif()
|
|
|
|
set(obs-outputs_librtmp_HEADERS
|
|
librtmp/amf.h
|
|
librtmp/bytes.h
|
|
librtmp/cencode.h
|
|
librtmp/dh.h
|
|
librtmp/dhgroups.h
|
|
librtmp/handshake.h
|
|
librtmp/http.h
|
|
librtmp/log.h
|
|
librtmp/md5.h
|
|
librtmp/rtmp.h
|
|
librtmp/rtmp_sys.h)
|
|
set(obs-outputs_librtmp_SOURCES
|
|
librtmp/amf.c
|
|
librtmp/cencode.c
|
|
librtmp/hashswf.c
|
|
librtmp/log.c
|
|
librtmp/md5.c
|
|
librtmp/parseurl.c
|
|
librtmp/rtmp.c)
|
|
|
|
if(NOT WIN32)
|
|
set_source_files_properties(${obs-outputs_librtmp_SOURCES} PROPERTIES
|
|
COMPILE_FLAGS "-fvisibility=hidden")
|
|
endif()
|
|
|
|
set(obs-outputs_HEADERS
|
|
"${CMAKE_BINARY_DIR}/plugins/obs-outputs/config/obs-outputs-config.h"
|
|
obs-output-ver.h
|
|
rtmp-helpers.h
|
|
rtmp-stream.h
|
|
net-if.h
|
|
flv-mux.h)
|
|
set(obs-outputs_SOURCES
|
|
obs-outputs.c
|
|
null-output.c
|
|
rtmp-stream.c
|
|
rtmp-windows.c
|
|
flv-output.c
|
|
flv-mux.c
|
|
net-if.c)
|
|
|
|
if(WIN32)
|
|
set(MODULE_DESCRIPTION "OBS output module")
|
|
configure_file(${CMAKE_SOURCE_DIR}/cmake/winrc/obs-module.rc.in obs-outputs.rc)
|
|
list(APPEND obs-outputs_SOURCES
|
|
obs-outputs.rc)
|
|
endif()
|
|
|
|
add_library(obs-outputs MODULE
|
|
${ftl_SOURCES}
|
|
${ftl_HEADERS}
|
|
${obs-outputs_SOURCES}
|
|
${obs-outputs_HEADERS}
|
|
${obs-outputs_librtmp_SOURCES}
|
|
${obs-outputs_librtmp_HEADERS})
|
|
target_link_libraries(obs-outputs
|
|
libobs
|
|
${MBEDTLS_LIBRARIES}
|
|
${ZLIB_LIBRARIES}
|
|
${ftl_IMPORTS}
|
|
${obs-outputs_PLATFORM_DEPS})
|
|
set_target_properties(obs-outputs PROPERTIES FOLDER "plugins")
|
|
|
|
install_obs_plugin_with_data(obs-outputs data)
|