Files
cariflex/tools/EVerest-main/cmake/ev-cli.cmake
Eric F d398a6ced2 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
2026-06-08 00:38:27 -04:00

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()