uvgrtp-base/CMakeLists.txt

138 lines
3.9 KiB
CMake

cmake_minimum_required(VERSION 3.5)
project(uvgrtp)
option(DISABLE_CRYPTO "Do not build uvgRTP with crypto enabled")
option(PTHREADS_PATH "Path to POSIX threads static library")
option(CRYPTOPP_PATH "Path to Crypto++ static library")
add_library(uvgrtp STATIC
src/clock.cc
src/crypto.cc
src/dispatch.cc
src/frame.cc
src/hostname.cc
src/lib.cc
src/media_stream.cc
src/mingw_inet.cc
src/multicast.cc
src/pkt_dispatch.cc
src/poll.cc
src/queue.cc
src/random.cc
src/rtcp.cc
src/rtp.cc
src/runner.cc
src/session.cc
src/socket.cc
src/zrtp.cc
src/holepuncher.cc
src/formats/media.cc
src/formats/h26x.cc
src/formats/h264.cc
src/formats/h264_pkt_handler.cc
src/formats/h265.cc
src/formats/h265_pkt_handler.cc
src/formats/h266.cc
src/formats/h266_pkt_handler.cc
src/zrtp/zrtp_receiver.cc
src/zrtp/hello.cc
src/zrtp/hello_ack.cc
src/zrtp/commit.cc
src/zrtp/dh_kxchng.cc
src/zrtp/confirm.cc
src/zrtp/confack.cc
src/zrtp/error.cc
src/rtcp/app.cc
src/rtcp/sdes.cc
src/rtcp/bye.cc
src/rtcp/receiver.cc
src/rtcp/sender.cc
src/rtcp/rtcp_runner.cc
src/srtp/base.cc
src/srtp/srtp.cc
src/srtp/srtcp.cc
)
target_include_directories(uvgrtp
PUBLIC
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/formats
${PROJECT_SOURCE_DIR}/include/zrtp
${PROJECT_SOURCE_DIR}/include/rtcp
${PROJECT_SOURCE_DIR}/include/srtp
)
set(LIBRARY_PATHS "")
if (PTHREADS_PATH)
separate_arguments(LIBRARY_PATHS NATIVE_COMMAND ${PTHREADS_PATH})
endif (PTHREADS_PATH)
if (CRYPTOPP_PATH AND NOT DISABLE_CRYPTO)
separate_arguments(LIBRARY_PATHS NATIVE_COMMAND "${LIBRARY_PATHS} ${CRYPTOPP_PATH}")
endif (CRYPTOPP_PATH AND NOT DISABLE_CRYPTO)
if (UNIX)
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wuninitialized -Wshadow -O2 -g -std=c++17 -march=native -DNDEBUG")
if (DISABLE_CRYPTO)
string(APPEND CMAKE_CXX_FLAGS " -D__RTP_NO_CRYPTO__")
endif(DISABLE_CRYPTO)
# if (NOT "${LIBRARY_PATHS}" STREQUAL "")
# add_custom_command(TARGET uvgrtp POST_BUILD
# COMMAND ar crsT ARGS libuvgrtp_thin.a libuvgrtp.a ${LIBRARY_PATHS}
# BYPRODUCTS libuvgrtp_thin.a
# COMMENT "Creating combined archive"
# )
# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libuvgrtp_thin.a
# RENAME libuvgrtp.a
# DESTINATION /usr/local/lib
# )
# else (NOT "${LIBRARY_PATHS}" STREQUAL "")
install(TARGETS uvgrtp
ARCHIVE
DESTINATION /usr/local/lib
)
# endif (NOT "${LIBRARY_PATHS}" STREQUAL "")
install(DIRECTORY include/ DESTINATION /usr/local/include/uvgrtp
FILES_MATCHING PATTERN "*.hh"
)
endif (UNIX)
if (WIN32)
if(MSVC)
set(CMAKE_CXX_FLAGS "/O2 /std:c++17 /DNDEBUG")
else(MSVC)
set(CMAKE_CXX_FLAGS "-O2 -std=c++17 -DNDEBUG")
endif(MSVC)
SET(OUT_DIR ${CMAKE_BINARY_DIR}/Debug)
if (DISABLE_CRYPTO)
if(MSVC)
string(APPEND CMAKE_CXX_FLAGS " /D__RTP_NO_CRYPTO__")
else(MSVC)
string(APPEND CMAKE_CXX_FLAGS " -D__RTP_NO_CRYPTO__")
endif(MSVC)
endif(DISABLE_CRYPTO)
# if (NOT "${LIBRARY_PATHS}" STREQUAL "")
# add_custom_command(TARGET uvgrtp POST_BUILD
# COMMAND lib /out:${OUT_DIR}/uvgrtp.lib ${OUT_DIR}/uvgrtp.lib ${LIBRARY_PATHS}
# BYPRODUCTS uvgrtp.lib
# COMMENT "Creating combined archive"
# )
# else (NOT "${LIBRARY_PATHS}" STREQUAL "")
install(TARGETS uvgrtp
ARCHIVE
DESTINATION ${PROJECT_BINARY_DIR}/lib
)
# endif (NOT "${LIBRARY_PATHS}" STREQUAL "")
install(DIRECTORY include/ DESTINATION ${PROJECT_BINARY_DIR}/include
FILES_MATCHING PATTERN "*.hh"
)
endif (WIN32)