Files
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

141 lines
5.2 KiB
CMake

if(NOT DEFINED _TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SETUP)
if(NOT DEFINED everest-utils_SOURCE_DIR)
message(FATAL_ERROR "everest-utils not found. Did you forget to add it to your dependencies.yaml?")
endif()
set(_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SCRIPT
"${everest-utils_SOURCE_DIR}/scripts/create_snapshot.py"
)
if(NOT EXISTS "${_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SCRIPT}")
message(FATAL_ERROR "everest-utils found, but create_snapshot.py script is missing at ${_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SCRIPT}")
endif()
set(_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SETUP TRUE)
endif()
# This function creates a snapshot file and adds it
# to the given trailbook
# Parameters:
# EVEREST_WORKSPACE_DIRECTORY (required): Absolute path to the EVerest workspace
# directory
# TRAILBOOK_NAME (required): Name of the trailbook (the
# target must exist)
# OUTPUT_FILE (required): Absolute path to the output
# snapshot file
# Usage:
# trailbook_ev_create_snapshot(
# EVEREST_WORKSPACE_DIRECTORY <path_to_everest_workspace_directory>
# TRAILBOOK_NAME <trailbook_name>
# OUTPUT_FILE <absolute_path_to_output_snapshot_file>
# )
function(trailbook_ev_create_snapshot)
set(options)
set(one_value_args
EVEREST_WORKSPACE_DIRECTORY
TRAILBOOK_NAME
OUTPUT_FILE
)
set(multi_value_args)
cmake_parse_arguments(
"args"
"${options}"
"${one_value_args}"
"${multi_value_args}"
${ARGN}
)
# Parameter EVEREST_WORKSPACE_DIRECTORY
# - is required
# - must be a absolute path
# - must exist
if(NOT EVEREST_WORKSPACE_DIRECTORY)
message(FATAL_ERROR "trailbook_ev_create_snapshot: EVEREST_WORKSPACE_DIRECTORY argument is required")
endif()
if(NOT IS_ABSOLUTE "${EVEREST_WORKSPACE_DIRECTORY}")
message(FATAL_ERROR "trailbook_ev_create_snapshot: EVEREST_WORKSPACE_DIRECTORY must be an absolute path")
endif()
if(NOT EXISTS "${EVEREST_WORKSPACE_DIRECTORY}")
message(FATAL_ERROR "trailbook_ev_create_snapshot: EVEREST_WORKSPACE_DIRECTORY must exist")
endif()
# Parameter TRAILBOOK_NAME
# - is required
# - there should be a target named trailbook_<TRAILBOOK_NAME>
if(NOT args_TRAILBOOK_NAME)
message(FATAL_ERROR "trailbook_ev_create_snapshot: TRAILBOOK_NAME argument is required")
endif()
if(NOT TARGET trailbook_${args_TRAILBOOK_NAME})
message(
FATAL_ERROR
"trailbook_ev_create_snapshot: No target named trailbook_${args_TRAILBOOK_NAME} found."
" Did you forget to call add_trailbook() first?"
)
endif()
# Parameter OUTPUT_FILE
# - is required
# - must be a absolute path
if(NOT args_OUTPUT_FILE)
message(FATAL_ERROR "trailbook_ev_create_snapshot: OUTPUT_FILE argument is required")
endif()
if(NOT IS_ABSOLUTE "${args_OUTPUT_FILE}")
message(FATAL_ERROR "trailbook_ev_create_snapshot: OUTPUT_FILE must be an absolute path")
endif()
get_target_property(
TRAILBOOK_CURRENT_BINARY_DIR
trailbook_${args_TRAILBOOK_NAME}
TRAILBOOK_CURRENT_BINARY_DIR
)
get_target_property(
DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER
trailbook_${args_TRAILBOOK_NAME}
DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER
)
set(CREATE_SNAPSHOT_TEMP_DIR "${TRAILBOOK_CURRENT_BINARY_DIR}/create_snapshot_temp")
add_custom_command(
OUTPUT
${args_OUTPUT_FILE}
DEPENDS
${_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SCRIPT}
trailbook_${args_TRAILBOOK_NAME}_stage_prepare_sphinx_source_after
${DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER}
USES_TERMINAL
COMMAND
${CMAKE_COMMAND} -E rm -rf
${CREATE_SNAPSHOT_TEMP_DIR}
COMMAND
${Python3_EXECUTABLE}
${_TRAILBOOK_EXT_EVEREST_CREATE_SNAPSHOT_SCRIPT}
--working-dir ${args_EVEREST_WORKSPACE_DIRECTORY}
--temp-dir ${CREATE_SNAPSHOT_TEMP_DIR}
--allow-relative-to-working-dir
--exclude-dir build/
--exclude-dir .vscode/
--exclude-dir dist/
--exclude-dir cache/
--exclude-dir scripts/
COMMAND
${CMAKE_COMMAND} -E copy
${CREATE_SNAPSHOT_TEMP_DIR}/snapshot.yaml
${args_OUTPUT_FILE}
)
add_custom_target(
trailbook_${args_TRAILBOOK_NAME}_create_snapshot
DEPENDS
trailbook_${args_TRAILBOOK_NAME}_stage_prepare_sphinx_source_after
${DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER}
${args_OUTPUT_FILE}
COMMENT
"Target to create snapshot file ${args_OUTPUT_FILE} for trailbook ${args_TRAILBOOK_NAME}"
)
set_property(
TARGET
trailbook_${args_TRAILBOOK_NAME}
APPEND
PROPERTY
ADDITIONAL_DEPS_STAGE_BUILD_SPHINX_BEFORE
${args_OUTPUT_FILE}
trailbook_${args_TRAILBOOK_NAME}_create_snapshot
)
endfunction()