cmake_minimum_required(VERSION 3.10) # Configure project include(cmake/ParseVersion.cmake) project(librtp VERSION ${LIBRTP_VERSION} LANGUAGES C CXX) message(STATUS "RTP library version: ${LIBRTP_VERSION}") set(PROJECT_DESCRIPTION "Real-time Transport Protocol") set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 11) if(WIN32) set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE) endif() include(GNUInstallDirs) # Options option(LIBRTP_BUILD_TESTING "Build testing" OFF) option(LIBRTP_BUILD_DOCS "Build documentation" OFF) option(LIBRTP_BUILD_EXAMPLES "Build examples" OFF) # Build library add_subdirectory(include) add_subdirectory(source) add_library(rtp ${RTP_SOURCES}) set_target_properties(rtp PROPERTIES SOVERSION ${LIBRTP_VERSION_MAJOR} VERSION ${LIBRTP_VERSION} PUBLIC_HEADER "${RTP_HEADERS}") target_include_directories(rtp PUBLIC $ $) if(CMAKE_COMPILER_IS_GNUCXX) target_compile_options(rtp PRIVATE -Wall -Wextra -Wpedantic -Wmissing-prototypes) endif() install( TARGETS rtp EXPORT RtpTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/rtp) # Build tests (-DLIBRTP_BUILD_TESTING=ON) if(LIBRTP_BUILD_TESTING AND BUILD_TESTING) enable_testing() add_subdirectory(test) endif() # Build examples (-DLIBRTP_BUILD_EXAMPLES=ON) if(LIBRTP_BUILD_EXAMPLES) find_package(PulseAudio) if(PulseAudio_FOUND) add_subdirectory(examples) else() message(STATUS "PulseAudio not found - skipping examples") endif() endif() # Build documentation (-DLIBRTP_BUILD_DOCS=ON) if(LIBRTP_BUILD_DOCS) find_package(Doxygen) if(DOXYGEN_FOUND) configure_file( ${CMAKE_SOURCE_DIR}/cmake/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) add_custom_target(docs ALL COMMAND ${DOXYGEN_EXECUTABLE} Doxyfile WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} COMMENT "Generating documentation" VERBATIM) else() message(STATUS "Doxygen not found - skipping docs") endif() endif() # Install CMake configuration export file. include(CMakePackageConfigHelpers) set(LIBRTP_CMAKE_DESTINATION share/librtp) set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) configure_package_config_file( cmake/RtpConfig.cmake.in RtpConfig.cmake INSTALL_DESTINATION ${LIBRTP_CMAKE_DESTINATION} PATH_VARS INCLUDE_INSTALL_DIR INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) write_basic_package_version_file( ${CMAKE_CURRENT_BINARY_DIR}/RtpConfigVersion.cmake VERSION ${LIBRTP_VERSION} COMPATIBILITY SameMajorVersion) install( FILES ${CMAKE_BINARY_DIR}/RtpConfig.cmake ${CMAKE_BINARY_DIR}/RtpConfigVersion.cmake DESTINATION ${LIBRTP_CMAKE_DESTINATION}) install(EXPORT RtpTargets NAMESPACE rtp:: DESTINATION ${LIBRTP_CMAKE_DESTINATION})