- 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
102 lines
3.7 KiB
CMake
102 lines
3.7 KiB
CMake
function(setup_ev_cli)
|
|
if(NOT TARGET ev-cli)
|
|
add_custom_target(ev-cli)
|
|
endif()
|
|
if(NOT ${${PROJECT_NAME}_USE_PYTHON_VENV})
|
|
message(STATUS "Using system ev-cli instead of installing it in the build venv.")
|
|
find_program(EV_CLI ev-cli REQUIRED)
|
|
else()
|
|
ev_is_python_venv_active(
|
|
RESULT_VAR IS_PYTHON_VENV_ACTIVE
|
|
)
|
|
if(NOT ${IS_PYTHON_VENV_ACTIVE})
|
|
message(FATAL_ERROR "Python venv is not active. Please activate the python venv before running this command.")
|
|
endif()
|
|
|
|
get_target_property(SOURCE_DIRECTORY ev_pip_package_ev-dev-tools SOURCE_DIRECTORY)
|
|
message(STATUS "Installing ev-cli from: ${SOURCE_DIRECTORY}")
|
|
ev_pip_install_local(
|
|
PACKAGE_NAME "ev-dev-tools"
|
|
PACKAGE_SOURCE_DIRECTORY "${SOURCE_DIRECTORY}"
|
|
)
|
|
unset(EV_CLI CACHE)
|
|
find_program(EV_CLI ev-cli HINTS ${EV_ACTIVATE_PYTHON_VENV_PATH_TO_VENV}/bin REQUIRED)
|
|
message(STATUS "Using ev-cli from: ${EV_CLI}")
|
|
endif()
|
|
|
|
get_property(EVEREST_REQUIRED_EV_CLI_VERSION
|
|
GLOBAL
|
|
PROPERTY EVEREST_REQUIRED_EV_CLI_VERSION
|
|
)
|
|
require_ev_cli_version(${EVEREST_REQUIRED_EV_CLI_VERSION})
|
|
|
|
set_ev_cli_template_properties()
|
|
endfunction()
|
|
|
|
function(require_ev_cli_version EV_CLI_VERSION_REQUIRED)
|
|
execute_process(
|
|
COMMAND ${EV_CLI} --version
|
|
OUTPUT_VARIABLE EV_CLI_VERSION_FULL
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
)
|
|
|
|
string(REPLACE "ev-cli " "" EV_CLI_VERSION "${EV_CLI_VERSION_FULL}")
|
|
|
|
if ("${EV_CLI_VERSION}" STREQUAL "")
|
|
message(FATAL_ERROR "Could not determine a ev-cli version from the provided version '${EV_CLI_VERSION_FULL}'")
|
|
endif()
|
|
if("${EV_CLI_VERSION}" VERSION_GREATER_EQUAL "${EV_CLI_VERSION_REQUIRED}")
|
|
message("Found ev-cli version '${EV_CLI_VERSION}' which satisfies the requirement of ev-cli version '${EV_CLI_VERSION_REQUIRED}'")
|
|
else()
|
|
message(FATAL_ERROR "ev-cli version ${EV_CLI_VERSION_REQUIRED} or higher is required. However your ev-cli version is '${EV_CLI_VERSION}'. Please upgrade ev-cli.")
|
|
endif()
|
|
endfunction()
|
|
|
|
function(set_ev_cli_template_properties)
|
|
message(STATUS "Setting template properties for ev-cli target")
|
|
get_target_property(EVEREST_SCHEMA_DIR generate_cpp_files EVEREST_SCHEMA_DIR)
|
|
|
|
execute_process(
|
|
COMMAND ${EV_CLI} interface get-templates --separator=\; --schemas-dir "${EVEREST_SCHEMA_DIR}"
|
|
OUTPUT_VARIABLE INTERFACE_TEMPLATES
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE
|
|
INTERFACE_TEMPLATES_RESULT
|
|
)
|
|
|
|
if(INTERFACE_TEMPLATES_RESULT)
|
|
message(FATAL_ERROR "Could not get interface templates from ev-cli.")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${EV_CLI} module get-templates --separator=\; --schemas-dir "${EVEREST_SCHEMA_DIR}"
|
|
OUTPUT_VARIABLE MODULE_TEMPLATES
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE
|
|
MODULE_TEMPLATES_RESULT
|
|
)
|
|
|
|
if(MODULE_TEMPLATES_RESULT)
|
|
message(FATAL_ERROR "Could not get module loader templates from ev-cli.")
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND ${EV_CLI} types get-templates --separator=\; --schemas-dir "${EVEREST_SCHEMA_DIR}"
|
|
OUTPUT_VARIABLE TYPES_TEMPLATES
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
RESULT_VARIABLE
|
|
TYPES_TEMPLATES_RESULT
|
|
)
|
|
|
|
if(TYPES_TEMPLATES_RESULT)
|
|
message(FATAL_ERROR "Could not get module loader templates from ev-cli.")
|
|
endif()
|
|
|
|
set_target_properties(ev-cli
|
|
PROPERTIES
|
|
INTERFACE_TEMPLATES "${INTERFACE_TEMPLATES}"
|
|
MODULE_TEMPLATES "${MODULE_TEMPLATES}"
|
|
TYPES_TEMPLATES "${TYPES_TEMPLATES}"
|
|
)
|
|
endfunction()
|