1
0
Fork 0
wasp-os/Makefile

173 lines
5.7 KiB
Makefile
Raw Normal View History

export PYTHONPATH := $(CURDIR)/tools/nrfutil:$(CURDIR)/tools/intelhex:$(PYTHONPATH)
PYTHON ?= python3
PYTEST ?= $(PYTHON) -m pytest
all : bootloader reloader micropython
# If BOARD is undefined then set it up so that expanding it issues an
# error. That ensures that rules that expand BOARD will be automatically
# disabled (and give a useful error message) but it creates an additional
# problem which is that we must never unconditionally expand BOARD.
# We workaround this by using BOARD_SAFE for every unconditional
# expansion.
ifdef BOARD
BOARD_SAFE = $(BOARD)
endif
BOARD ?= $(error Please set BOARD=)
VERSION ?= $(patsubst v%,%,$(shell git describe --tags))
clean :
$(RM) -r \
bootloader/_build-$(BOARD)_nrf52832 \
reloader/build-$(BOARD) reloader/src/boards/$(BOARD)/bootloader.h \
micropython/mpy-cross/build \
micropython/ports/nrf/build-$(BOARD)-s132 \
apps/*.mpy \
build-$(BOARD) \
wasp/boards/$(BOARD)/watch.py \
wasp/apps/user \
wasp/boards/manifest_user_apps.py \
wasp/appregistry.py
find . -type f -name '*.py[co]' -delete -o -type d -name __pycache__ -delete
# Avoid a recursive update... it grabs far too much
submodules :
git submodule update --init
(cd bootloader; git submodule update --init)
(cd micropython/ports/nrf; $(MAKE) submodules)
(cd reloader; git submodule update --init)
(cd wasp/modules/bma42x-upy; git submodule update --init)
bootloader: build-$(BOARD_SAFE)
$(RM) bootloader/_build-$(BOARD)_nrf52832//$(BOARD)_nrf52832_bootloader-*-nosd.hex
$(MAKE) -C bootloader/ BOARD=$(BOARD)_nrf52832 all genhex
$(PYTHON) tools/hexmerge.py \
bootloader/_build-$(BOARD)_nrf52832/$(BOARD)_nrf52832_bootloader-*-nosd.hex \
bootloader/lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex \
-o build-$(BOARD)/bootloader.hex
$(PYTHON) tools/hex2c.py build-$(BOARD)/bootloader.hex > \
reloader/src/boards/$(BOARD)/bootloader.h
$(PYTHON) -m nordicsemi dfu genpkg \
--bootloader bootloader/_build-$(BOARD)_nrf52832//$(BOARD)_nrf52832_bootloader-*-nosd.hex \
--softdevice bootloader/lib/softdevice/s132_nrf52_6.1.1/s132_nrf52_6.1.1_softdevice.hex \
build-$(BOARD)/bootloader-daflasher.zip
reloader: bootloader build-$(BOARD_SAFE)
$(MAKE) -C reloader/ BOARD=$(BOARD)
cp reloader/build-$(BOARD)/reloader*.zip build-$(BOARD)
softdevice:
micropython/ports/nrf/drivers/bluetooth/download_ble_stack.sh
wasp/boards/$(BOARD_SAFE)/watch.py : wasp/boards/$(BOARD_SAFE)/watch.py.in
(cd wasp; ../tools/preprocess.py boards/$(BOARD)/watch.py.in > boards/$(BOARD)/watch.py) \
|| ($(RM) wasp/boards/$(BOARD)/watch.py; false)
micropython/mpy-cross/mpy-cross:
$(MAKE) -C micropython/mpy-cross \
CWARN="-Wall -Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
micropython: build-$(BOARD_SAFE) wasp/boards/manifest_user_apps.py wasp/boards/$(BOARD_SAFE)/watch.py micropython/mpy-cross/mpy-cross
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
$(MAKE) -C micropython/ports/nrf \
BOARD=$(BOARD) SD=s132 \
2020-02-09 20:47:57 +01:00
MICROPY_VFS_LFS2=1 \
FROZEN_MANIFEST=$(CURDIR)/wasp/boards/$(BOARD)/manifest.py \
USER_C_MODULES=$(CURDIR)/wasp/modules \
COPT="-Wno-error"
# ^ Disable some Werrors from GCC>=13, specifically
# - dangling-pointer
# - enum-int-mismatch
# TODO update micropython and remove.
# https://github.com/wasp-os/wasp-os/issues/493
$(PYTHON) -m nordicsemi dfu genpkg \
--dev-type 0x0052 \
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \
build-$(BOARD)/micropython.zip
wasp/boards/manifest_user_apps.py: wasp.toml
$(RM) -r \
wasp/apps/user \
wasp/boards/manifest_user_apps.py \
wasp/appregistry.py
mkdir -p wasp/apps/user
$(PYTHON) tools/configure_wasp_apps.py wasp.toml
build-$(BOARD_SAFE):
mkdir -p build-$(BOARD)
dfu:
$(PYTHON) -m nordicsemi dfu serial --package micropython.zip --port /dev/ttyACM0
flash:
pyocd erase -t nrf52 --mass
pyocd flash -t nrf52 bootloader.hex
debug:
arm-none-eabi-gdb \
bootloader/_build-$(BOARD)_nrf52832/$(BOARD)_nrf52832_bootloader-*-nosd.out \
-ex "target extended-remote /dev/ttyACM0" \
-ex "monitor swdp_scan" \
-ex "attach 1" \
-ex "load"
apps/%.mpy: apps/%.py micropython/mpy-cross/mpy-cross
./micropython/mpy-cross/mpy-cross -mno-unicode -march=armv7m $<
APPS_PY=$(wildcard apps/*.py)
APPS_MPY=$(APPS_PY:%.py=%.mpy)
.PHONY: apps
apps: $(APPS_MPY)
docs: wasp/boards/manifest_user_apps.py
$(RM) -rf docs/build/html/*
$(MAKE) -C docs html
touch docs/build/html/.nojekyll
sim: wasp/boards/manifest_user_apps.py
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \
$(PYTHON) -i wasp/boards/simulator/main.py
ifeq ("$(origin K)", "command line")
PYTEST_RESTRICT = -k '$(K)'
endif
check: wasp/boards/manifest_user_apps.py
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp:wasp/apps/system \
$(PYTEST) -v -W ignore $(PYTEST_RESTRICT) wasp/boards/simulator
.PHONY: bootloader reloader docs micropython
dist: DIST=../wasp-os-$(VERSION)
dist: k9
k9: p8
p8: pinetime
pinetime : mrproper
mrproper :
$(RM) -r \
$(DIST) build-* \
bootloader/_build-* \
reloader/build-* \
reloader/src/boards/*/bootloader.h \
micropython/mpy-cross/build \
micropython/ports/nrf/build-*
k9 p8 pinetime:
$(RM) wasp/boards/$@/watch.py
$(MAKE) BOARD=$@ all
dist: docs
mkdir -p $(DIST)/docs
cp COPYING COPYING.LGPL README.rst $(DIST)
cp -r docs/build/html/* $(DIST)/docs
cp -r build-*/ $(DIST)
cp -r tools/ $(DIST)
(cd $(DIST); ln -s docs/_images/ res)
find $(DIST) -name __pycache__ | xargs $(RM) -r
tar -C .. -zcf $(DIST).tar.gz $(notdir $(DIST))
(cd ..; zip -9r $(DIST).zip $(notdir $(DIST)))