cheriot: Added testbench make rules
- Added a new target, cheriot-testbench, to run the cheriot supplied testbench on a standalone cheriot configuration.
- Added a new variable CHERIOT_BOARD to specify the board being used, with default equal to $PLATFORM
- Modified CHERIOT_FIRMWARE_RELEASE target to be generic (by using CHERIOT_BOARD) so that different applications with different boards can be created using the same Make rule
Bypass-Presubmit-Reason: no sencha CI tests
Change-Id: I83659c50ef7f53bafd050b2d9c0ff70eaa448780
diff --git a/platforms/sencha/cheriot.mk b/platforms/sencha/cheriot.mk
index 40a8e2b..150fd32 100644
--- a/platforms/sencha/cheriot.mk
+++ b/platforms/sencha/cheriot.mk
@@ -30,11 +30,15 @@
CHERIOT_OUT_DEBUG := $(CHERIOT_OUT_DIR)/debug
CHERIOT_OUT_RELEASE := $(CHERIOT_OUT_DIR)/release
+CHERIOT_BOARD := ${PLATFORM}
+
CHERIOT_FIRMWARE_DEBUG := $(CHERIOT_OUT_DEBUG)/cheriot/cheriot/release/${CHERIOT_FIRMWARE}-firmware
# XXX debug builds don't work atm
#CHERIOT_FIRMWARE_DEBUG := $(CHERIOT_OUT_DEBUG)/cheriot/cheriot/debug/${CHERIOT_FIRMWARE}-firmware
CHERIOT_FIRMWARE_RELEASE := $(CHERIOT_OUT_RELEASE)/cheriot/cheriot/release/${CHERIOT_FIRMWARE}-firmware
+CHERIOT_TEST := $(CHERIOT_OUT_RELEASE)/cheriot/cheriot/release/test-suite
+
# TODO: add CHERIOT_FIRMWARE_SRC_DIR (not currently defined in time to use here)
CHERIOT_SOURCES := $(shell find $(CHERIOT_SRC_DIR) \(\
-name \*.rs -or \
@@ -113,7 +117,7 @@
xmake config \
-o ${CHERIOT_OUT_DEBUG} \
--sdk=${ROOTDIR}/cache/cheriot-tools \
- --board=${PLATFORM} \
+ --board=${CHERIOT_BOARD} \
${CHERIOT_DEBUG_CONFIG_OPTIONS} && \
xmake build
@@ -126,18 +130,27 @@
xmake config \
-o ${CHERIOT_OUT_RELEASE} \
--sdk=${ROOTDIR}/cache/cheriot-tools \
- --board=${PLATFORM} \
+ --board=${CHERIOT_BOARD} \
${CHERIOT_RELEASE_CONFIG_OPTIONS} && \
xmake build
## Generates CHERIoT build artifacts setup for release
cheriot-bundle-release: $(CHERIOT_FIRMWARE_RELEASE)
+## Generates CHERIoT provided test-suite binary
+cheriot-test:
+ ${MAKE} \
+ CHERIOT_BOARD=sail \
+ CHERIOT_FIRMWARE_SRC_DIR=${CHERIOT_SRC_DIR}/tests \
+ CHERIOT_FIRMWARE_RELEASE=$(CHERIOT_TEST) \
+ ${CHERIOT_TEST}
+
## Generates both debug & release CHERIoT build artifacts
cheriot: cheriot-bundle-debug cheriot-bundle-release
.PHONY:: cheriot cheriot_check cheriot-clean
.PHONY:: cheriot-bundle-debug cheriot-bundle-release
+.PHONY:: cheriot-test
.PHONY:: cheriot-builtins-debug cheriot-builtins-release
.PHONY:: cheriot-gen-headers cheriot-clean-headers
.PHONY:: cheriot-build-debug-prepare cheriot-build-release-prepare
diff --git a/platforms/sencha/sim.mk b/platforms/sencha/sim.mk
index c789e5b..2347e76 100644
--- a/platforms/sencha/sim.mk
+++ b/platforms/sencha/sim.mk
@@ -58,9 +58,16 @@
# XXX the same for now
SENCHA_RESC_DEBUG=sim/config/sencha.resc
SENCHA_RESC_RELEASE=sim/config/sencha.resc
+CHERIOT_RESC_RELEASE=sim/config/cheriot.resc
SENCHA_REPL=sim/config/platforms/sencha.repl
+## Run the testbench in standalone cheriot
+cheriot-testbench: renode cheriot_sim $(CHERIOT_TEST)
+ $(RENODE_CMD) -e "\
+ i @${CHERIOT_RESC_RELEASE}; \
+ start"
+
## Launches an end-to-end build of the system and starts Renode
#
# This top-level target triggers the `matcha_tock_release`, `cheriot`, `renode`,