v4l2rtspserver/CMakeLists.txt

123 lines
4.5 KiB
CMake
Raw Normal View History

2018-02-17 15:46:02 +00:00
cmake_minimum_required(VERSION 3.0)
2014-08-15 19:11:03 +00:00
# set project name from current directory
2014-08-15 20:33:40 +00:00
get_filename_component(BASENAME ${CMAKE_SOURCE_DIR} NAME)
project(${BASENAME})
2014-08-15 19:11:03 +00:00
2016-01-30 11:43:46 +00:00
option(COVERAGE "Coverage" OFF)
2019-03-02 13:03:06 +00:00
set(ALSA ON CACHE BOOL "use ALSA is available")
set(LIVE555URL http://www.live555.com/liveMedia/public/live555-latest.tar.gz CACHE STRING "live555 url")
set(LIVE555CFLAGS -DBSD=1 -DSOCKLEN_T=socklen_t -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -DALLOW_RTSP_SERVER_PORT_REUSE=1 CACHE STRING "live555 CFGLAGS")
set(CMAKE_CXX_STANDARD 11)
2014-09-05 19:33:27 +00:00
set(CMAKE_C_FLAGS "-Wall")
2018-09-22 18:56:46 +00:00
set(CMAKE_CXX_FLAGS "-Wall")
2014-09-05 19:33:27 +00:00
2018-01-27 17:24:47 +00:00
# set version based on git
2017-04-23 14:40:07 +00:00
find_package(Git)
if(GIT_FOUND)
EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} describe --tags --always --dirty OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
2017-12-16 17:12:44 +00:00
STRING(REGEX REPLACE "^v(.*)" "\\1" VERSION "${VERSION}")
2017-04-23 14:40:07 +00:00
add_definitions("-DVERSION=\"${VERSION}\"")
endif()
2016-01-30 11:43:46 +00:00
2014-08-15 19:11:03 +00:00
# define executable to build
2015-10-11 17:11:44 +00:00
include_directories("inc")
2014-08-15 19:11:03 +00:00
aux_source_directory(src SRC_FILES)
add_executable(${PROJECT_NAME} ${SRC_FILES})
2016-01-30 11:43:46 +00:00
if (COVERAGE)
set(COVERAGE_FLAGS "-g -O0 -fprofile-arcs -ftest-coverage")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COVERAGE_FLAGS}")
2017-05-25 16:26:23 +00:00
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COVERAGE_FLAGS}")
2016-01-30 11:43:46 +00:00
target_link_libraries(${PROJECT_NAME} gcov)
endif()
message(STATUS "CMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}")
2018-01-27 17:24:47 +00:00
message(STATUS "CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
message(STATUS "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}")
#pthread
find_package (Threads)
target_link_libraries (${PROJECT_NAME} ${CMAKE_THREAD_LIBS_INIT})
2016-06-19 17:15:51 +00:00
#ALSA
2019-03-02 13:03:06 +00:00
if (ALSA)
2017-05-25 16:26:23 +00:00
find_package(ALSA QUIET)
if (ALSA_LIBRARY)
message(STATUS "Alsa available")
add_definitions(-DHAVE_ALSA)
2017-05-25 16:26:23 +00:00
target_link_libraries (${PROJECT_NAME} ${ALSA_LIBRARY})
2018-01-20 18:16:31 +00:00
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2-dev,)
2017-05-25 16:26:23 +00:00
endif (ALSA_LIBRARY)
2019-03-02 13:03:06 +00:00
endif()
2016-06-19 17:15:51 +00:00
2014-11-22 14:35:59 +00:00
# LOG4CPP
2019-03-02 14:05:06 +00:00
find_package(log4cpp QUIET)
2019-03-02 14:11:48 +00:00
if (LOG4CPP_LIBRARY)
2017-12-09 16:18:36 +00:00
message(STATUS "Log4Cpp available")
add_definitions(-DHAVE_LOG4CPP)
2017-12-09 16:18:36 +00:00
target_link_libraries(${PROJECT_NAME} "${LOG4CPP_LIBRARY}")
2018-01-20 18:16:31 +00:00
SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}liblog4cpp5-dev,)
2017-12-09 16:18:36 +00:00
endif (LOG4CPP_INCLUDE_DIR)
2014-11-22 14:35:59 +00:00
# v4l2wrapper
2019-03-02 13:55:58 +00:00
EXEC_PROGRAM("git submodule update --init")
aux_source_directory(v4l2wrapper/src LIBSRC_FILES)
include_directories("v4l2wrapper/inc")
2019-03-02 13:55:58 +00:00
add_library(v4l2wrapper STATIC ${LIBSRC_FILES})
target_link_libraries (${PROJECT_NAME} v4l2wrapper)
2014-11-22 14:35:59 +00:00
2014-08-15 19:11:03 +00:00
# live555
2019-03-02 13:03:06 +00:00
if (NOT EXISTS live)
file (DOWNLOAD ${LIVE555URL} ${CMAKE_SOURCE_DIR}/live555-latest.tar.gz )
2019-03-02 14:05:06 +00:00
EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -E tar xf live555-latest.tar.gz RESULT_VARIABLE unpack_result)
2019-03-02 13:03:06 +00:00
if(NOT unpack_result STREQUAL "0")
message(FATAL_ERROR "Fetching and compiling live555 failed!")
endif()
endif(NOT EXISTS live)
FILE(GLOB LIVESOURCE live/groupsock/*.c* live/liveMedia/*.c* live/UsageEnvironment/*.c* live/BasicUsageEnvironment/*.c*)
add_definitions(${LIVE555CFLAGS})
add_library (live555 STATIC ${LIVESOURCE})
target_include_directories(live555 PUBLIC live/groupsock/include live/liveMedia/include live/UsageEnvironment/include live/BasicUsageEnvironment/include)
target_link_libraries (${PROJECT_NAME} live555)
2014-08-15 19:11:03 +00:00
2016-01-30 11:43:46 +00:00
#testing
enable_testing()
add_test(help ./${PROJECT_NAME} -h)
2018-01-20 19:45:26 +00:00
#systemd
find_package(PkgConfig)
pkg_check_modules(SYSTEMD systemd QUIET)
if (SYSTEMD_FOUND)
message(STATUS "SystemD available")
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SERVICES_INSTALL_DIR)
string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SERVICES_INSTALL_DIR "${SYSTEMD_SERVICES_INSTALL_DIR}")
message(STATUS "SystemD directory '${SYSTEMD_SERVICES_INSTALL_DIR}'")
configure_file(v4l2rtspserver.service.in ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/v4l2rtspserver.service DESTINATION ${SYSTEMD_SERVICES_INSTALL_DIR})
2018-01-20 19:45:26 +00:00
endif (SYSTEMD_FOUND)
2014-08-15 20:33:40 +00:00
# package
install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
install (FILES index.html DESTINATION share/${PROJECT_NAME}/)
2018-12-08 15:14:30 +00:00
install (FILES hls.js/dist/hls.light.min.js DESTINATION share/${PROJECT_NAME}/hls.js/dist/)
2014-08-15 22:27:47 +00:00
2018-02-04 18:16:40 +00:00
SET(CPACK_GENERATOR "DEB")
2014-08-15 20:33:40 +00:00
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Michel Promonet")
SET(CPACK_PACKAGE_CONTACT "michel.promonet@free.fr")
2015-11-21 18:03:31 +00:00
SET(CPACK_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR})
2018-01-20 18:23:20 +00:00
STRING(REGEX REPLACE ",$" "" CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}")
SET(CPACK_PACKAGING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX})
2017-04-23 14:40:07 +00:00
if(VERSION)
2015-10-17 12:45:34 +00:00
SET(CPACK_PACKAGE_VERSION "${VERSION}")
endif()
2014-08-15 20:33:40 +00:00
INCLUDE(CPack)