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