Files
micropython/ports/alif/Makefile
Alessandro Gatti 2554e4172f alif/Makefile: Enable job server support on Ubuntu LTS.
This commit modifies the Alif port's Makefile to propagate to child make
tasks the number of parallel jobs to run.

On Ubuntu LTS 24.04, building the Alif port passing a parallel jobs
number to make's command line will result in the command emitting this
warning:

make[1]: warning: jobserver unavailable: using -j1.  Add '+' to parent
                  make rule.

And building the two cores' firmware images using one compile job at a
time instead of the number provided to the command line.

Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
2026-01-04 16:42:50 +11:00

131 lines
3.4 KiB
Makefile

BOARD ?= ALIF_ENSEMBLE
BOARD_DIR ?= boards/$(BOARD)
BUILD ?= build-$(BOARD)
MCU_CORE ?= M55_HP
GIT_SUBMODULES += lib/tinyusb lib/alif_ensemble-cmsis-dfp lib/alif-security-toolkit
PORT ?= /dev/ttyACM0
ALIF_TOOLS ?= ../../lib/alif-security-toolkit/toolkit
JLINK_CMD_PREFIX = \
ExitOnError 1\n\
Device $(JLINK_DEV)\n\
SelectInterface SWD\n\
Speed auto\n\
Connect\n\
Reset\n\
ShowHWStatus\n
JLINK_CMD_SUFFIX = \
Reset\n\
Exit
ALIF_TOC_CONFIG = alif_cfg.json
ALIF_TOC_BIN = $(BUILD)/firmware.toc.bin
ALIF_TOC_APPS = $(BUILD)/$(ALIF_TOC_CONFIG)
ALIF_TOC_CFLAGS += -DTOC_CFG_FILE=$(ALIF_TOOLKIT_CFG_FILE)
ifeq ($(MCU_CORE),M55_HP)
ALIF_TOC_CFLAGS += -DTOC_CORE_M55_HP_APP=1
ALIF_TOC_APPS += $(BUILD)/M55_HP/firmware.bin
JLINK_CMD = '\
$(JLINK_CMD_PREFIX)\
LoadFile "$(BUILD)/M55_HP/firmware.bin",0x80020000\n\
$(JLINK_CMD_SUFFIX)'
else ifeq ($(MCU_CORE),M55_HE)
ALIF_TOC_CFLAGS += -DTOC_CORE_M55_HE_APP=1
ALIF_TOC_APPS += $(BUILD)/M55_HE/firmware.bin
JLINK_CMD = '\
$(JLINK_CMD_PREFIX)\
LoadFile "$(BUILD)/M55_HE/firmware.bin",0x80320000\n\
$(JLINK_CMD_SUFFIX)'
else ifeq ($(MCU_CORE),M55_DUAL)
ALIF_TOC_CFLAGS += -DTOC_CORE_M55_HP_APP=1
ALIF_TOC_CFLAGS += -DTOC_CORE_M55_HE_APP=1
ALIF_TOC_APPS += $(BUILD)/M55_HP/firmware.bin $(BUILD)/M55_HE/firmware.bin
JLINK_CMD = '\
$(JLINK_CMD_PREFIX)\
LoadFile "$(BUILD)/M55_HP/firmware.bin",0x80020000\n\
LoadFile "$(BUILD)/M55_HE/firmware.bin",0x80320000\n\
$(JLINK_CMD_SUFFIX)'
else
$(error Invalid MCU core specified))
endif
include ../../py/mkenv.mk
include mpconfigport.mk
include $(BOARD_DIR)/mpconfigboard.mk
# include py core make definitions
include $(TOP)/py/py.mk
include $(TOP)/extmod/extmod.mk
################################################################################
# Main targets
.PHONY: all
all: $(BUILD)/firmware.zip
# Force make commands to run the targets every time
# regardless of whether firmware.toc.bin already exists
# to detect changes in the source files and rebuild.
.PHONY: $(BUILD)/M55_HE/firmware.bin
.PHONY: $(BUILD)/M55_HP/firmware.bin
$(BUILD):
$(MKDIR) -p $@
$(BUILD)/M55_HP/firmware.bin:
$(MAKE) -f alif.mk BUILD=$(BUILD)/M55_HP MCU_CORE=M55_HP MICROPY_PY_OPENAMP_MODE=0
$(BUILD)/M55_HE/firmware.bin:
$(MAKE) -f alif.mk BUILD=$(BUILD)/M55_HE MCU_CORE=M55_HE MICROPY_PY_OPENAMP_MODE=1
$(BUILD)/$(ALIF_TOC_CONFIG): mcu/$(ALIF_TOC_CONFIG).in | $(BUILD)
$(ECHO) "Preprocess toc config $@"
$(Q)$(CPP) -P -E $(ALIF_TOC_CFLAGS) - < mcu/$(ALIF_TOC_CONFIG).in > $@
$(ALIF_TOC_BIN): $(ALIF_TOC_APPS)
$(Q)$(PYTHON) $(ALIF_TOOLS)/app-gen-toc.py \
--filename $(abspath $(BUILD)/$(ALIF_TOC_CONFIG)) \
--output-dir $(BUILD) \
--firmware-dir $(BUILD) \
--output $@
$(BUILD)/firmware.zip: $(ALIF_TOC_BIN) $(ALIF_TOC_APPS)
$(ECHO) "Create $@"
$(Q)$(ZIP) -q - $(BUILD)/application_package.ds $^ > $@
.PHONY: deploy
deploy: $(ALIF_TOC_BIN)
$(ECHO) "Writing $< to the board"
$(Q)$(PYTHON) $(ALIF_TOOLS)/app-write-mram.py \
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
--port $(PORT) \
--pad \
--images file:$(BUILD)/application_package.ds
.PHONY: deploy-jlink
deploy-jlink: $(ALIF_TOC_APPS)
$(Q)echo -e $(JLINK_CMD) | $(JLINK_EXE)
.PHONY: maintenance
maintenance:
$(Q)$(PYTHON) $(ALIF_TOOLS)/maintenance.py \
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
--port $(PORT)
.PHONY: update-system-package
update-system-package:
$(Q)$(PYTHON) $(ALIF_TOOLS)/updateSystemPackage.py \
--cfg-part $(ALIF_TOOLKIT_CFG_PART) \
--port $(PORT)
include $(TOP)/py/mkrules.mk