2 # Dlt - Diagnostic Log and Trace
\r
3 # @licence make begin@
\r
5 # Copyright (C) 2011, BMW AG - Alexander Wenzel <alexander.wenzel@bmw.de>
\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
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
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
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
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
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
38 CMAKE_MINIMUM_REQUIRED( VERSION 2.6 )
\r
39 MARK_AS_ADVANCED(CMAKE_BACKWARDS_COMPATIBILITY)
\r
41 SET( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )
\r
43 PROJECT( automotive-dlt )
\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
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
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
71 ##################### RPM SPEC CONFIG ########################
\r
72 SET( GENIVI_RPM_RELEASE "1${DLT_REVISION}")
\r
73 SET( LICENSE "LGPL v2.1 with special exception" )
\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
82 ###################### GPROF Settings ###################
\r
83 # Adds compile flag for gprof to target
\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
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
99 SET( prefix ${CMAKE_INSTALL_PREFIX})
\r
100 SET( libdir "\${exec_prefix}/lib" )
\r
101 SET( includedir "\${exec_prefix}/include" )
\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
109 IF(NOT CMAKE_BUILD_TYPE)
\r
110 SET(CMAKE_BUILD_TYPE RelWithDebInfo)
\r
111 ENDIF(NOT CMAKE_BUILD_TYPE)
\r
113 FIND_PACKAGE(Doxygen)
\r
114 FIND_PACKAGE(Threads REQUIRED)
\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
123 ADD_DEFINITIONS( "-Wall" )
\r
125 ###################### IPC settings #################
\r
126 # Disable following definition, if old Fifo version
\r
128 # ADD_DEFINITIONS( -DDLT_SHM_ENABLE=1 )
\r
130 INCLUDE(TestBigEndian)
\r
132 TEST_BIG_ENDIAN( DLT_BIGENDIAN )
\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
140 INCLUDE(CheckIncludeFiles)
\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
168 INCLUDE(CheckFunctionExists)
\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
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
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
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
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
218 ADD_SUBDIRECTORY( src )
\r
219 ADD_SUBDIRECTORY( include )
\r
220 ADD_SUBDIRECTORY( testscripts )
\r
222 IF (ENABLE_BUILD_DOC)
\r
223 ADD_SUBDIRECTORY( doc )
\r
224 ENDIF(ENABLE_BUILD_DOC)
\r
226 INSTALL(FILES automotive-dlt.pc
\r
227 DESTINATION lib/pkgconfig
\r
231 "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
\r
233 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
\r
236 #ADD_CUSTOM_TARGET(uninstall
\r
237 # "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
\r
239 EXPORT_LIBRARY_DEPENDENCIES( "${PROJECT_NAME}LibDeps.cmake" )
\r