summaryrefslogtreecommitdiffstats
path: root/multimedia/v4l2camera/patches/002-03-CMake-Improvements-355.patch
blob: aa3a7884bfa1270371c848e42ce016d5d3bbd82b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
From c093fbfcf28541a9bdef46a4c430241c640a031a Mon Sep 17 00:00:00 2001
From: Edmunt Pienkowsky <roed@onet.eu>
Date: Tue, 8 Jul 2025 07:17:20 +0200
Subject: [PATCH] CMake Improvements (#355)

* CMake: Do not define CMAKE_BUILD_TYPE

It is absolutely right to leave CMAKE_BUILD_TYPE variable undefined.
In this case compilation flags are taken from CFLAGS and CXXFLAGS environment variables.

* CMake: Always define VERSION macro

* Allow to define VERSION macro by V4L2RTSPSERVER_VERSION environment variable.
* Warn if value of VERSION could not be determined.
* Use add_compile_definitions instead of add_definitions.

* CMake: Init submodules only if git command is available

* CMake: Use imported targets defined by find_package command

* CMake: Install systemd service conditionally

One may disable installation of systemd service by setting SYSTEND cache variable to OFF (ON by default).
---
 CMakeLists.txt | 54 ++++++++++++++++++++++++++++----------------------
 1 file changed, 30 insertions(+), 24 deletions(-)

--- a/v4l2rtspserver/CMakeLists.txt
+++ b/v4l2rtspserver/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.5)
+cmake_minimum_required(VERSION 3.12)
 
 project(v4l2rtspserver)
 
@@ -10,24 +10,26 @@ set(STATICSTDCPP ON CACHE BOOL "use gcc
 set(LOG4CPP OFF CACHE BOOL "use log4cpp if 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 -DNO_STD_LIB=1 CACHE STRING "live555 CFGLAGS")
-
-if(NOT CMAKE_BUILD_TYPE)
-     set (CMAKE_BUILD_TYPE "Release")
-endif()
+set(SYSTEMD ON CACHE BOOL "install SystemD service")
 
 set(CMAKE_CXX_STANDARD 20)
 
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake/")
 
-# set version based on git
 find_package(Git)
-if(GIT_FOUND)
+if(DEFINED ENV{V4L2RTSPSERVER_VERSION})
+    # set version from V4L2RTSPSERVER_VERSION env variable
+    add_compile_definitions("VERSION=\"$ENV{V4L2RTSPSERVER_VERSION}\"")
+elseif(GIT_FOUND)
+    # set version based on git
     EXECUTE_PROCESS(COMMAND ${GIT_EXECUTABLE} -C ${CMAKE_CURRENT_SOURCE_DIR} describe --tags --always --dirty OUTPUT_VARIABLE VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
     STRING(REGEX REPLACE "^v(.*)" "\\1" VERSION "${VERSION}")
-    add_definitions("-DVERSION=\"${VERSION}\"")
+    add_compile_definitions("VERSION=\"${VERSION}\"")
+else()
+    message(WARNING "VERSION is undefined")
+    add_compile_definitions("VERSION=\"undefined\"")
 endif()
 
-
 # define executable to build
 include_directories("inc")
 add_executable(${PROJECT_NAME} main.cpp)
@@ -89,7 +91,7 @@ target_compile_definitions(libv4l2rtspse
 target_link_libraries (${PROJECT_NAME} libv4l2rtspserver ${LIVE_LIBRARIES}) 
 set (LIBRARIES "")
 if (OpenSSL_FOUND)
-    set(LIBRARIES ${LIBRARIES} ${OPENSSL_LIBRARIES})
+    set(LIBRARIES ${LIBRARIES} OpenSSL::SSL)
 endif ()
 
 # LOG4CPP
@@ -109,15 +111,17 @@ if (ALSA)
     find_package(ALSA QUIET)
     MESSAGE("ALSA_FOUND = ${ALSA_FOUND}")
     if (ALSA_LIBRARY)
-	    target_compile_definitions(libv4l2rtspserver PUBLIC HAVE_ALSA)
-        set(LIBRARIES ${LIBRARIES} ${ALSA_LIBRARY})
-        
+        target_compile_definitions(libv4l2rtspserver PUBLIC HAVE_ALSA)
+        set(LIBRARIES ${LIBRARIES} ALSA::ALSA)
+
         SET(CPACK_DEBIAN_PACKAGE_DEPENDS ${CPACK_DEBIAN_PACKAGE_DEPENDS}libasound2,)	
     endif ()
 endif()
 
 # libv4l2cpp
-execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init)
+if (GIT_FOUND)
+    execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init)
+endif()
 add_subdirectory(libv4l2cpp EXCLUDE_FROM_ALL)
 target_include_directories(libv4l2rtspserver PUBLIC libv4l2cpp/inc)
 target_link_libraries (libv4l2rtspserver PUBLIC libv4l2cpp ${LIBRARIES}) 
@@ -140,17 +144,19 @@ enable_testing()
 add_test(help ./${PROJECT_NAME} -h)
 
 #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)
+if (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})
-endif (SYSTEMD_FOUND)
+    endif (SYSTEMD_FOUND)
+endif (SYSTEMD)
 
 # package
 install (TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)