Release 2.3.0
[profile/ivi/dlt-daemon.git] / CMakeLists.txt
1 #######\r
2 # Dlt - Diagnostic Log and Trace\r
3 # @licence make begin@\r
4  #\r
5  # Copyright (C) 2011, BMW AG - Alexander Wenzel <alexander.wenzel@bmw.de>\r
6  # \r
7  # This program is free software; you can redistribute it and/or modify it under the terms of the \r
8  # GNU Lesser General Public License, version 2.1, as published by the Free Software Foundation.\r
9  # This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even \r
10  # the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General \r
11  # Public License, version 2.1, for more details.\r
12  # \r
13  # You should have received a copy of the GNU Lesser General Public License, version 2.1, along \r
14  # with this program; if not, see <http://www.gnu.org/licenses/lgpl-2.1.html>.\r
15  # \r
16  # Note that the copyright holders assume that the GNU Lesser General Public License, version 2.1, may \r
17  # also be applicable to programs even in cases in which the program is not a library in the technical sense.\r
18  # \r
19  # Linking DLT statically or dynamically with other modules is making a combined work based on DLT. You may \r
20  # license such other modules under the GNU Lesser General Public License, version 2.1. If you do not want to \r
21  # license your linked modules under the GNU Lesser General Public License, version 2.1, you \r
22  # may use the program under the following exception.\r
23  # \r
24  # As a special exception, the copyright holders of DLT give you permission to combine DLT \r
25  # with software programs or libraries that are released under any license unless such a combination is not\r
26  # permitted by the license of such a software program or library. You may copy and distribute such a \r
27  # system following the terms of the GNU Lesser General Public License, version 2.1, including this\r
28  # special exception, for DLT and the licenses of the other code concerned.\r
29  # \r
30  # Note that people who make modified versions of DLT are not obligated to grant this special exception \r
31  # for their modified versions; it is their choice whether to do so. The GNU Lesser General Public License, \r
32  # version 2.1, gives permission to release a modified version without this exception; this exception \r
33  # also makes it possible to release a modified version which carries forward this exception.\r
34  #\r
35  # @licence end@\r
36 ########\r
37 \r
38 CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )\r
39 MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)\r
40 \r
41 SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )\r
42 \r
43 PROJECT( automotive-dlt )\r
44 \r
45 # Set version parameters\r
46 SET( ${PROJECT_NAME}_MAJOR_VERSION 2 )\r
47 SET( ${PROJECT_NAME}_MINOR_VERSION 3 )\r
48 SET( ${PROJECT_NAME}_PATCH_LEVEL 0 )\r
49 SET( ${PROJECT_NAME}_VERSION_STATE  )\r
50 SET( GENIVI_PROJECT_VERSION ${${PROJECT_NAME}_MAJOR_VERSION}.${${PROJECT_NAME}_MINOR_VERSION}.${${PROJECT_NAME}_PATCH_LEVEL})\r
51 \r
52 SET( PRINT_MAJOR_VERSION ${${PROJECT_NAME}_MAJOR_VERSION})\r
53 SET( PRINT_MINOR_VERSION ${${PROJECT_NAME}_MINOR_VERSION})\r
54 SET( PRINT_PATCH_LEVEL ${${PROJECT_NAME}_PATCH_LEVEL})\r
55 SET( PRINT_VERSION ${GENIVI_PROJECT_VERSION})\r
56 SET( PRINT_VERSION_STATE ${${PROJECT_NAME}_VERSION_STATE})\r
57 \r
58 IF(NOT DEFINED PRINT_REVISION)\r
59         execute_process(COMMAND git describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} \r
60         OUTPUT_VARIABLE PRINT_REVISION \r
61         OUTPUT_STRIP_TRAILING_WHITESPACE)\r
62 ENDIF(NOT DEFINED PRINT_REVISION)\r
63 \r
64 ##################### RPM CONFIG ########################\r
65 SET( GENIVI_RPM_RELEASE "1${IDLT_VERSION}")\r
66 SET( LICENSE "LGPL v2.1 with special exception" )\r
67 SET( SPEC_DIR "package")\r
68 \r
69 #########################################################\r
70 SET(GENIVI_BUILDSYSTEM_AVAILABLE $ENV{GENIVI_BUILDSYSTEM})\r
71 IF(GENIVI_BUILDSYSTEM_AVAILABLE)\r
72         INCLUDE($ENV{GENIVI_BUILDSYSTEM}/cmake_extensions/GeniviCMakeExtensions.cmake)\r
73 ENDIF(GENIVI_BUILDSYSTEM_AVAILABLE)\r
74 \r
75 \r
76 ###################### GPROF Settings ###################\r
77 # Adds compile flag for gprof to target\r
78 # Run the binary\r
79 # Output: gmon.out in build directory\r
80 # Run: gprof <path/to/binary> > profile.output\r
81 SET( GPROF_DLT_DAEMON OFF )\r
82 SET( GPROF_DLT_LIB OFF )\r
83 SET( GPROF_DLT_EXAMPLES OFF) \r
84 SET( GPROF_DLT_TESTS OFF) \r
85 SET( GPROF_DLT_CONSOLE OFF)\r
86 SET( GPROF_DLT_ADAPTOR OFF)\r
87 \r
88 ###################### systemd Settings #################\r
89 SET( DLT_SYSLOG_APPID "SYS" )\r
90 SET( DLT_SYSLOG_CTID "LOG" )\r
91 SET( DLT_SYSLOG_PORT 4712 )\r
92 \r
93 SET( prefix ${CMAKE_INSTALL_PREFIX})\r
94 SET( libdir "\${exec_prefix}/lib" )\r
95 SET( includedir "\${exec_prefix}/include" )\r
96 \r
97 SET( DLTBINDIR ${CMAKE_INSTALL_PREFIX}/bin )\r
98 SET( DLTLIBDIR ${CMAKE_INSTALL_PREFIX}/lib )\r
99 SET( DLTLIBSTATIC ${CMAKE_INSTALL_PREFIX}/lib )\r
100 SET( DLTINCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include )\r
101 SET( DLTDOCDIR ${CMAKE_INSTALL_PREFIX}/doc ) \r
102 \r
103 IF(NOT CMAKE_BUILD_TYPE)\r
104         SET(CMAKE_BUILD_TYPE RelWithDebInfo)\r
105 ENDIF(NOT CMAKE_BUILD_TYPE)\r
106 \r
107 FIND_PACKAGE(Doxygen)\r
108 FIND_PACKAGE(Threads REQUIRED)\r
109 \r
110 INCLUDE_DIRECTORIES( \r
111 ${CMAKE_SOURCE_DIR}/\r
112 ${CMAKE_SOURCE_DIR}/include/dlt\r
113 ${CMAKE_SOURCE_DIR}/src/shared/ \r
114 ${CMAKE_SOURCE_DIR}/src/lib/\r
115 ${CMAKE_SOURCE_DIR}/src/daemon/ )\r
116 \r
117 ADD_DEFINITIONS( "-Wall" )\r
118 \r
119 INCLUDE(TestBigEndian)\r
120 \r
121 TEST_BIG_ENDIAN( DLT_BIGENDIAN )\r
122 \r
123 IF ( DLT_BIGENDIAN )\r
124         ADD_DEFINITIONS( -DBYTE_ORDER=BIG_ENDIAN )\r
125 ELSE ( DLT_BIGENDIAN )\r
126         ADD_DEFINITIONS( -DBYTE_ORDER=LITTLE_ENDIAN )\r
127 ENDIF ( DLT_BIGENDIAN )\r
128 \r
129 INCLUDE(CheckIncludeFiles)  \r
130 \r
131 CHECK_INCLUDE_FILES( arpa/inet.h HAVE_ARPAINET_H)\r
132 CHECK_INCLUDE_FILES( fcntl.h HAVE_FCNTL_H)\r
133 CHECK_INCLUDE_FILES( float.h HAVE_FLOAT_H)\r
134 CHECK_INCLUDE_FILES( limits.h HAVE_LIMITS_H)\r
135 CHECK_INCLUDE_FILES( netdb.h HAVE_NETDB_H)\r
136 CHECK_INCLUDE_FILES( netinet/in.h HAVE_NETINETIN_H)\r
137 CHECK_INCLUDE_FILES( stddef.h HAVE_STDDEF_H)\r
138 CHECK_INCLUDE_FILES( stdint.h HAVE_STDINT_H)\r
139 CHECK_INCLUDE_FILES( stdlib.h HAVE_STDLIB_H)\r
140 CHECK_INCLUDE_FILES( string.h HAVE_STRING_H)\r
141 CHECK_INCLUDE_FILES( strings.h HAVE_STRINGS_H)\r
142 CHECK_INCLUDE_FILES( sys/ioctl.h HAVE_SYSIOCTL_H)\r
143 CHECK_INCLUDE_FILES( sys/socket.h HAVE_SYSSOCKET_H)\r
144 CHECK_INCLUDE_FILES( sys/time.h HAVE_SYSTIME_H)\r
145 CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)\r
146 CHECK_INCLUDE_FILES( sys/ipc.h HAVE_SYSIPC_H)\r
147 CHECK_INCLUDE_FILES( netdb.h HAVE_NETDB_H)\r
148 CHECK_INCLUDE_FILES( ctype.h HAVE_CTYPE_H)\r
149 CHECK_INCLUDE_FILES( signal.h HAVE_SIGNAL_H)\r
150 CHECK_INCLUDE_FILES( syslog.h HAVE_SYSLOG_H)\r
151 CHECK_INCLUDE_FILES( sys/stat.h HAVE_SYSSTAT_H)\r
152 CHECK_INCLUDE_FILES( linux/stat.h HAVE_LINUXSTAT_H)\r
153 CHECK_INCLUDE_FILES( sys/uio.h HAVE_SYSUIO_H)\r
154 CHECK_INCLUDE_FILES( termios.h HAVE_TERMIOS_H)\r
155 CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)\r
156 \r
157 INCLUDE(CheckFunctionExists) \r
158 \r
159 CHECK_FUNCTION_EXISTS( bzero HAVE_FUNC_BZERO)\r
160 CHECK_FUNCTION_EXISTS( clock_gettime HAVE_FUNC_CLOCKGETTIME)\r
161 CHECK_FUNCTION_EXISTS( floor HAVE_FUNC_FLOOR)\r
162 CHECK_FUNCTION_EXISTS( fork HAVE_FUNC_FORK)\r
163 CHECK_FUNCTION_EXISTS( gethostbyname HAVE_FUNC_GETHOSTBYNAME)\r
164 CHECK_FUNCTION_EXISTS( gettimeofday HAVE_FUNC_GETTIMEBYDAY)\r
165 CHECK_FUNCTION_EXISTS( inet_ntoa HAVE_FUNC_INETNTOA)\r
166 CHECK_FUNCTION_EXISTS( malloc HAVE_FUNC_MALLOC)\r
167 CHECK_FUNCTION_EXISTS( memmove HAVE_FUNC_MEMMOVE)\r
168 CHECK_FUNCTION_EXISTS( memset HAVE_FUNC_MEMSET)\r
169 CHECK_FUNCTION_EXISTS( mkfifo HAVE_FUNC_MKFIFO)\r
170 CHECK_FUNCTION_EXISTS( select HAVE_FUNC_SELECT)\r
171 CHECK_FUNCTION_EXISTS( socket HAVE_FUNC_SOCKET)\r
172 CHECK_FUNCTION_EXISTS( strchr HAVE_FUNC_STRCHR)\r
173 CHECK_FUNCTION_EXISTS( strerror HAVE_FUNC_STRERROR)\r
174 CHECK_FUNCTION_EXISTS( strstr HAVE_FUNC_STRSTR)\r
175 CHECK_FUNCTION_EXISTS( strtol HAVE_FUNC_STRTOL)\r
176 \r
177 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_SOURCE_DIR}/config.h @ONLY)\r
178 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/dlt/dlt_version.h.cmake ${CMAKE_SOURCE_DIR}/include/dlt/dlt_version.h @ONLY)\r
179 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/doxygen.cfg.cmake ${CMAKE_SOURCE_DIR}/doxygen.cfg @ONLY)\r
180 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/automotive-dlt.pc.cmake ${CMAKE_SOURCE_DIR}/automotive-dlt.pc @ONLY)\r
181 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/systemd/dlt.service.cmake ${CMAKE_SOURCE_DIR}/systemd/dlt.service @ONLY)\r
182 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/systemd/dlt-syslog.service.cmake ${CMAKE_SOURCE_DIR}/systemd/dlt-syslog.service @ONLY)\r
183 #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/package/automotive-dlt.spec.cmake ${CMAKE_SOURCE_DIR}/package/automotive-dlt.spec ESCAPE_QUOTES)\r
184 \r
185 OPTION(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )\r
186 OPTION(ENABLE_BUILD_DOC "Set to ON to build Documentation" OFF)\r
187 \r
188 MESSAGE( STATUS )\r
189 MESSAGE( STATUS "-------------------------------------------------------------------------------" )\r
190 MESSAGE( STATUS "Build for Version ${PRINT_VERSION} build ${PRINT_REVISION}")\r
191 MESSAGE( STATUS "VERSION_STATE ${PRINT_VERSION_STATE}")\r
192 MESSAGE( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )\r
193 MESSAGE( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )\r
194 MESSAGE( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )\r
195 MESSAGE( STATUS "ENABLE_BUILD_DOC = ${ENABLE_BUILD_DOC}" )\r
196 MESSAGE( STATUS "Change a value with: cmake -D<Variable>=<Value>" )\r
197 MESSAGE( STATUS "-------------------------------------------------------------------------------" )\r
198 MESSAGE( STATUS )\r
199 \r
200 SET( BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}" CACHE BOOL "Set to OFF to build static libraries" FORCE )\r
201 SET( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Where to install ${PROJECT_NAME}" FORCE )\r
202 SET( CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING\r
203 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE )\r
204 #SET( ENABLE_BUILD_DOC "${ENABLE_BUILD_DOC}" CACHE BOOL "Set to ON to build Documentation" FORCE )\r
205 \r
206 ADD_SUBDIRECTORY( src )\r
207 ADD_SUBDIRECTORY( include )\r
208 ADD_SUBDIRECTORY( testscripts )\r
209 \r
210 IF (ENABLE_BUILD_DOC)\r
211         ADD_SUBDIRECTORY( doc )\r
212 \r
213         ADD_CUSTOM_COMMAND(\r
214                 OUTPUT ${CMAKE_SOURCE_DIR}/doxygen-execute\r
215                 DEPENDS  ${CMAKE_SOURCE_DIR}/doxygen.cfg\r
216                 COMMAND doxygen\r
217                 ARGS ${CMAKE_SOURCE_DIR}/doxygen.cfg\r
218         )\r
219 \r
220         ADD_CUSTOM_TARGET(doxygen-doc ALL DEPENDS ${CMAKE_SOURCE_DIR}/doxygen-execute)\r
221 \r
222         SET( DOC_COMPONENT doc)\r
223 ENDIF(ENABLE_BUILD_DOC)\r
224 \r
225 INSTALL(FILES automotive-dlt.pc\r
226         DESTINATION lib/pkgconfig \r
227         COMPONENT devel)\r
228 INSTALL(FILES LICENSE.txt\r
229         DESTINATION doc/dlt2 \r
230         COMPONENT base)\r
231 \r
232 message(STATUS "python ${CMAKE_CURRENT_SOURCE_DIR}/transform_spec_file.py ${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec.cheetah ${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec BUILD_DOC=${ENABLE_BUILD_DOC}")\r
233 \r
234 add_custom_command(OUTPUT "${CMAKE_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec"\r
235   COMMAND "python" "${CMAKE_CURRENT_SOURCE_DIR}/transform_spec_file.py" "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec.cheetah" "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec" "BUILD_DOC=${ENABLE_BUILD_DOC}"\r
236   DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_PROJECT_NAME}.spec.cheetah")\r
237 \r
238 add_custom_target(specfile \r
239   DEPENDS "${CMAKE_PROJECT_NAME}.spec")\r
240 \r
241 CONFIGURE_FILE(\r
242   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"\r
243 \r
244   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"\r
245   IMMEDIATE @ONLY)\r
246 \r
247 #ADD_CUSTOM_TARGET(uninstall\r
248 #  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")\r
249 \r
250 EXPORT_LIBRARY_DEPENDENCIES( "${PROJECT_NAME}LibDeps.cmake" )\r
251 \r
252 \r
253 ################ CPack configuration #################\r
254 SET(CPACK_GENERATOR "DEB;RPM;TGZ")\r
255 SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Alexander Wenzel")\r
256 SET(CPACK_PACKAGE_DESCRIPTION_SUMMARY "automotive-dlt")\r
257 SET(CPACK_PACKAGE_DESCRIPTION "This component provides a standardised log and trace interface, based on the\r
258 standardised protocol specified in the AUTOSAR standard 4.0 DLT. \r
259 This component can be used by GENIVI components and other applications as \r
260 logging facility providing\r
261 - the DLT shared library\r
262 - the DLT daemon, including startup scripts\r
263 - the DLT daemon adaptors\r
264 - the DLT client console utilities\r
265 - the DLT test applications ")\r
266 SET(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")\r
267 SET(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README")\r
268 SET(CPACK_PACKAGE_VERSION_MAJOR ${PRINT_MAJOR_VERSION})\r
269 SET(CPACK_PACKAGE_VERSION_MINOR ${PRINT_MINOR_VERSION})\r
270 SET(CPACK_PACKAGE_VERSION_PATCH ${PRINT_PATCH_LEVEL})\r
271 \r
272 INCLUDE(CPack)\r