summaryrefslogtreecommitdiff
path: root/NodeStateAccess/interfaces/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'NodeStateAccess/interfaces/CMakeLists.txt')
-rw-r--r--NodeStateAccess/interfaces/CMakeLists.txt335
1 files changed, 335 insertions, 0 deletions
diff --git a/NodeStateAccess/interfaces/CMakeLists.txt b/NodeStateAccess/interfaces/CMakeLists.txt
new file mode 100644
index 0000000..53e677c
--- /dev/null
+++ b/NodeStateAccess/interfaces/CMakeLists.txt
@@ -0,0 +1,335 @@
+#######################################################################################################################
+#
+# Copyright (C) 2020 Mentor Graphics (Deutschland) GmbH
+#
+# Author: Sven_Hassler@mentor.com
+#
+# CMake file of NSM Interfaces
+#
+# 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(NodeStateAccessInterfaces LANGUAGES CXX)
+
+include(GNUInstallDirs)
+include(CMakePackageConfigHelpers)
+
+set(CMAKE_CXX_STANDARD 11)
+set(CMAKE_CXX_STANDARD_REQUIRED YES)
+set(CMAKE_CXX_EXTENSIONS NO)
+
+
+###########################################
+# Options & settings
+###########################################
+
+option(USE_INSTALLED_COMMONAPI "Set to OFF to use the local (build tree) version of CommonAPI" ON)
+
+set(SRC_GEN_DEST "src-gen" CACHE STRING "Path to the destination directory of the generated sources")
+if(NOT IS_ABSOLUTE ${SRC_GEN_DEST})
+ set(SRC_GEN_DEST "${CMAKE_CURRENT_BINARY_DIR}/${SRC_GEN_DEST}")
+endif()
+
+# Core generator:
+set(COMMONAPI_CORE_TOOL_GENERATOR "" CACHE STRING "CommonAPI-Core-Tools generator")
+if("${COMMONAPI_CORE_TOOL_GENERATOR}" STREQUAL "")
+ message(FATAL_ERROR "The file path for the SomeIP generator needs to be specified! Use '-DCOMMONAPI_CORE_TOOL_GENERATOR=<path>'")
+ return()
+else()
+ message("COMMONAPI_CORE_TOOL_GENERATOR specified: ${COMMONAPI_CORE_TOOL_GENERATOR}")
+endif()
+
+# SomeIP generator:
+set(COMMONAPI_SOMEIP_TOOL_GENERATOR "" CACHE STRING "CommonAPI-SomeIP-Tools generator")
+if("${COMMONAPI_SOMEIP_TOOL_GENERATOR}" STREQUAL "")
+ message(FATAL_ERROR "The file path for the SomeIP generator needs to be specified! Use '-DCOMMONAPI_SOMEIP_TOOL_GENERATOR=<path>'")
+ return()
+else()
+ message("COMMONAPI_SOMEIP_TOOL_GENERATOR specified: ${COMMONAPI_SOMEIP_TOOL_GENERATOR}")
+endif()
+
+
+###########################################
+# Find required packages
+###########################################
+
+if("${USE_INSTALLED_COMMONAPI}" STREQUAL "ON")
+ find_package(CommonAPI REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
+ find_package(CommonAPI-SomeIP REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
+ find_package(vsomeip REQUIRED CONFIG NO_CMAKE_PACKAGE_REGISTRY)
+else()
+ find_package(CommonAPI REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
+ find_package(CommonAPI-SomeIP REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
+ find_package(vsomeip REQUIRED CONFIG NO_SYSTEM_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH)
+endif()
+
+find_package(Java 1.8 EXACT REQUIRED COMPONENTS Development)
+
+
+###########################################
+# Generate code
+###########################################
+
+set(INTERFACE_NAME "org.genivi.nodestatemanager")
+
+execute_process(
+ COMMAND
+ ${COMMONAPI_CORE_TOOL_GENERATOR}
+ --dest-common ${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core/
+ --dest-proxy ${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/core/
+ --dest-stub ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/
+ --dest-skel ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/
+ --skel
+ ${CMAKE_CURRENT_SOURCE_DIR}/NodeStateManager.fdepl
+
+ COMMAND
+ ${COMMONAPI_SOMEIP_TOOL_GENERATOR}
+ --dest-common ${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/
+ --dest-proxy ${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip/
+ --dest-stub ${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip/
+ ${CMAKE_CURRENT_SOURCE_DIR}/NodeStateManager.fdepl
+
+ RESULTS_VARIABLE
+ ERRORS
+)
+
+list(GET ERRORS 0 CORE_ERROR)
+if(NOT ${CORE_ERROR} EQUAL 0)
+message(FATAL_ERROR "Error calling core generators: ${CORE_ERROR}")
+endif()
+
+list(GET ERRORS 1 SOMEIP_ERROR)
+if(NOT ${SOMEIP_ERROR} EQUAL 0)
+ message(FATAL_ERROR "Error calling someip generators: ${SOMEIP_ERROR}")
+endif()
+
+
+###########################################
+# Build libraries
+###########################################
+
+# Core stub:
+set(CORE_STUB_NAME "org.genivi.nodestatemanager.commonapi.core.stub")
+file(GLOB_RECURSE CORE_STUB_SRCS
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/**/*.cpp"
+)
+set(CORE_STUB_INCLUDES
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core/"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core/"
+)
+set(CORE_STUB_INSTALL_INCLUDES
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/core/"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core/"
+)
+set(CORE_STUB_LINK_LIBRARIES
+ "CommonAPI"
+)
+
+add_library(${CORE_STUB_NAME} SHARED ${CORE_STUB_SRCS})
+target_link_libraries(${CORE_STUB_NAME} PUBLIC ${CORE_STUB_LINK_LIBRARIES})
+target_include_directories(
+ ${CORE_STUB_NAME} PUBLIC
+ "$<BUILD_INTERFACE:${CORE_STUB_INCLUDES}>"
+ "$<INSTALL_INTERFACE:${CORE_STUB_INSTALL_INCLUDES}>"
+ ${COMMONAPI_INCLUDE_DIRS}
+)
+
+# SomeIP stub:
+set(SOMEIP_STUB_NAME "org.genivi.nodestatemanager.commonapi.someip.stub")
+file(GLOB_RECURSE SOMEIP_STUB_SRCS
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip/**/*.cpp"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp"
+)
+set(SOMEIP_STUB_INCLUDES
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/someip"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/stub/core"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core"
+)
+set(SOMEIP_STUB_INSTALL_INCLUDES
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/someip"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/stub/core"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/someip"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core"
+)
+set(SOMEIP_STUB_LINK_LIBRARIES
+ "CommonAPI"
+ "CommonAPI-SomeIP"
+)
+
+add_library(${SOMEIP_STUB_NAME} SHARED ${SOMEIP_STUB_SRCS})
+target_link_libraries(${SOMEIP_STUB_NAME} PUBLIC ${SOMEIP_STUB_LINK_LIBRARIES})
+target_include_directories(
+ ${SOMEIP_STUB_NAME} PUBLIC
+ ${COMMONAPI_INCLUDE_DIRS}
+ ${COMMONAPI_SOMEIP_INCLUDE_DIRS}
+ "$<BUILD_INTERFACE:${SOMEIP_STUB_INCLUDES}>"
+ "$<INSTALL_INTERFACE:${SOMEIP_STUB_INSTALL_INCLUDES}>"
+)
+
+# SomeIP proxy:
+set(SOMEIP_PROXY_NAME "org.genivi.nodestatemanager.commonapi.someip.proxy")
+file(GLOB_RECURSE SOMEIP_PROXY_SRCS
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip/**/*.cpp"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip/**/*.cpp"
+)
+set(SOMEIP_PROXY_INCLUDES
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/someip"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/proxy/core"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/someip"
+ "${SRC_GEN_DEST}/${INTERFACE_NAME}/common/core"
+)
+set(SOMEIP_PROXY_INSTALL_INCLUDES
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/proxy/someip"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/proxy/core"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/someip"
+ "${CMAKE_INSTALL_INCLUDEDIR}/${INTERFACE_NAME}/common/core"
+)
+set(SOMEIP_PROXY_LINK_LIBRARIES
+ "CommonAPI"
+ "CommonAPI-SomeIP"
+)
+
+add_library(${SOMEIP_PROXY_NAME} SHARED ${SOMEIP_PROXY_SRCS})
+target_link_libraries(${SOMEIP_PROXY_NAME} PUBLIC ${SOMEIP_PROXY_LINK_LIBRARIES})
+target_include_directories(
+ ${SOMEIP_PROXY_NAME} PUBLIC
+ ${COMMONAPI_INCLUDE_DIRS}
+ ${COMMONAPI_SOMEIP_INCLUDE_DIRS}
+ "$<BUILD_INTERFACE:${SOMEIP_PROXY_INCLUDES}>"
+ "$<INSTALL_INTERFACE:${SOMEIP_PROXY_INSTALL_INCLUDES}>"
+)
+
+
+###########################################
+# Install
+
+# Install libraries:
+install(
+ TARGETS ${CORE_STUB_NAME}
+ EXPORT ${CORE_STUB_NAME}Targets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+install(
+ TARGETS ${SOMEIP_STUB_NAME}
+ EXPORT ${SOMEIP_STUB_NAME}Targets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+install(
+ TARGETS ${SOMEIP_PROXY_NAME}
+ EXPORT ${SOMEIP_PROXY_NAME}Targets
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+
+# Install includes:
+install(
+ DIRECTORY ${CORE_STUB_INCLUDES}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${CORE_STUB_NAME}"
+ FILES_MATCHING PATTERN "*.hpp"
+)
+
+install(
+ DIRECTORY ${SOMEIP_STUB_INCLUDES}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${SOMEIP_STUB_NAME}"
+ FILES_MATCHING PATTERN "*.hpp"
+)
+
+install(
+ DIRECTORY ${SOMEIP_PROXY_INCLUDES}
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/${SOMEIP_PROXY_NAME}"
+ FILES_MATCHING PATTERN "*.hpp"
+)
+
+# Create and install package configuration files:
+configure_package_config_file(
+ cmake/core_stub_config.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}Config.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME}
+)
+# install(
+# FILES ${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}Config.cmake
+# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME}
+# )
+
+configure_package_config_file(
+ cmake/someip_stub_config.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}Config.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME}
+)
+# install(
+# FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}Config.cmake
+# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME}
+# )
+
+configure_package_config_file(
+ cmake/someip_proxy_config.cmake.in
+ ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}Config.cmake
+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME}
+)
+# install(
+# FILES ${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}Config.cmake
+# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME}
+# )
+
+# Create and install target files:
+export(EXPORT ${CORE_STUB_NAME}Targets)
+install(
+ EXPORT ${CORE_STUB_NAME}Targets
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME}
+)
+
+export(EXPORT ${SOMEIP_STUB_NAME}Targets)
+install(
+ EXPORT ${SOMEIP_STUB_NAME}Targets
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME}
+)
+
+export(EXPORT ${SOMEIP_PROXY_NAME}Targets)
+install(
+ EXPORT ${SOMEIP_PROXY_NAME}Targets
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME}
+)
+
+# Create and install version files:
+write_basic_package_version_file(
+ ${CORE_STUB_NAME}ConfigVersion.cmake
+ VERSION 1.0
+ COMPATIBILITY SameMajorVersion
+)
+install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/${CORE_STUB_NAME}ConfigVersion.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${CORE_STUB_NAME}
+)
+
+write_basic_package_version_file(
+ ${SOMEIP_STUB_NAME}ConfigVersion.cmake
+ VERSION 1.0
+ COMPATIBILITY SameMajorVersion
+)
+install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_STUB_NAME}ConfigVersion.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_STUB_NAME}
+)
+
+write_basic_package_version_file(
+ ${SOMEIP_PROXY_NAME}ConfigVersion.cmake
+ VERSION 1.0
+ COMPATIBILITY SameMajorVersion
+)
+install(
+ FILES "${CMAKE_CURRENT_BINARY_DIR}/${SOMEIP_PROXY_NAME}ConfigVersion.cmake"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${SOMEIP_PROXY_NAME}
+)
+
+# Export the packages for use from the build-tree:
+# (this registers the build-tree with the global CMake-registry)
+export(PACKAGE ${CORE_STUB_NAME})
+export(PACKAGE ${SOMEIP_STUB_NAME})
+export(PACKAGE ${SOMEIP_PROXY_NAME})