sencha: hack band-aid for mpact sim renode integration Bug: 333891662 Change-Id: I120f6309c82657be684ea5aad2a3af1af516d566
diff --git a/platforms/sencha/sim.mk b/platforms/sencha/sim.mk index eac860f..5ff05ee 100644 --- a/platforms/sencha/sim.mk +++ b/platforms/sencha/sim.mk
@@ -15,6 +15,9 @@ EXT_FLASH_DEBUG=$(CHERIOT_OUT_DEBUG)/ext_flash.tar EXT_FLASH_RELEASE=$(CHERIOT_OUT_RELEASE)/ext_flash.tar +CHERIOT_SIM_SRC_DIR := $(ROOTDIR)/sim/cheriot +CHERIOT_SIM_OUT_DIR := $(OUT)/cheriot/sim + TMP_DEBUG=$(CHERIOT_OUT_DEBUG)/tmp TMP_RELEASE=$(CHERIOT_OUT_RELEASE)/tmp @@ -66,7 +69,7 @@ # # This is the default target for the build system, and is generally what you # need for day-to-day work on the software side of Shodan. -simulate: renode kelvin_sim multihart_boot_rom ext_flash_release +simulate: renode cheriot_sim kelvin_sim multihart_boot_rom ext_flash_release $(RENODE_CMD) -e "\ \$$repl_file = @${SENCHA_REPL}; \ \$$tar = @$(EXT_FLASH_RELEASE); \ @@ -79,7 +82,7 @@ # This top-level target does the same job as `simulate`, but instead of # unhalting the CPUs and starting the system, this alternate target only unhalts # cpu0, and uses the debug build of TockOS from the `matcha_tock_debug` target. -simulate-debug: renode kelvin_sim multihart_boot_rom ext_flash_debug +simulate-debug: renode cheriot_sim kelvin_sim multihart_boot_rom ext_flash_debug $(RENODE_CMD) -e "\ \$$repl_file = @${SENCHA_REPL}; \ \$$tar = @$(EXT_FLASH_DEBUG); \ @@ -93,11 +96,41 @@ # unhalting the CPUs and starting the system, this alternate target starts # renode with no CPUs unhalted, allowing for GDB to be used for early system # start. -debug-simulation: renode kelvin_sim multihart_boot_rom ext_flash_debug +debug-simulation: renode cheriot_sim kelvin_sim multihart_boot_rom ext_flash_debug $(RENODE_CMD) -e "\ \$$repl_file = @${SENCHA_REPL}; \ \$$tar = @$(EXT_FLASH_DEBUG); \ \$$sc_bin =@$(TMP_DEBUG)/matcha-tock-bundle.bin; \ $(PORT_PRESTART_CMDS) i @${SENCHA_RESC_DEBUG}; start" +$(CHERIOT_SIM_OUT_DIR): + mkdir -p "$(CHERIOT_SIM_OUT_DIR)" + +## Build CHERIoT ISS +# +# Build mpact-sim-based CHERIoT ISS with bazel, and copy it to out/ +# Use /tmp as the bazel tmpfs to unblock CI +cheriot_sim_notyet: | $(CHERIOT_SIM_OUT_DIR) + cd "$(CHERIOT_SIM_SRC_DIR)" && \ + bazel build --sandbox_tmpfs_path=/tmp //sim:cheriot_sim \ + //sim/renode:renode_cheriot + cd "$(CHERIOT_SIM_SRC_DIR)/bazel-bin" && \ + cp -f sim/cheriot_sim "$(CHERIOT_SIM_OUT_DIR)" && \ + cp -f sim/renode/librenode_mpact_cheriot.so "$(CHERIOT_SIM_OUT_DIR)" + +## Clean CHERIoT ISS +# +# Clean the CHERIoT ISS +cheriot_sim_clean_notyet: + cd "$(CHERIOT_SIM_SRC_DIR)" && \ + bazel clean --expunge + rm -rf $(CHERIOT_SIM_OUT_DIR) + +# TODO(sleffler): temporary hack until the simulator source is integrated +cheriot_sim: | $(CHERIOT_SIM_OUT_DIR) + cp -f ${CACHE}/cheriot-tools/librenode_mpact_cheriot.so "$(CHERIOT_SIM_OUT_DIR)" +cheriot_sim_clean: + rm -rf $(CHERIOT_SIM_OUT_DIR) + .PHONY:: sim_configs clean_sim_configs simulate simulate-debug debug-simulation +.PHONY:: cheriot_sim cheriot_sim_clean