Security fix on DLT pipes.
[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-2012, BMW AG - Alexander Wenzel <alexander.aw.wenzel@bmw.de>\r
6\r
7 # Contributions are licensed to the GENIVI Alliance under one or more\r
8 # Contribution License Agreements.\r
9\r
10 # This Source Code Form is subject to the terms of the\r
11 # Mozilla Public License, v. 2.0. If a  copy of the MPL was not distributed with\r
12 # this file, You can obtain one at http://mozilla.org/MPL/2.0/.\r
13 #\r
14 # @licence end@\r
15 ########\r
16 \r
17 cmake_minimum_required( VERSION 2.6 )\r
18 project( automotive-dlt )\r
19 \r
20 mark_as_advanced( CMAKE_BACKWARDS_COMPATIBILITY)\r
21 set( CMAKE_ALLOW_LOOSE_LOOP_CONSTRUCTS TRUE )\r
22 set( CMAKE_INSTALL_PREFIX "/usr" )\r
23 \r
24 # Set version parameters\r
25 set( DLT_MAJOR_VERSION 2)\r
26 set( DLT_MINOR_VERSION 9)\r
27 set( DLT_PATCH_LEVEL 2)\r
28 set( DLT_VERSION ${DLT_MAJOR_VERSION}.${DLT_MINOR_VERSION}.${DLT_PATCH_LEVEL})\r
29 set( DLT_VERSION_STATE ALPHA )\r
30 set( DLT_REVISION "")\r
31 \r
32 execute_process(COMMAND git describe --tags WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} \r
33         OUTPUT_VARIABLE DLT_REVISION\r
34         ERROR_VARIABLE GIT_ERROR \r
35         OUTPUT_STRIP_TRAILING_WHITESPACE\r
36         ERROR_STRIP_TRAILING_WHITESPACE)\r
37 if( DLT_REVISION MATCHES "^$")\r
38         set( PRINT_REVISION "Git revision unavailable")\r
39 else( DLT_REVISION MATCHES "")\r
40         string(REPLACE "-" "_" DLT_REVISION ${DLT_REVISION})\r
41         set( PRINT_REVISION ${DLT_REVISION})    \r
42 endif( DLT_REVISION MATCHES "^$")\r
43 \r
44 # set default build type, if not defined by user\r
45 if(NOT CMAKE_BUILD_TYPE)\r
46     set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING\r
47                          "Choose build type: Debug, Release, RelWithDebInfo, MinSizeRel."\r
48                          FORCE)\r
49     message(STATUS "Build type not defined. Using default build type 'RelWithDebInfo'.")\r
50 endif(NOT CMAKE_BUILD_TYPE)\r
51 \r
52 # Set of indiviual options\r
53 option(BUILD_SHARED_LIBS      "Set to OFF to build static libraries"                                             ON  )\r
54 option(WITH_SYSTEMD           "Set to ON to create unit files and systemd check on dlt-daemon startup"           OFF )\r
55 option(WITH_SYSTEMD_WATCHDOG  "Set to ON to use the systemd watchdog in dlt-daemon"                              OFF)\r
56 option(WITH_SYSTEMD_JOURNAL   "Set to ON to use the systemd journal in dlt-system"                               OFF)\r
57 option(WITH_DOC               "Set to ON to build documentation target"                                          OFF )\r
58 option(WITH_MAN               "Set to ON to build man pages"                                                     ON )\r
59 option(WITH_CHECK_CONFIG_FILE "Set to ON to create a configure file of CheckIncludeFiles and CheckFunctionExists " OFF )\r
60 option(WITH_TESTSCRIPTS       "Set to ON to run CMakeLists.txt in testscripts"                                   OFF )\r
61 option(WITH_GPROF             "Set -pg to compile flags"                                                         OFF )\r
62 option(WITH_DLTTEST                       "Set to ON to build with modifications to test User-Daemon communication with corrupt messages" OFF)\r
63 option(WITH_DLT_SHM_ENABLE    "EXPERIMENTAL! Set to ON to use shared memory as IPC. EXPERIMENTAL!"               OFF )\r
64 option(WTIH_DLT_ADAPTOR       "Set ton ON to build src/adaptor binaries"                                         ON)\r
65 option(WITH_DLT_CONSOLE       "Set ton ON to build src/console binaries"                                         ON)\r
66 option(WITH_DLT_EXAMPLES      "Set ton ON to build src/examples binaries"                                        ON)\r
67 option(WITH_DLT_SYSTEM        "Set ton ON to build src/system binaries"                                          ON)\r
68 option(WITH_DLT_TESTS         "Set ton ON to build src/test binaries"                                            ON)\r
69 # RPM settings\r
70 set( GENIVI_RPM_RELEASE "1")#${DLT_REVISION}")\r
71 set( LICENSE "Mozilla Public License Version 2.0" )\r
72 \r
73 # Build, project and include settings\r
74 find_package(Threads REQUIRED)\r
75 \r
76 include_directories( \r
77     ${CMAKE_SOURCE_DIR}/\r
78     ${CMAKE_SOURCE_DIR}/include/dlt\r
79     ${CMAKE_SOURCE_DIR}/src/shared/ \r
80     ${CMAKE_SOURCE_DIR}/src/lib/\r
81     ${CMAKE_SOURCE_DIR}/src/daemon/\r
82     ${CMAKE_SOURCE_DIR}/systemd/3rdparty/\r
83 )\r
84 \r
85 add_definitions( -D_GNU_SOURCE )\r
86 \r
87 if(WITH_DLTTEST)\r
88         add_definitions( -DDLT_TEST_ENABLE)\r
89 endif(WITH_DLTTEST)\r
90 \r
91 if(WITH_DLT_SHM_ENABLE)\r
92     add_definitions( -DDLT_SHM_ENABLE)\r
93 endif(WITH_DLT_SHM_ENABLE)\r
94  \r
95 if(WITH_GPROF)\r
96   SET(CMAKE_C_FLAGS "-pg")\r
97 endif(WITH_GPROF)    \r
98    \r
99 add_definitions( "-Wall" )\r
100 add_definitions( "-Wextra" )\r
101 \r
102 IF(${WITH_DOC} STREQUAL "OFF")\r
103         SET(PACKAGE_DOC "#")\r
104 ELSE (${WITH_DOC} STREQUAL "OFF")\r
105         SET(PACKAGE_DOC "")\r
106 ENDIF(${WITH_DOC} STREQUAL "OFF")\r
107 \r
108 configure_file(${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.spec.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.spec)\r
109 configure_file(${CMAKE_SOURCE_DIR}/${PROJECT_NAME}.pc.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc @ONLY)\r
110 install(FILES ${PROJECT_BINARY_DIR}/${PROJECT_NAME}.pc DESTINATION lib/pkgconfig COMPONENT devel)\r
111 \r
112 add_subdirectory( cmake )\r
113 \r
114 if(WITH_SYSTEMD OR WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD_JOURNAL)\r
115     if(WITH_SYSTEMD)\r
116         add_definitions( -DDLT_SYSTEMD_ENABLE)\r
117     endif(WITH_SYSTEMD)\r
118     \r
119     if(WITH_SYSTEMD_WATCHDOG)\r
120         add_definitions( -DDLT_SYSTEMD_WATCHDOG_ENABLE)\r
121     endif(WITH_SYSTEMD_WATCHDOG)\r
122 \r
123     if(WITH_SYSTEMD_JOURNAL)\r
124         add_definitions( -DDLT_SYSTEMD_JOURNAL_ENABLE)\r
125     endif(WITH_SYSTEMD_JOURNAL)\r
126     \r
127     set( systemd_SRCS ${CMAKE_SOURCE_DIR}/systemd/3rdparty/sd-daemon.c)\r
128     \r
129     add_subdirectory( systemd )\r
130 endif(WITH_SYSTEMD OR WITH_SYSTEMD_WATCHDOG OR WITH_SYSTEMD_JOURNAL)\r
131 \r
132 add_subdirectory( doc )\r
133 add_subdirectory( src )\r
134 add_subdirectory( include )\r
135 add_subdirectory( testscripts )\r
136 \r
137 message( STATUS )\r
138 message( STATUS "-------------------------------------------------------------------------------" )\r
139 message( STATUS "Build for Version ${DLT_VERSION} build ${DLT_REVISION} version state ${DLT_VERSION_STATE}")\r
140 message( STATUS "WITH_SYSTEMD = ${WITH_SYSTEMD}" )\r
141 message( STATUS "WITH_SYSTEMD_WATCHDOG = ${WITH_SYSTEMD_WATCHDOG}" )\r
142 message( STATUS "WITH_SYSTEMD_JOURNAL = ${WITH_SYSTEMD_JOURNAL}" )\r
143 message( STATUS "WITH_DOC = ${WITH_DOC}" )\r
144 \r
145 message( STATUS "WITH_MAN = ${WITH_MAN}" )\r
146 message( STATUS "WTIH_DLT_ADAPTOR = ${WTIH_DLT_ADAPTOR}")\r
147 message( STATUS "WITH_DLT_CONSOLE = ${WITH_DLT_CONSOLE}")\r
148 message( STATUS "WITH_DLT_EXAMPLES = ${WITH_DLT_EXAMPLES}")\r
149 message( STATUS "WITH_DLT_SYSTEM = ${WITH_DLT_SYSTEM}")\r
150 message( STATUS "WITH_DLT_TESTS = ${WITH_DLT_TESTS}")\r
151 message( STATUS "WITH_DLT_SHM_ENABLE = ${WITH_DLT_SHM_ENABLE}" )\r
152 message( STATUS "WITH_DLTTEST = ${WITH_DLTTEST}" )\r
153 message( STATUS "WITH_CHECK_CONFIG_FILE = ${WITH_CHECK_CONFIG_FILE}" )\r
154 message( STATUS "WITH_TESTSCRIPTS = ${WITH_TESTSCRIPTS}" )\r
155 message( STATUS "WITH_GPROF = ${WITH_GPROF}" )\r
156 message( STATUS "BUILD_SHARED_LIBS = ${BUILD_SHARED_LIBS}" )\r
157 message( STATUS "CMAKE_INSTALL_PREFIX = ${CMAKE_INSTALL_PREFIX}" )\r
158 message( STATUS "CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}" )\r
159 message( STATUS "Change a value with: cmake -D<Variable>=<Value>" )\r
160 message( STATUS "-------------------------------------------------------------------------------" )\r
161 message( STATUS )\r