1f222aeb1bd251033477b38a44f944b9db126ca8
[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 4 )\r
48 SET( ${PROJECT_NAME}_PATCH_LEVEL 2 )\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 SET( DLT_REVISION "")\r
58 \r
59 EXECUTE_PROCESS(COMMAND git describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} \r
60         OUTPUT_VARIABLE DLT_REVISION\r
61         ERROR_VARIABLE GIT_ERROR \r
62         OUTPUT_STRIP_TRAILING_WHITESPACE\r
63         ERROR_STRIP_TRAILING_WHITESPACE)\r
64 IF( DLT_REVISION MATCHES "^$")\r
65         SET( PRINT_REVISION "Git revision unavailable")\r
66 ELSE( DLT_REVISION MATCHES "")\r
67         STRING(REPLACE "-" "_" DLT_REVISION ${DLT_REVISION})\r
68         SET( PRINT_REVISION ${DLT_REVISION})    \r
69 ENDIF( DLT_REVISION MATCHES "^$")\r
70 \r
71 ##################### RPM SPEC CONFIG ########################\r
72 SET( GENIVI_RPM_RELEASE "1${DLT_REVISION}")\r
73 SET( LICENSE "LGPL v2.1 with special exception" )\r
74 \r
75 #########################################################\r
76 SET(GENIVI_BUILDSYSTEM_AVAILABLE $ENV{GENIVI_BUILDSYSTEM})\r
77 IF(GENIVI_BUILDSYSTEM_AVAILABLE)\r
78         INCLUDE($ENV{GENIVI_BUILDSYSTEM}/cmake_extensions/GeniviCMakeExtensions.cmake)\r
79 ENDIF(GENIVI_BUILDSYSTEM_AVAILABLE)\r
80 \r
81 \r
82 ###################### GPROF Settings ###################\r
83 # Adds compile flag for gprof to target\r
84 # Run the binary\r
85 # Output: gmon.out in build directory\r
86 # Run: gprof <path/to/binary> > profile.output\r
87 SET( GPROF_DLT_DAEMON OFF )\r
88 SET( GPROF_DLT_LIB OFF )\r
89 SET( GPROF_DLT_EXAMPLES OFF) \r
90 SET( GPROF_DLT_TESTS OFF) \r
91 SET( GPROF_DLT_CONSOLE OFF)\r
92 SET( GPROF_DLT_ADAPTOR OFF)\r
93 \r
94 ###################### systemd Settings #################\r
95 SET( DLT_SYSLOG_APPID "SYS" )\r
96 SET( DLT_SYSLOG_CTID "LOG" )\r
97 SET( DLT_SYSLOG_PORT 4712 )\r
98 \r
99 SET( prefix ${CMAKE_INSTALL_PREFIX})\r
100 SET( libdir "\${exec_prefix}/lib" )\r
101 SET( includedir "\${exec_prefix}/include" )\r
102 \r
103 SET( DLTBINDIR ${CMAKE_INSTALL_PREFIX}/bin )\r
104 SET( DLTLIBDIR ${CMAKE_INSTALL_PREFIX}/lib )\r
105 SET( DLTLIBSTATIC ${CMAKE_INSTALL_PREFIX}/lib )\r
106 SET( DLTINCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include )\r
107 SET( DLTDOCDIR ${CMAKE_INSTALL_PREFIX}/doc ) \r
108 \r
109 IF(NOT CMAKE_BUILD_TYPE)\r
110         SET(CMAKE_BUILD_TYPE RelWithDebInfo)\r
111 ENDIF(NOT CMAKE_BUILD_TYPE)\r
112 \r
113 FIND_PACKAGE(Doxygen)\r
114 FIND_PACKAGE(Threads REQUIRED)\r
115 \r
116 INCLUDE_DIRECTORIES( \r
117 ${CMAKE_SOURCE_DIR}/\r
118 ${CMAKE_SOURCE_DIR}/include/dlt\r
119 ${CMAKE_SOURCE_DIR}/src/shared/ \r
120 ${CMAKE_SOURCE_DIR}/src/lib/\r
121 ${CMAKE_SOURCE_DIR}/src/daemon/ )\r
122 \r
123 ADD_DEFINITIONS( "-Wall" )\r
124 \r
125 ###################### IPC settings #################\r
126 # Disable following definition, if old Fifo version\r
127 # should be used\r
128 # ADD_DEFINITIONS( -DDLT_SHM_ENABLE=1 )\r
129 \r
130 INCLUDE(TestBigEndian)\r
131 \r
132 TEST_BIG_ENDIAN( DLT_BIGENDIAN )\r
133 \r
134 IF ( DLT_BIGENDIAN )\r
135         ADD_DEFINITIONS( -DBYTE_ORDER=BIG_ENDIAN )\r
136 ELSE ( DLT_BIGENDIAN )\r
137         ADD_DEFINITIONS( -DBYTE_ORDER=LITTLE_ENDIAN )\r
138 ENDIF ( DLT_BIGENDIAN )\r
139 \r
140 INCLUDE(CheckIncludeFiles)  \r
141 \r
142 CHECK_INCLUDE_FILES( arpa/inet.h HAVE_ARPAINET_H)\r
143 CHECK_INCLUDE_FILES( fcntl.h HAVE_FCNTL_H)\r
144 CHECK_INCLUDE_FILES( float.h HAVE_FLOAT_H)\r
145 CHECK_INCLUDE_FILES( limits.h HAVE_LIMITS_H)\r
146 CHECK_INCLUDE_FILES( netdb.h HAVE_NETDB_H)\r
147 CHECK_INCLUDE_FILES( netinet/in.h HAVE_NETINETIN_H)\r
148 CHECK_INCLUDE_FILES( stddef.h HAVE_STDDEF_H)\r
149 CHECK_INCLUDE_FILES( stdint.h HAVE_STDINT_H)\r
150 CHECK_INCLUDE_FILES( stdlib.h HAVE_STDLIB_H)\r
151 CHECK_INCLUDE_FILES( string.h HAVE_STRING_H)\r
152 CHECK_INCLUDE_FILES( strings.h HAVE_STRINGS_H)\r
153 CHECK_INCLUDE_FILES( sys/ioctl.h HAVE_SYSIOCTL_H)\r
154 CHECK_INCLUDE_FILES( sys/socket.h HAVE_SYSSOCKET_H)\r
155 CHECK_INCLUDE_FILES( sys/time.h HAVE_SYSTIME_H)\r
156 CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)\r
157 CHECK_INCLUDE_FILES( sys/ipc.h HAVE_SYSIPC_H)\r
158 CHECK_INCLUDE_FILES( netdb.h HAVE_NETDB_H)\r
159 CHECK_INCLUDE_FILES( ctype.h HAVE_CTYPE_H)\r
160 CHECK_INCLUDE_FILES( signal.h HAVE_SIGNAL_H)\r
161 CHECK_INCLUDE_FILES( syslog.h HAVE_SYSLOG_H)\r
162 CHECK_INCLUDE_FILES( sys/stat.h HAVE_SYSSTAT_H)\r
163 CHECK_INCLUDE_FILES( linux/stat.h HAVE_LINUXSTAT_H)\r
164 CHECK_INCLUDE_FILES( sys/uio.h HAVE_SYSUIO_H)\r
165 CHECK_INCLUDE_FILES( termios.h HAVE_TERMIOS_H)\r
166 CHECK_INCLUDE_FILES( unistd.h HAVE_UNISTD_H)\r
167 \r
168 INCLUDE(CheckFunctionExists) \r
169 \r
170 CHECK_FUNCTION_EXISTS( bzero HAVE_FUNC_BZERO)\r
171 CHECK_FUNCTION_EXISTS( clock_gettime HAVE_FUNC_CLOCKGETTIME)\r
172 CHECK_FUNCTION_EXISTS( floor HAVE_FUNC_FLOOR)\r
173 CHECK_FUNCTION_EXISTS( fork HAVE_FUNC_FORK)\r
174 CHECK_FUNCTION_EXISTS( gethostbyname HAVE_FUNC_GETHOSTBYNAME)\r
175 CHECK_FUNCTION_EXISTS( gettimeofday HAVE_FUNC_GETTIMEBYDAY)\r
176 CHECK_FUNCTION_EXISTS( inet_ntoa HAVE_FUNC_INETNTOA)\r
177 CHECK_FUNCTION_EXISTS( malloc HAVE_FUNC_MALLOC)\r
178 CHECK_FUNCTION_EXISTS( memmove HAVE_FUNC_MEMMOVE)\r
179 CHECK_FUNCTION_EXISTS( memset HAVE_FUNC_MEMSET)\r
180 CHECK_FUNCTION_EXISTS( mkfifo HAVE_FUNC_MKFIFO)\r
181 CHECK_FUNCTION_EXISTS( select HAVE_FUNC_SELECT)\r
182 CHECK_FUNCTION_EXISTS( socket HAVE_FUNC_SOCKET)\r
183 CHECK_FUNCTION_EXISTS( strchr HAVE_FUNC_STRCHR)\r
184 CHECK_FUNCTION_EXISTS( strerror HAVE_FUNC_STRERROR)\r
185 CHECK_FUNCTION_EXISTS( strstr HAVE_FUNC_STRSTR)\r
186 CHECK_FUNCTION_EXISTS( strtol HAVE_FUNC_STRTOL)\r
187 \r
188 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.cmake ${CMAKE_SOURCE_DIR}/config.h @ONLY)\r
189 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/include/dlt/dlt_version.h.cmake ${CMAKE_SOURCE_DIR}/include/dlt/dlt_version.h @ONLY)\r
190 CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/automotive-dlt.pc.cmake ${CMAKE_SOURCE_DIR}/automotive-dlt.pc @ONLY)\r
191 #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/systemd/dlt.service.cmake ${CMAKE_SOURCE_DIR}/systemd/dlt.service @ONLY)\r
192 #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/systemd/dlt-syslog.service.cmake ${CMAKE_SOURCE_DIR}/systemd/dlt-syslog.service @ONLY)\r
193 #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/testscripts/Meego/dlt-daemon.cmake ${CMAKE_SOURCE_DIR}/testscripts/Meego/dlt-daemon @ONLY)\r
194 #CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/testscripts/Ubuntu/dlt-daemon.cmake ${CMAKE_SOURCE_DIR}/testscripts/Ubuntu/dlt-daemon @ONLY)\r
195 \r
196 \r
197 OPTION(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON )\r
198 OPTION(ENABLE_BUILD_DOC "Set to ON to build Documentation" OFF)\r
199 \r
200 MESSAGE( STATUS )\r
201 MESSAGE( STATUS "-------------------------------------------------------------------------------" )\r
202 MESSAGE( STATUS "Build for Version ${PRINT_VERSION} build ${PRINT_REVISION}")\r
203 MESSAGE( STATUS "VERSION_STATE ${PRINT_VERSION_STATE}")\r
204 MESSAGE( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )\r
205 MESSAGE( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )\r
206 MESSAGE( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )\r
207 MESSAGE( STATUS "ENABLE_BUILD_DOC = ${ENABLE_BUILD_DOC}" )\r
208 MESSAGE( STATUS "Change a value with: cmake -D<Variable>=<Value>" )\r
209 MESSAGE( STATUS "-------------------------------------------------------------------------------" )\r
210 MESSAGE( STATUS )\r
211 \r
212 SET( BUILD_SHARED_LIBS "${BUILD_SHARED_LIBS}" CACHE BOOL "Set to OFF to build static libraries" FORCE )\r
213 SET( CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" CACHE PATH "Where to install ${PROJECT_NAME}" FORCE )\r
214 SET( CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}" CACHE STRING\r
215 "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel." FORCE )\r
216 #SET( ENABLE_BUILD_DOC "${ENABLE_BUILD_DOC}" CACHE BOOL "Set to ON to build Documentation" FORCE )\r
217 \r
218 ADD_SUBDIRECTORY( src )\r
219 ADD_SUBDIRECTORY( include )\r
220 ADD_SUBDIRECTORY( testscripts )\r
221 \r
222 IF (ENABLE_BUILD_DOC)\r
223         ADD_SUBDIRECTORY( doc )\r
224 ENDIF(ENABLE_BUILD_DOC)\r
225 \r
226 INSTALL(FILES automotive-dlt.pc\r
227         DESTINATION lib/pkgconfig \r
228         COMPONENT devel)\r
229 \r
230 CONFIGURE_FILE(\r
231   "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"\r
232 \r
233   "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"\r
234   IMMEDIATE @ONLY)\r
235 \r
236 #ADD_CUSTOM_TARGET(uninstall\r
237 #  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")\r
238 \r
239 EXPORT_LIBRARY_DEPENDENCIES( "${PROJECT_NAME}LibDeps.cmake" )\r