1
1
include ../py/mkenv.mk
2
2
3
- CROSS = 0
4
3
# clang has slightly different options to GCC
5
4
CLANG = 1
6
5
EMSCRIPTEN = 1
@@ -11,54 +10,33 @@ QSTR_DEFS = qstrdefsport.h
11
10
# include py core make definitions
12
11
include ../py/py.mk
13
12
14
- ifeq ($(CROSS ) , 1)
15
- CROSS_COMPILE = arm-none-eabi-
16
- endif
17
-
18
- ifeq ($(EMSCRIPTEN ) , 1)
19
- CC = emcc -g4
13
+ CC = emcc
20
14
CPP = gcc -E
21
15
CLANG = 1
22
16
SIZE = echo
23
- LD = emcc -g4
24
- endif
17
+ LD = emcc
25
18
26
19
INC += -I.
27
20
INC += -I..
28
- INC += -I../lib/mp-readline
29
- INC += -I../stmhal
30
21
INC += -I$(BUILD )
31
22
32
- ifeq ($(CROSS ) , 1)
33
- DFU = ../tools/dfu.py
34
- PYDFU = ../tools/pydfu.py
35
- CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mabi=aapcs-linux -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -fsingle-precision-constant -Wdouble-promotion
36
- CFLAGS = $(INC ) -Wall -Werror -ansi -std=gnu99 -nostdlib $(CFLAGS_CORTEX_M4 ) $(COPT )
37
- else
38
- CFLAGS = -m32 $(INC ) -Wall -Werror -ansi -std=gnu99 $(COPT )
39
- endif
23
+ CFLAGS = $(INC ) -Wall -Werror -ansi -std=gnu99 $(COPT )
40
24
41
25
# Debugging/Optimization
42
26
ifeq ($(DEBUG ) , 1)
43
27
CFLAGS += -O0
28
+ CC += -g4
29
+ LD += -g4
44
30
else
45
31
CFLAGS += -Os -DNDEBUG
46
32
endif
47
33
48
34
CFLAGS += -D MICROPY_NLR_SETJMP=1
49
35
CFLAGS += -D MICROPY_USE_INTERNAL_PRINTF=0
50
36
51
- ifeq ($(CROSS ) , 1)
52
- LDFLAGS = -nostdlib -T stm32f405.ld -Map=$@ .map --cref
53
- else
54
- ifeq ($(CLANG ) , 1)
55
37
LD = $(CC )
56
- LDFLAGS = -m32 -Wl,-map,$@ .map -Wl,-dead_strip -Wl,-no_pie -s EXPORTED_FUNCTIONS="['_mp_js_init', '_mp_js_run']"
57
- else
58
- LD = gcc
59
- LDFLAGS = -m32 -Wl,-Map=$@ .map,--cref
60
- endif
61
- endif
38
+ LDFLAGS = -Wl,-map,$@ .map -Wl,-dead_strip -Wl,-no_pie -s EXPORTED_FUNCTIONS="['_mp_js_init', '_mp_js_run']"
39
+
62
40
LIBS =
63
41
64
42
SRC_C = \
@@ -71,50 +49,17 @@ SRC_C = \
71
49
72
50
OBJ = $(PY_O ) $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) )
73
51
74
- ifeq ($(CROSS ) , 1)
75
- all : $(BUILD ) /firmware.dfu
76
- else
77
- ifeq ($(EMSCRIPTEN ) , 1)
78
- all : $(BUILD ) /firmware.js
79
- else
80
- all : $(BUILD ) /firmware.elf
81
- endif
82
- endif
52
+ all : $(BUILD ) /micropython.js
83
53
84
54
$(BUILD ) /_frozen_mpy.c : frozentest.mpy $(BUILD ) /genhdr/qstrdefs.generated.h
85
55
$(ECHO ) " MISC freezing bytecode"
86
56
$(Q ) ../tools/mpy-tool.py -f -q $(BUILD ) /genhdr/qstrdefs.preprocessed.h -mlongint-impl=none $< > $@
87
57
88
- $(BUILD ) /firmware.elf : $(OBJ )
89
- $(ECHO ) " LINK $@ "
90
- $(Q )$(LD ) $(LDFLAGS ) -o $@ $^ $(LIBS )
91
- $(Q )$(SIZE ) $@
92
-
93
- $(BUILD ) /firmware.js : $(OBJ )
58
+ $(BUILD ) /micropython.js : $(OBJ )
94
59
$(ECHO ) " LINK $@ "
95
60
$(Q )$(LD ) $(LDFLAGS ) -o $@ $^ $(LIBS )
96
61
97
- $(BUILD ) /firmware.bin : $(BUILD ) /firmware.elf
98
- $(Q )$(OBJCOPY ) -O binary -j .isr_vector -j .text -j .data $^ $(BUILD ) /firmware.bin
99
-
100
- $(BUILD ) /firmware.dfu : $(BUILD ) /firmware.bin
101
- $(ECHO ) " Create $@ "
102
- $(Q )$(PYTHON ) $(DFU ) -b 0x08000000:$(BUILD ) /firmware.bin $@
103
-
104
- deploy : $(BUILD ) /firmware.dfu
105
- $(ECHO ) " Writing $< to the board"
106
- $(Q )$(PYTHON ) $(PYDFU ) -u $<
107
-
108
- # Run emulation build on a POSIX system with suitable terminal settings
109
62
run :
110
- stty raw opost -echo
111
- build/firmware.elf
112
- @echo Resetting terminal...
113
- # This sleep is useful to spot segfaults
114
- sleep 1
115
- reset
116
-
117
- test : $(BUILD ) /firmware.elf
118
- $(Q ) /bin/echo -e " print('hello world!', list(x+1 for x in range(10)), end='eol\\\\ n')\\ r\\ n\\ x04" | $(BUILD ) /firmware.elf | tail -n2 | grep " ^hello world! \\ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10\\ ]eol"
63
+ node repl.js
119
64
120
65
include ../py/mkrules.mk
0 commit comments