forked from wasp-os/wasp-os
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
137 lines (115 loc) · 4.34 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
export PYTHONPATH := $(PWD)/tools/nrfutil:$(PWD)/tools/intelhex:$(PYTHONPATH)
PYTHON ?= python3
PYTEST ?= pytest-3
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 \
wasp/boards/$(BOARD)/watch.py
# 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: build-$(BOARD_SAFE) wasp/boards/$(BOARD_SAFE)/watch.py
$(MAKE) -C micropython/mpy-cross
$(RM) micropython/ports/nrf/build-$(BOARD)-s132/frozen_content.c
$(MAKE) -C micropython/ports/nrf \
BOARD=$(BOARD) SD=s132 \
MICROPY_VFS_LFS2=1 \
FROZEN_MANIFEST=$(PWD)/wasp/boards/$(BOARD)/manifest.py \
USER_C_MODULES=$(PWD)/wasp/modules
$(PYTHON) -m nordicsemi dfu genpkg \
--dev-type 0x0052 \
--application micropython/ports/nrf/build-$(BOARD)-s132/firmware.hex \
build-$(BOARD)/micropython.zip
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"
docs:
$(RM) -rf docs/build/html/*
$(MAKE) -C docs html
touch docs/build/html/.nojekyll
sim:
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:
PYTHONDONTWRITEBYTECODE=1 PYTHONPATH=.:wasp/boards/simulator:wasp \
$(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))