1- cmake_minimum_required (VERSION 3.5 )
1+ cmake_minimum_required (VERSION 3.12 )
22
33project (v4l2rtspserver)
44
@@ -10,24 +10,26 @@ set(STATICSTDCPP ON CACHE BOOL "use gcc static lib if available")
1010set (LOG4CPP OFF CACHE BOOL "use log4cpp if available" )
1111set (LIVE555URL http://www.live555.com/liveMedia/public/live555-latest.tar.gz CACHE STRING "live555 url" )
1212set (LIVE555CFLAGS -DBSD=1 -DSOCKLEN_T=socklen_t -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE=1 -DALLOW_RTSP_SERVER_PORT_REUSE=1 -DNO_STD_LIB=1 CACHE STRING "live555 CFGLAGS" )
13-
14- if (NOT CMAKE_BUILD_TYPE )
15- set (CMAKE_BUILD_TYPE "Release" )
16- endif ()
13+ set (SYSTEMD ON CACHE BOOL "install SystemD service" )
1714
1815set (CMAKE_CXX_STANDARD 20)
1916
2017list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /CMake/" )
2118
22- # set version based on git
2319find_package (Git )
24- if (GIT_FOUND)
20+ if (DEFINED ENV{V4L2RTSPSERVER_VERSION})
21+ # set version from V4L2RTSPSERVER_VERSION env variable
22+ add_compile_definitions ("VERSION=\" $ENV{V4L2RTSPSERVER_VERSION} \" " )
23+ elseif (GIT_FOUND)
24+ # set version based on git
2525 EXECUTE_PROCESS (COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} describe --tags --always --dirty OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE )
2626 STRING (REGEX REPLACE "^v(.*)" "\\ 1" VERSION "${VERSION} " )
27- add_definitions ("-DVERSION=\" ${VERSION} \" " )
27+ add_compile_definitions ("VERSION=\" ${VERSION} \" " )
28+ else ()
29+ message (WARNING "VERSION is undefined" )
30+ add_compile_definitions ("VERSION=\" undefined\" " )
2831endif ()
2932
30-
3133# define executable to build
3234include_directories ("inc" )
3335add_executable (${PROJECT_NAME} main.cpp )
@@ -84,7 +86,7 @@ target_compile_definitions(libv4l2rtspserver PUBLIC ${LIVE555CFLAGS})
8486target_link_libraries (${PROJECT_NAME} libv4l2rtspserver ${LIVE_LIBRARIES} )
8587set (LIBRARIES "" )
8688if (OpenSSL_FOUND)
87- set (LIBRARIES ${LIBRARIES} ${OPENSSL_LIBRARIES} )
89+ set (LIBRARIES ${LIBRARIES} OpenSSL::SSL )
8890endif ()
8991
9092#pthread
@@ -108,15 +110,17 @@ if (ALSA)
108110 find_package (ALSA QUIET )
109111 MESSAGE ("ALSA_FOUND = ${ALSA_FOUND} " )
110112 if (ALSA_LIBRARY)
111- target_compile_definitions (libv4l2rtspserver PUBLIC HAVE_ALSA )
112- set (LIBRARIES ${LIBRARIES} ${ALSA_LIBRARY} )
113-
113+ target_compile_definitions (libv4l2rtspserver PUBLIC HAVE_ALSA )
114+ set (LIBRARIES ${LIBRARIES} ALSA::ALSA )
115+
114116 SET (CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS} libasound2,)
115117 endif ()
116118endif ()
117119
118120# libv4l2cpp
119- execute_process (COMMAND ${GIT_EXECUTABLE} submodule update --init )
121+ if (GIT_FOUND)
122+ execute_process (COMMAND ${GIT_EXECUTABLE} submodule update --init )
123+ endif ()
120124add_subdirectory (libv4l2cpp EXCLUDE_FROM_ALL )
121125target_include_directories (libv4l2rtspserver PUBLIC libv4l2cpp/inc )
122126target_link_libraries (libv4l2rtspserver PUBLIC libv4l2cpp ${LIBRARIES} )
@@ -139,17 +143,19 @@ enable_testing()
139143add_test (help ./${PROJECT_NAME} -h )
140144
141145#systemd
142- find_package (PkgConfig )
143- pkg_check_modules (SYSTEMD systemd QUIET )
144- if (SYSTEMD_FOUND)
145- message (STATUS "SystemD available" )
146- execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SERVICES_INSTALL_DIR )
147- string (REGEX REPLACE "[ \t\n ]+" "" SYSTEMD_SERVICES_INSTALL_DIR "${SYSTEMD_SERVICES_INSTALL_DIR} " )
148- message (STATUS "SystemD directory '${SYSTEMD_SERVICES_INSTALL_DIR} '" )
149-
150- configure_file (v4l2rtspserver.service.in ${CMAKE_CURRENT_BINARY_DIR} /v4l2rtspserver.service @ONLY )
146+ if (SYSTEMD)
147+ find_package (PkgConfig )
148+ pkg_check_modules (SYSTEMD systemd QUIET )
149+ if (SYSTEMD_FOUND)
150+ message (STATUS "SystemD available" )
151+ execute_process (COMMAND ${PKG_CONFIG_EXECUTABLE} --variable=systemdsystemunitdir systemd OUTPUT_VARIABLE SYSTEMD_SERVICES_INSTALL_DIR )
152+ string (REGEX REPLACE "[ \t\n ]+" "" SYSTEMD_SERVICES_INSTALL_DIR "${SYSTEMD_SERVICES_INSTALL_DIR} " )
153+ message (STATUS "SystemD directory '${SYSTEMD_SERVICES_INSTALL_DIR} '" )
154+
155+ configure_file (v4l2rtspserver.service.in ${CMAKE_CURRENT_BINARY_DIR} /v4l2rtspserver.service @ONLY )
151156 install (FILES ${CMAKE_CURRENT_BINARY_DIR} /v4l2rtspserver.service DESTINATION ${SYSTEMD_SERVICES_INSTALL_DIR} )
152- endif (SYSTEMD_FOUND )
157+ endif (SYSTEMD_FOUND )
158+ endif (SYSTEMD )
153159
154160# package
155161install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
0 commit comments