Add extracted tools: CitrineOS, OpenOCPP, ShapeShifter
- CitrineOS core extracted (CSMS OCPP 2.0.1) - OpenOCPP extracted (firmware OCPP 1.6J/2.0.1) - ShapeShifter library installed (pip install -e) - ShapeShifter specification extracted - EVerest extracted TODO updated with progress
This commit is contained in:
255
tools/EVerest-main/CMakeLists.txt
Normal file
255
tools/EVerest-main/CMakeLists.txt
Normal file
@@ -0,0 +1,255 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(everest-core
|
||||
VERSION 2026.02.0
|
||||
DESCRIPTION "The open operating system for e-mobility charging stations"
|
||||
LANGUAGES CXX C
|
||||
)
|
||||
|
||||
find_package(everest-cmake 0.5
|
||||
COMPONENTS bundling
|
||||
PATHS ../everest-cmake
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
find_package(everest-cmake 0.5
|
||||
COMPONENTS bundling
|
||||
)
|
||||
|
||||
if (NOT everest-cmake_FOUND)
|
||||
message(STATUS "Retrieving everest-cmake using FetchContent")
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
everest-cmake
|
||||
GIT_REPOSITORY https://github.com/EVerest/everest-cmake.git
|
||||
GIT_TAG main
|
||||
)
|
||||
FetchContent_MakeAvailable(everest-cmake)
|
||||
set(everest-cmake_DIR "${everest-cmake_SOURCE_DIR}")
|
||||
set(everest-cmake_FIND_COMPONENTS "bundling")
|
||||
include("${everest-cmake_SOURCE_DIR}/everest-cmake-config.cmake")
|
||||
endif()
|
||||
|
||||
# make own cmake modules available
|
||||
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
|
||||
# test whether linking with libatomic is required on some platforms
|
||||
include(CheckAtomic)
|
||||
if(HAVE_CXX_ATOMICS_WITH_LIB OR HAVE_CXX_ATOMICS64_WITH_LIB)
|
||||
set(ATOMIC_LIBS "atomic")
|
||||
else()
|
||||
set(ATOMIC_LIBS "")
|
||||
endif()
|
||||
|
||||
# test whether we are building on a musl based system.
|
||||
# On these we need to increase the stack size as it is very low by default
|
||||
option(USING_MUSL "Using musl" OFF)
|
||||
find_program(LDD_EXECUTABLE ldd)
|
||||
find_program(LS_EXECUTABLE ls)
|
||||
if(LDD_EXECUTABLE AND LS_EXECUTABLE)
|
||||
# we use ls as a testing executable as it is very likely to exist on any system. ldd prints the dynamic linked libraries
|
||||
# of the given executable, if musl is used it will print it as a linked object
|
||||
execute_process(COMMAND ${LDD_EXECUTABLE} ${LS_EXECUTABLE} OUTPUT_VARIABLE LDD_LS_OUTPUT ERROR_QUIET)
|
||||
if(LDD_LS_OUTPUT MATCHES "musl")
|
||||
message(STATUS "MUSL detected, increasing stack size to 8MiB")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,stack-size=8388608")
|
||||
set(USING_MUSL ON)
|
||||
endif()
|
||||
else()
|
||||
if(NOT LDD_EXECUTABLE)
|
||||
message(WARNING "ldd not found, skipping musl detection")
|
||||
endif()
|
||||
if(NOT LS_EXECUTABLE)
|
||||
message(WARNING "ls not found, skipping musl detection")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
option(CREATE_SYMLINKS "Create symlinks to javascript modules and auxillary files - for development purposes" OFF)
|
||||
option(CMAKE_RUN_CLANG_TIDY "Run clang-tidy" OFF)
|
||||
option(ISO15118_2_GENERATE_AND_INSTALL_CERTIFICATES "Automatically generate and install certificates for development purposes" ON)
|
||||
option(EVEREST_ENABLE_RUN_SCRIPT_GENERATION "Enables the generation of run scripts (convenience scripts for starting available configurations)" ON)
|
||||
option(EVEREST_BUILD_DOCS "Build EVerest documentation" OFF)
|
||||
option(EVEREST_SKIP_BUILD_API_DOC "Skip building the async API html doc for the EVerest API" OFF)
|
||||
option(${PROJECT_NAME}_BUILD_TESTING "Build unit tests, used if included as dependency" OFF)
|
||||
option(BUILD_TESTING "Build unit tests, used if standalone project" OFF)
|
||||
option(EVEREST_ENABLE_COMPILE_WARNINGS "Enable compile warnings set in the EVEREST_COMPILE_OPTIONS flag" OFF)
|
||||
option(EVEREST_ENABLE_GLOBAL_COMPILE_WARNINGS "Enable compile warnings set in the EVEREST_COMPILE_OPTIONS flag globally" OFF)
|
||||
option(EVEREST_ENABLE_DEBUG_BUILD "Enable debug build" OFF)
|
||||
option(EVEREST_BUILD_APPLICATIONS "Build applications like drivers for the EVerest stable API" ON)
|
||||
option(EVEREST_LIBS_ONLY "Only build libraries, skip modules/applications/config" OFF)
|
||||
option(EVEREST_IO_WITH_MQTT "Build MQTT (mosquitto) support in everest::io" ON)
|
||||
set(EVEREST_INCLUDE_LIBS "" CACHE STRING "Semicolon-separated allowlist of libraries to build (empty = all)")
|
||||
set(EVEREST_EXCLUDE_LIBS "" CACHE STRING "Semicolon-separated blocklist of libraries to skip")
|
||||
# list of compile options that are passed to modules if EVEREST_ENABLE_COMPILE_WARNINGS=ON
|
||||
# generated code has functions often not used
|
||||
set(EVEREST_COMPILE_OPTIONS "-Wall;-Wno-unused-function" CACHE STRING "A list of compile options used for building modules")
|
||||
if(EVEREST_ENABLE_GLOBAL_COMPILE_WARNINGS)
|
||||
add_compile_options(${EVEREST_COMPILE_OPTIONS})
|
||||
endif()
|
||||
if((${CMAKE_PROJECT_NAME} STREQUAL ${PROJECT_NAME} OR ${PROJECT_NAME}_BUILD_TESTING) AND BUILD_TESTING)
|
||||
set(EVEREST_CORE_BUILD_TESTING ON)
|
||||
set(everest-framework_BUILD_TESTING ON)
|
||||
set(ISO15118_BUILD_TESTING ON)
|
||||
set(ocpp_BUILD_TESTING ON)
|
||||
set(LIBEVSE_SECURITY_BUILD_TESTING ON)
|
||||
set(everest-evse_security_BUILD_TESTING ON)
|
||||
set(everest-sqlite_BUILD_TESTING ON)
|
||||
set(everest-timer_BUILD_TESTING ON)
|
||||
set(everest-log_BUILD_TESTING ON)
|
||||
set(IEEE2030_BUILD_TESTING ON)
|
||||
endif()
|
||||
# This is a flag for building development tests, but not necessarily to run them, for expample in case
|
||||
# tests requires hardware.
|
||||
option(BUILD_DEV_TESTS "Build dev tests" OFF)
|
||||
ev_setup_cmake_variables_python_wheel()
|
||||
option(${PROJECT_NAME}_INSTALL_EV_CLI_IN_PYTHON_VENV "Install ev-cli in python venv instead of using system" ON)
|
||||
set(${PROJECT_NAME}_PYTHON_VENV_PATH "${CMAKE_BINARY_DIR}/venv" CACHE PATH "Path to python venv")
|
||||
|
||||
ev_setup_python_executable(
|
||||
USE_PYTHON_VENV ${${PROJECT_NAME}_USE_PYTHON_VENV}
|
||||
PYTHON_VENV_PATH ${${PROJECT_NAME}_PYTHON_VENV_PATH}
|
||||
)
|
||||
|
||||
# Already include CTest here to allow it to find tests defined in subdirectories like lib and modules
|
||||
if(EVEREST_CORE_BUILD_TESTING)
|
||||
include(CTest)
|
||||
|
||||
if (NOT CMAKE_BUILD_TYPE)
|
||||
if(EVEREST_ENABLE_DEBUG_BUILD)
|
||||
set(CMAKE_BUILD_TYPE Debug CACHE STRING "Build type" FORCE)
|
||||
else()
|
||||
set(CMAKE_BUILD_TYPE MinSizeRel CACHE STRING "Build type" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
include(ev-define-dependency)
|
||||
include(ev-lib-dependencies)
|
||||
|
||||
if(NOT EVEREST_LIBS_ONLY)
|
||||
include("module-dependencies.cmake")
|
||||
endif()
|
||||
|
||||
# this policy allows us to continue using the removed FindBoost module for now
|
||||
if(POLICY CMP0167)
|
||||
cmake_policy(SET CMP0167 OLD)
|
||||
endif()
|
||||
|
||||
find_package(Boost
|
||||
COMPONENTS
|
||||
filesystem
|
||||
program_options
|
||||
thread
|
||||
REQUIRED
|
||||
)
|
||||
|
||||
include(compatibility/boost)
|
||||
|
||||
set(everest-framework_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/everest/framework)
|
||||
set(everest-framework_BINARY_DIR ${CMAKE_BINARY_DIR}/lib/everest/framework)
|
||||
set(EVEREST_SCHEMA_DIR ${everest-framework_SOURCE_DIR}/schemas)
|
||||
set(everest-sqlite_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lib/everest/sqlite)
|
||||
if(NOT DEFINED EVEREST_ENABLE_PY_SUPPORT)
|
||||
set(EVEREST_ENABLE_PY_SUPPORT ON CACHE BOOL "Enable EVerest Python support" FORCE)
|
||||
endif()
|
||||
|
||||
if(NOT DISABLE_EDM)
|
||||
# FIXME (aw): this implicit definition for child projects is hacky
|
||||
set(THIRD_PARTY_APP_DST "${CMAKE_INSTALL_LIBEXECDIR}/everest/3rd_party")
|
||||
|
||||
# edm
|
||||
add_subdirectory(applications/dependency_manager)
|
||||
|
||||
evc_setup_edm()
|
||||
|
||||
if(EVEREST_DEPENDENCY_ENABLED_SDBUS_CPP AND NOT TARGET SDBusCpp::sdbus-c++)
|
||||
add_library(SDBusCpp::sdbus-c++ ALIAS sdbus-c++)
|
||||
endif()
|
||||
|
||||
# ev-cli and everest-testing
|
||||
if(NOT EVEREST_LIBS_ONLY)
|
||||
add_subdirectory(applications/utils)
|
||||
endif()
|
||||
else()
|
||||
if(NOT EVEREST_LIBS_ONLY)
|
||||
find_package(PalSigslot REQUIRED)
|
||||
find_package(libnfc-nci REQUIRED)
|
||||
find_package(pugixml REQUIRED)
|
||||
find_package(CURL 7.84.0 REQUIRED)
|
||||
find_package(ftxui 6 QUIET) # optional, if not available BringUp module will not be built
|
||||
find_package(sdbus-c++ REQUIRED)
|
||||
endif()
|
||||
|
||||
find_package(ryml REQUIRED)
|
||||
find_package(nlohmann_json REQUIRED)
|
||||
find_package(fmt REQUIRED)
|
||||
find_package(date REQUIRED)
|
||||
find_package(OpenSSL 3 REQUIRED)
|
||||
endif()
|
||||
|
||||
if(EVEREST_BUILD_DOCS)
|
||||
add_subdirectory(docs)
|
||||
endif()
|
||||
|
||||
if(EVEREST_LIBS_ONLY)
|
||||
# ev-targets provides ev_register_library_target() used by some libraries
|
||||
include(ev-targets)
|
||||
else()
|
||||
include(ev-project-bootstrap)
|
||||
|
||||
ev_add_project()
|
||||
|
||||
# create MF_ROOT_CA if not available
|
||||
if (ISO15118_2_GENERATE_AND_INSTALL_CERTIFICATES)
|
||||
file(TOUCH config/certs/ca/mf/MF_ROOT_CA.pem)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_subdirectory(lib)
|
||||
|
||||
if(NOT EVEREST_LIBS_ONLY)
|
||||
# config
|
||||
# FIXME (aw): this should be optional
|
||||
add_subdirectory(config)
|
||||
|
||||
if(EVEREST_BUILD_APPLICATIONS)
|
||||
add_subdirectory(applications)
|
||||
endif()
|
||||
|
||||
ev_install_project()
|
||||
endif()
|
||||
|
||||
# configure clang-tidy if requested
|
||||
if(CMAKE_RUN_CLANG_TIDY)
|
||||
message("Enabling clang-tidy")
|
||||
set(CMAKE_CXX_CLANG_TIDY clang-tidy)
|
||||
endif()
|
||||
|
||||
# build doxygen documentation if doxygen is available
|
||||
find_package(Doxygen)
|
||||
if(DOXYGEN_FOUND)
|
||||
set( DOXYGEN_OUTPUT_DIRECTORY dist/docs )
|
||||
doxygen_add_docs(doxygen-${PROJECT_NAME} everest.js include lib src)
|
||||
endif()
|
||||
|
||||
# testing
|
||||
if(EVEREST_CORE_BUILD_TESTING AND NOT EVEREST_LIBS_ONLY)
|
||||
add_subdirectory(tests)
|
||||
else()
|
||||
message("Not running unit tests")
|
||||
endif()
|
||||
|
||||
if(NOT EVEREST_LIBS_ONLY)
|
||||
# convenience target for integration tests
|
||||
add_custom_target(install_everest_testing
|
||||
COMMAND
|
||||
if [ -z "${CPM_PACKAGE_everest-utils_SOURCE_DIR}" ] \;
|
||||
then echo "Could not determine location of everest-utils, please install everest-testing manually!" \;
|
||||
else echo "Found everest-utils at ${CPM_PACKAGE_everest-utils_SOURCE_DIR}" \;
|
||||
${Python3_EXECUTABLE} -m pip install -e "${CPM_PACKAGE_everest-utils_SOURCE_DIR}/everest-testing" \;
|
||||
fi\;
|
||||
DEPENDS
|
||||
everestpy_pip_install_dist
|
||||
COMMENT
|
||||
"Installing dependencies for testing EVerest"
|
||||
)
|
||||
endif()
|
||||
Reference in New Issue
Block a user