blob: 4317b16fad48815cdcbab0c980b3507b4d90b46f [file] [log] [blame]
# Copyright 2024 Googl4 LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Support for building examples from cheriot-rtos
EXAMPLES_DIR := $(OUT)/cheriot/examples
# XXX too fragile
# Common logic for building an example
__cheriot-example:
${MAKE} \
CHERIOT_BOARD=sail \
CHERIOT_OUT_DIR="${OUT}/cheriot/examples/${EXAMPLE}" \
CHERIOT_FIRMWARE_SRC_DIR=${CHERIOT_SRC_DIR}/examples/*.${EXAMPLE} \
CHERIOT_FIRMWARE_RELEASE=$(EXAMPLES_DIR)/${EXAMPLE}/release/cheriot/cheriot/release/$(EXAMPLE) \
$(EXAMPLES_DIR)/${EXAMPLE}/release/cheriot/cheriot/release/$(EXAMPLE)
cheriot-example-hello-world:
${MAKE} EXAMPLE=hello_world __cheriot-example
cheriot-example-hello-compartment:
${MAKE} EXAMPLE=hello_compartment __cheriot-example
cheriot-example-hello-safe-compartment:
${MAKE} EXAMPLE=hello_safe_compartment __cheriot-example
cheriot-example-temporal_safety:
${MAKE} EXAMPLE=temporal_safety __cheriot-example
cheriot-example-sealing:
${MAKE} EXAMPLE=sealing __cheriot-example
cheriot-example-producer-consumer:
${MAKE} EXAMPLE=producer-consumer __cheriot-example
cheriot-example-error_handling:
${MAKE} EXAMPLE=error_handling __cheriot-example
cheriot-example-memory_safety:
${MAKE} EXAMPLE=memory_safety __cheriot-example
cheriot-example-javascript:
${MAKE} EXAMPLE=javascript __cheriot-example
## Builds firmware for all cheriot-rtos examples
cheriot-examples: cheriot-example-hello-world \
cheriot-example-hello-compartment \
cheriot-example-hello-safe-compartment \
cheriot-example-temporal_safety \
cheriot-example-sealing \
cheriot-example-producer-consumer \
cheriot-example-error_handling \
cheriot-example-memory_safety \
cheriot-example-javascript
## Cleans all build artifacts for cheriot-rtos examples
cheriot-examples-clean:
rm -rf ${EXAMPLES_DIR}
.PHONY:: cheriot-examples
.PHONY:: cheriot-example-hello-world
.PHONY:: cheriot-example-hello-compartment
.PHONY:: cheriot-example-hello-safe-compartment
.PHONY:: cheriot-example-temporal_safety
.PHONY:: cheriot-example-sealing
.PHONY:: cheriot-example-producer-consumer
.PHONY:: cheriot-example-error_handling
.PHONY:: cheriot-example-memory_safety
.PHONY:: cheriot-example-javascript