blob: 86406d274b97e03b8bb4a5915d63922eb28de23e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#######################################################################################################################
#
# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH
#
# Author: Vignesh_Rajendran@mentor.com
#
# CMake file of NSM
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
#######################################################################################################################
cmake_minimum_required(VERSION 3.7.2 FATAL_ERROR)
project(nsm LANGUAGES C CXX)
# set version
set(NSM_VERSION_MAJOR 3)
set(NSM_VERSION_MINOR 0)
set(NSM_VERSION_BUGFIX 0)
include(CMakeDependentOption)
include(GNUInstallDirs)
# set default build type, if not defined by user
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose build type: Debug, Release"
FORCE)
message(STATUS "Build type not defined. Using default build type 'Release'.")
endif()
option(WITH_TESTS "Build together with unitTest" OFF)
message(STATUS "WITH_TESTS is set to value: ${WITH_TESTS}")
option(CODE_COVERAGE "Enable coverage reporting" OFF)
message(STATUS "CODE_COVERAGE is set to value: ${CODE_COVERAGE}")
if(CMAKE_BUILD_TYPE STREQUAL "coverage" OR CODE_COVERAGE)
if("${CMAKE_C_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang" OR "${CMAKE_CXX_COMPILER_ID}" MATCHES "(Apple)?[Cc]lang")
message("Building with llvm Code Coverage Tools")
# Warning/Error messages
if(NOT LLVM_COV_PATH)
message(FATAL_ERROR "llvm-cov not found! Aborting.")
endif()
# set Flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-instr-generate -fcoverage-mapping")
elseif(CMAKE_COMPILER_IS_GNUCXX)
message("Building with lcov Code Coverage Tools")
# Warning/Error messages
if(NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))
message(FATAL_ERROR "Code coverage results with an optimized (non-Debug) build may be misleading")
endif()
if(NOT WITH_TESTS)
message(FATAL_ERROR "test is not enabled! Aborting.")
endif()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -O0 --coverage -fprofile-arcs -ftest-coverage")
else()
message(FATAL_ERROR "Code coverage requires Clang or GCC. Aborting.")
endif()
endif()
OPTION(USE_INSTALLED_COMMONAPI "Set to OFF to use the local (build tree) version of CommonAPI" ON)
message(STATUS "USE_INSTALLED_COMMONAPI is set to value: ${USE_INSTALLED_COMMONAPI}")
OPTION(WITH_SYSTEMD_SERVICE "Install systemd service file" OFF)
message(STATUS "WITH_SYSTEMD_SERVICE is set to value: ${WITH_SYSTEMD_SERVICE}")
find_package(PkgConfig REQUIRED)
pkg_check_modules(DLT REQUIRED automotive-dlt>=2.2.0)
pkg_check_modules(GIO REQUIRED gio-2.0>=2.30.0)
pkg_check_modules(GIO_UNIX REQUIRED gio-unix-2.0>=2.30.0)
pkg_check_modules(GLIB REQUIRED glib-2.0>=2.30.0)
pkg_check_modules(GOBJECT REQUIRED gobject-2.0>=2.30.0)
pkg_check_modules(SYSTEMD REQUIRED libsystemd>=209)
find_package(CommonAPI 3.1.12 REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
find_package(org.genivi.nodestatemanager.commonapi.core.stub REQUIRED)
find_package(org.genivi.nodestatemanager.commonapi.someip.stub REQUIRED)
find_package(org.genivi.nodestatemanager.commonapi.someip.proxy REQUIRED)
find_package(vsomeip3 REQUIRED)
if(WITH_TESTS)
find_package(GTest REQUIRED)
include(CTest)
add_definitions(-DENABLE_TESTS)
endif(WITH_TESTS)
# cflags
set(NSM_CMAKE_C_FLAGS "-Wall -Wextra -Werror -fstack-protector-strong -D_GLIBCXX_USE_NANOSLEEP -pthread -Wformat -Wformat-security -fexceptions -fstrict-aliasing -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wconversion -Wno-sign-conversion -Wno-unused-parameter")
set(NSM_CMAKE_CXX_FLAGS "-Wall -Wextra -Werror -fstack-protector-strong -D_GLIBCXX_USE_NANOSLEEP -pthread -Wformat -Wformat-security -fexceptions -fstrict-aliasing -fasynchronous-unwind-tables -fno-omit-frame-pointer -Wconversion -Wno-sign-conversion")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${NSM_CMAKE_CXX_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NSM_CMAKE_CXX_FLAGS}")
# ldflags
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-as-needed")
include_directories(
${COMMONAPI_INCLUDE_DIRS}
${COMMONAPI_SOMEIP_INCLUDE_DIRS}
${GIO_INCLUDE_DIRS}
${GLIB2_INCLUDE_DIRS}
${VSOMEIP_INCLUDE_DIRS}
${DLT_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/NodeStateManager
${VSOMEIP3_INCLUDE_DIRS}
)
add_subdirectory(NodeStateMachineStub)
add_subdirectory(NodeStateAccess)
add_subdirectory(NodeStateManager)
if(WITH_TESTS)
add_subdirectory(NodeStateMachineTest)
endif(WITH_TESTS)
|