From b7d44a2d155a1199c25b783b915fd8ba3ce42a69 Mon Sep 17 00:00:00 2001 From: Romain Forlot Date: Wed, 19 Dec 2018 16:08:25 +0100 Subject: Get rid of usage of CMake module The CMake apps module isn't required here, this isn't a binding or nothing to do with the Application Framework. Usage of the CMake module impl property and commands that we don't want to be handled by it like a default install directory. Change-Id: Iba68b9e6802320069fda2f5a563536b39900dd3c Signed-off-by: Romain Forlot --- CMakeLists.txt | 3 ++ conf.d/config.cmake | 122 ++++++++++++---------------------------------------- src/CMakeLists.txt | 47 +++++++++++--------- 3 files changed, 56 insertions(+), 116 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index da558a5..85e5240 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,5 +18,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.3) +include(GNUInstallDirs) include(${CMAKE_CURRENT_SOURCE_DIR}/conf.d/config.cmake) + +add_subdirectory(src) diff --git a/conf.d/config.cmake b/conf.d/config.cmake index bb007f9..35d3b25 100644 --- a/conf.d/config.cmake +++ b/conf.d/config.cmake @@ -19,7 +19,7 @@ # Project Info # ------------------ set(PROJECT_NAME can-config-generator) -set(PROJECT_VERSION "1.0") +set(PROJECT_VERSION "1.5") set(PROJECT_PRETTY_NAME "CAN configuration generator") set(PROJECT_DESCRIPTION "Generator that convert JSON file following OpenXC spec to configuration-generated.cpp file for the low level CAN binding.") set(PROJECT_URL "https://gerrit.automotivelinux.org/gerrit/src/low-level-can-generator") @@ -28,109 +28,41 @@ set(PROJECT_AUTHOR "Loïc Collignon") set(PROJECT_AUTHOR_MAIL "loic.collignon@iot.bzh") set(PROJECT_ICON "icon.png") set(PROJECT_LICENCE "APL2.0") -set(PROJECT_LANGUAGES,"C") +set(PROJECT_LANGUAGES,"CXX") -# Where are stored the project configuration files -# relative to the root project directory -set(PROJECT_CMAKE_CONF_DIR "conf.d") +project(${PROJECT_NAME} VERSION ${PROJECT_VERSION} LANGUAGES ${PROJECT_LANGUAGES}) -# Where are stored your external libraries for your project. This is 3rd party library that you don't maintain -# but used and must be built and linked. -# set(PROJECT_LIBDIR "libs") +set(CMAKE_POSITION_INDEPENDENT_CODE ON) +set(CMP0048 1) -# Where are stored data for your application. Pictures, static resources must be placed in that folder. -# set(PROJECT_RESOURCES "data") - - -# Compilation Mode (DEBUG, RELEASE) -# ---------------------------------- -set(CMAKE_BUILD_TYPE "DEBUG") - -# Kernel selection if needed. Overload the detected compiler. -# ----------------------------------------------- -#set (kernel_minimal_version 4.8) - -# Compiler selection if needed. Overload the detected compiler. -# ----------------------------------------------- -set (gcc_minimal_version 4.9) - -# PKG_CONFIG required packages -# ----------------------------- -set (PKG_REQUIRED_LIST) +if(NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE "RELEASE") +endif() # Static constante definition # ----------------------------- -add_compile_options($<$:-std=c++11>) - -# Print a helper message when every thing is finished -# ---------------------------------------------------- -set(CLOSING_MESSAGE "Test with: ./src/can-config-generator -m ../tests/basic.json -o application-generated.cpp") +add_compile_options($<$:-std=c++11> + -Wall + -Wextra + -Wconversion + -Wno-unused-parameter + -Wno-sign-compare + -Wno-sign-conversion + -Werror=implicit-function-declaration + -ffunction-sections + -fdata-sections + -fPIC + -Werror=maybe-uninitialized + ) + +if(${CMAKE_BUILD_TYPE} STREQUAL "RELEASE") + add_compile_options(-O2 -D_FORTIFY_SOURCE=2) +elseif(${CMAKE_BUILD_TYPE} STREQUAL "DEBUG") + add_compile_options(-g -ggdb -O0) +endif() # (BUG!!!) as PKG_CONFIG_PATH does not work [should be an env variable] # --------------------------------------------------------------------- # set(CMAKE_INSTALL_PREFIX $ENV{HOME}/opt) set(CMAKE_PREFIX_PATH ${CMAKE_INSTALL_PREFIX}/lib64/pkgconfig ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig) set(LD_LIBRARY_PATH ${CMAKE_INSTALL_PREFIX}/lib64 ${CMAKE_INSTALL_PREFIX}/lib) - -# Optional location for config.xml.in -# ----------------------------------- -#set(WIDGET_CONFIG_TEMPLATE ${CMAKE_CURRENT_SOURCE_DIR}/conf.d/wgt/config.xml.in) - -# Mandatory widget Mimetype specification -# -------------------------------------------------- -# Choose between : -# - application/vnd.agl.service -# - application/vnd.agl.native -# - application/x-executable -# - text/html -# -set(WIDGET_TYPE application/x-executable) - -# Mandatory Widget entry point file. -# ---------------------------------------------------- -# This is the file that will be executed, loaded,... -# at launch time by the application framework -# -# !IMPORTANT! : Service Widget Mimetype has to specified -# the WIDGET_ENTRY_POINT "lib" which is the default directory -# that holds the bindings. -# -#set(WIDGET_ENTRY_POINT None) - -# Optional dependencies order -# --------------------------- -#set(EXTRA_DEPENDENCIES_ORDER) - -# Optional Extra global include path -# ----------------------------------- -#set(EXTRA_INCLUDE_DIRS) - -# Optional extra libraries -# ------------------------- -#set(EXTRA_LINK_LIBRARIES) - -# Optional force binding installation -# ------------------------------------ -# set(BINDINGS_INSTALL_PREFIX PrefixPath ) - -# Optional force binding Linking flag -# ------------------------------------ -# set(BINDINGS_LINK_FLAG LinkOptions ) - -# Optional force package prefix generation, like widget -# ----------------------------------------------------- -# set(PACKAGE_PREFIX DestinationPath) - -# Optional Application Framework security token -# and port use for remote debugging. -#------------------------------------------------------------ -#set(AFB_TOKEN "" CACHE PATH "Default AFB_TOKEN") -#set(AFB_REMPORT "1234" CACHE PATH "Default AFB_TOKEN") - -# This include is mandatory and MUST happens at the end -# of this file, else you expose you to unexpected behavior -# -# This CMake module could be found at the following url: -# https://gerrit.automotivelinux.org/gerrit/#/admin/projects/src/cmake-apps-module -# ----------------------------------------------------------- -include(CMakeAfbTemplates) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f568da1..2824b71 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -17,28 +17,33 @@ ########################################################################### # Add target to project dependency list -PROJECT_TARGET_ADD(can-config-generator) +set(TARGET_NAME can-config-generator) - # Define project Targets - add_executable(${TARGET_NAME} - main.cpp - openxc/message_set.cpp - openxc/can_bus.cpp - openxc/can_message.cpp - openxc/command.cpp - openxc/diagnostic_message.cpp - openxc/mapping.cpp - openxc/signal.cpp) +# Define project Targets +add_executable(${TARGET_NAME} + main.cpp + openxc/message_set.cpp + openxc/can_bus.cpp + openxc/can_message.cpp + openxc/command.cpp + openxc/diagnostic_message.cpp + openxc/mapping.cpp + openxc/signal.cpp) - TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} - PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/json - ) +TARGET_INCLUDE_DIRECTORIES(${TARGET_NAME} + PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../3rdparty/json +) - # Library dependencies (include updates automatically) - TARGET_LINK_LIBRARIES(can-config-generator - ${link_libraries} - ) +# Library dependencies (include updates automatically) +TARGET_LINK_LIBRARIES(${TARGET_NAME} + ${link_libraries} +) - # installation directory - INSTALL(TARGETS can-config-generator - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +# installation directory +INSTALL(TARGETS ${TARGET_NAME} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +# Print a helper message when every thing is finished +# ---------------------------------------------------- +set(CLOSING_MESSAGE "Test with: ./src/can-config-generator -m ../tests/basic.json -o application-generated.cpp") -- cgit 1.2.3-korg