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:
181
tools/EVerest-main/cmake/trailbook/EXTENDING.md
Normal file
181
tools/EVerest-main/cmake/trailbook/EXTENDING.md
Normal file
@@ -0,0 +1,181 @@
|
||||
# Extending the trailbook package
|
||||
|
||||
The trailbook package provides a set of targets and target properties
|
||||
that can be used to hook into the build process of the trailbook documentation
|
||||
and extend it with custom functionality.
|
||||
|
||||
## Important Note
|
||||
|
||||
Since the trailbook packages work a lot with custom CMake targets and
|
||||
custom CMake commands, it is important to set dependencies correctly
|
||||
when extending the trailbook package.
|
||||
|
||||
This means that it is not sufficient to just depend on the targets
|
||||
and extend target dependencies with `add_dependencies()`. Instead,
|
||||
you should also make sure to extend the file-level dependencies. For this
|
||||
a set of custom target properties is provided that can be used
|
||||
to add additional dependencies to the custom commands used in the
|
||||
trailbook build process.
|
||||
|
||||
## Available Stages to Hook Into
|
||||
|
||||
To hook into the build process custom commands can be placed in between
|
||||
stages
|
||||
|
||||
### Hook in before stage: Prepare Sphinx Source
|
||||
|
||||
If you want to hook into the build process before the Sphinx source
|
||||
is prepared, you can define a custom command that doesn't need to
|
||||
depend on any files, but the created files and targets should be appended to
|
||||
the target list property `ADDITIONAL_DEPS_STAGE_PREPARE_SPHINX_SOURCE_BEFORE`.
|
||||
|
||||
This can be done by using the following code snippet:
|
||||
|
||||
```cmake
|
||||
# Your custom cmake code here
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
COMMAND
|
||||
<your_command_here>
|
||||
DEPENDS
|
||||
<your_dependencies_here>
|
||||
)
|
||||
|
||||
add_custom_target(
|
||||
<wrapper_target_name>
|
||||
DEPENDS
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
)
|
||||
|
||||
# Hook into the trailbook build process
|
||||
set_property(
|
||||
TARGET trailbook_<trailbook_name>
|
||||
APPEND
|
||||
PROPERTY
|
||||
ADDITIONAL_DEPS_STAGE_PREPARE_SPHINX_SOURCE_BEFORE
|
||||
<wrapper_target_name>
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
)
|
||||
```
|
||||
|
||||
* `<output_file1>`, `<output_file2>` can be any custom files created
|
||||
by your command.
|
||||
* `<wrapper_target_name>` is a custom target that
|
||||
wraps your command for example.
|
||||
* `<trailbook_name>` should be replaced with the name of your trailbook
|
||||
provided in the `add_trailbook()` function call.
|
||||
|
||||
With this target-level dependencies and file-level dependencies can be added.
|
||||
If there is a target that depends on the output files, the file-level
|
||||
dependencies should be added as well.
|
||||
|
||||
### Hook in before stage: Build Sphinx
|
||||
|
||||
If you want to hook in before the Sphinx build process starts,
|
||||
you can use the target list property `ADDITIONAL_DEPS_STAGE_BUILD_SPHINX_BEFORE`.
|
||||
and `DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER` to add file-level dependencies
|
||||
to the stage before.
|
||||
|
||||
This can be done by using the following code snippet:
|
||||
|
||||
```cmake
|
||||
# Hook into the trailbook build process after the prepare stage
|
||||
get_target_property(
|
||||
DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER
|
||||
trailbook_<trailbook_name>
|
||||
DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER
|
||||
)
|
||||
|
||||
# Your custom cmake code here
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
DEPENDS
|
||||
<your_dependencies_here>
|
||||
${DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER}
|
||||
COMMAND
|
||||
<your_command_here>
|
||||
)
|
||||
add_custom_target(
|
||||
<wrapper_target_name>
|
||||
DEPENDS
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
${DEPS_STAGE_PREPARE_SPHINX_SOURCE_AFTER}
|
||||
)
|
||||
|
||||
# Hook into the trailbook build process before the build stage
|
||||
set_property(
|
||||
TARGET trailbook_<trailbook_name>
|
||||
APPEND
|
||||
PROPERTY
|
||||
ADDITIONAL_DEPS_STAGE_BUILD_SPHINX_BEFORE
|
||||
<wrapper_target_name>
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
)
|
||||
```
|
||||
|
||||
* `<output_file1>`, `<output_file2>` can be any custom files created
|
||||
by your command.
|
||||
* `<wrapper_target_name>` is a custom target that
|
||||
wraps your command for example.
|
||||
* `<trailbook_name>` should be replaced with the name of your trailbook
|
||||
provided in the `add_trailbook()` function call.
|
||||
|
||||
With the `get_target_property()` call the file-level dependencies
|
||||
from the previous stage are retrieved and added to the custom command
|
||||
and the custom target. This ensures that the custom command is executed
|
||||
after the previous stage is completed.
|
||||
|
||||
With the `set_property()` call the custom target and the output files
|
||||
are added to the target-level dependencies of the build stage.
|
||||
This ensures that the build stage waits for the custom command
|
||||
to complete before starting the Sphinx build process.
|
||||
|
||||
### Hook in before stage: Post Process Sphinx
|
||||
|
||||
This can be done analogously to the previous stage, but using the target list property
|
||||
`ADDITIONAL_DEPS_STAGE_POSTPROCESS_SPHINX_BEFORE` and `DEPS_STAGE_BUILD_SPHINX_AFTER`.
|
||||
|
||||
```cmake
|
||||
# Hook into the trailbook build process after the build stage
|
||||
get_target_property(
|
||||
DEPS_STAGE_BUILD_SPHINX_AFTER
|
||||
trailbook_<trailbook_name>
|
||||
DEPS_STAGE_BUILD_SPHINX_AFTER
|
||||
)
|
||||
# Your custom cmake code here
|
||||
add_custom_command(
|
||||
OUTPUT
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
DEPENDS
|
||||
<your_dependencies_here>
|
||||
${DEPS_STAGE_BUILD_SPHINX_AFTER}
|
||||
COMMAND
|
||||
<your_command_here>
|
||||
)
|
||||
add_custom_target(
|
||||
<wrapper_target_name>
|
||||
DEPENDS
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
${DEPS_STAGE_BUILD_SPHINX_AFTER}
|
||||
)
|
||||
# Hook into the trailbook build process before the post process stage
|
||||
set_property(
|
||||
TARGET trailbook_<trailbook_name>
|
||||
APPEND
|
||||
PROPERTY
|
||||
ADDITIONAL_DEPS_STAGE_POSTPROCESS_SPHINX_BEFORE
|
||||
<wrapper_target_name>
|
||||
<output_file1>
|
||||
<output_file2>
|
||||
)
|
||||
```
|
||||
Reference in New Issue
Block a user