diff --git a/Makefile.include b/Makefile.include index 01648d3573..7b0295605e 100644 --- a/Makefile.include +++ b/Makefile.include @@ -654,7 +654,7 @@ HEXFILE ?= $(ELFFILE:.elf=.hex) BINFILE ?= $(ELFFILE:.elf=.bin) MAPFILE ?= $(ELFFILE:.elf=.map) -ifneq (,$(filter suit, $(USEMODULE))) +ifneq (,$(filter suit,$(USEMODULE))) include $(RIOTMAKE)/suit.base.inc.mk endif @@ -663,6 +663,11 @@ endif # It should be included after defining 'BINFILE' for 'riotboot.bin' handling. include $(RIOTMAKE)/boot/riotboot.mk +# include suit targets +ifneq (,$(filter suit,$(USEMODULE))) + include $(RIOTMAKE)/suit.inc.mk +endif + # Targets to get given file elffile: $(ELFFILE) hexfile: $(HEXFILE) diff --git a/makefiles/boot/riotboot.mk b/makefiles/boot/riotboot.mk index 1567d72e26..94c6ed1f01 100644 --- a/makefiles/boot/riotboot.mk +++ b/makefiles/boot/riotboot.mk @@ -154,11 +154,6 @@ riotboot/flash: riotboot/flash-slot0 riotboot/flash-bootloader # It also makes 'flash' and 'flash-only' work without specific command. FLASHFILE = $(RIOTBOOT_EXTENDED_BIN) -# include suit targets -ifneq (,$(filter suit, $(USEMODULE))) - include $(RIOTMAKE)/suit.inc.mk -endif - else riotboot: $(Q)echo "error: riotboot feature not selected! (try FEATURES_REQUIRED += riotboot)" diff --git a/makefiles/suit.inc.mk b/makefiles/suit.inc.mk index 2f4a141e65..bb196d4240 100644 --- a/makefiles/suit.inc.mk +++ b/makefiles/suit.inc.mk @@ -10,13 +10,14 @@ SUIT_COAP_ROOT ?= coap://$(SUIT_COAP_SERVER)/$(SUIT_COAP_BASEPATH) SUIT_COAP_FSROOT ?= $(RIOTBASE)/coaproot # -SUIT_MANIFEST ?= $(BINDIR_APP)-riot.suit.$(APP_VER).bin -SUIT_MANIFEST_LATEST ?= $(BINDIR_APP)-riot.suit.latest.bin -SUIT_MANIFEST_SIGNED ?= $(BINDIR_APP)-riot.suit_signed.$(APP_VER).bin -SUIT_MANIFEST_SIGNED_LATEST ?= $(BINDIR_APP)-riot.suit_signed.latest.bin +SUIT_MANIFEST_BASENAME ?= riot.suit +SUIT_MANIFEST ?= $(BINDIR_APP)-$(SUIT_MANIFEST_BASENAME).$(APP_VER).bin +SUIT_MANIFEST_LATEST ?= $(BINDIR_APP)-$(SUIT_MANIFEST_BASENAME).latest.bin +SUIT_MANIFEST_SIGNED ?= $(BINDIR_APP)-$(SUIT_MANIFEST_BASENAME)_signed.$(APP_VER).bin +SUIT_MANIFEST_SIGNED_LATEST ?= $(BINDIR_APP)-$(SUIT_MANIFEST_BASENAME)_signed.latest.bin SUIT_NOTIFY_VERSION ?= latest -SUIT_NOTIFY_MANIFEST ?= $(APPLICATION)-riot.suit_signed.$(SUIT_NOTIFY_VERSION).bin +SUIT_NOTIFY_MANIFEST ?= $(APPLICATION)-$(SUIT_MANIFEST_BASENAME)_signed.$(SUIT_NOTIFY_VERSION).bin # Long manifest names require more buffer space when parsing export CFLAGS += -DCONFIG_SOCK_URLPATH_MAXLEN=128 @@ -25,22 +26,26 @@ SUIT_VENDOR ?= "riot-os.org" SUIT_SEQNR ?= $(APP_VER) SUIT_CLASS ?= $(BOARD) +ifneq (,$(filter riotboot,$(USEMODULE))) + SUIT_MANIFEST_PAYLOADS ?= $(SLOT0_RIOT_BIN) $(SLOT1_RIOT_BIN) + SUIT_MANIFEST_SLOTFILES ?= $(SLOT0_RIOT_BIN):$(SLOT0_OFFSET) \ + $(SLOT1_RIOT_BIN):$(SLOT1_OFFSET) +endif # -$(SUIT_MANIFEST): $(SLOT0_RIOT_BIN) $(SLOT1_RIOT_BIN) + +$(SUIT_MANIFEST): $(SUIT_MANIFEST_PAYLOADS) $(Q)$(RIOTBASE)/dist/tools/suit/gen_manifest.py \ --urlroot $(SUIT_COAP_ROOT) \ --seqnr $(SUIT_SEQNR) \ --uuid-vendor $(SUIT_VENDOR) \ --uuid-class $(SUIT_CLASS) \ -o $@.tmp \ - $(SLOT0_RIOT_BIN):$(SLOT0_OFFSET) \ - $(SLOT1_RIOT_BIN):$(SLOT1_OFFSET) + $(SUIT_MANIFEST_SLOTFILES) $(Q)$(SUIT_TOOL) create -f suit -i $@.tmp -o $@ $(Q)rm -f $@.tmp - $(SUIT_MANIFEST_SIGNED): $(SUIT_MANIFEST) $(SUIT_SEC) $(Q)$(SUIT_TOOL) sign -k $(SUIT_SEC) -m $(SUIT_MANIFEST) -o $@ @@ -57,7 +62,7 @@ SUIT_MANIFESTS := $(SUIT_MANIFEST) \ suit/manifest: $(SUIT_MANIFESTS) -suit/publish: $(SUIT_MANIFESTS) $(SLOT0_RIOT_BIN) $(SLOT1_RIOT_BIN) +suit/publish: $(SUIT_MANIFESTS) $(SUIT_MANIFEST_PAYLOADS) $(Q)mkdir -p $(SUIT_COAP_FSROOT)/$(SUIT_COAP_BASEPATH) $(Q)cp $^ $(SUIT_COAP_FSROOT)/$(SUIT_COAP_BASEPATH) $(Q)for file in $^; do \