1+ # define main target
2+ all : all2
3+
4+ # include py core make definitions
5+ include ../py/py.mk
6+
7+ # program for deletion
8+ RM = /bin/rm
9+
110ifeq ($(ARDUINO ) ,)
211$(error Please define ARDUINO (where TeensyDuino is installed))
312endif
413TOOLS_PATH = $(ARDUINO ) /hardware/tools
514COMPILER_PATH = $(TOOLS_PATH ) /arm-none-eabi/bin
615CORE_PATH = $(ARDUINO ) /hardware/teensy/cores/teensy3
7-
8- PYSRC =../py
9- BUILD =build
16+ TARGET =TEENSY
1017
1118AS = $(COMPILER_PATH ) /arm-none-eabi-as
1219CC = $(COMPILER_PATH ) /arm-none-eabi-gcc
1320LD = $(COMPILER_PATH ) /arm-none-eabi-ld
1421OBJCOPY = $(COMPILER_PATH ) /arm-none-eabi-objcopy
1522SIZE = $(COMPILER_PATH ) /arm-none-eabi-size
1623
17- CFLAGS_TEENSY = -DF_CPU=96000000 -DUSB_SERIAL -DLAYOUT_US_ENGLISH - D__MK20DX256__
24+ CFLAGS_TEENSY = -DF_CPU=96000000 -DUSB_SERIAL -D__MK20DX256__
1825CFLAGS_CORTEX_M4 = -mthumb -mtune=cortex-m4 -mcpu=cortex-m4 -fsingle-precision-constant -Wdouble-promotion $(CFLAGS_TEENSY )
19- CFLAGS = -I. -I$(PYSRC ) -I$(CORE_PATH ) -Wall -ansi -std=gnu99 -Os -DNDEBUG $(CFLAGS_CORTEX_M4 )
26+ CFLAGS = -I. -I$(PY_SRC ) -I$(CORE_PATH ) -Wall -ansi -std=gnu99 -Os -DNDEBUG $(CFLAGS_CORTEX_M4 ) -D $( TARGET )
2027LDFLAGS = -nostdlib -T mk20dx256.ld
2128LIBS = -L $(COMPILER_PATH ) /../lib/gcc/arm-none-eabi/4.7.2/thumb2 -lgcc
2229
@@ -36,55 +43,6 @@ STM_SRC_C = \
3643STM_SRC_S = \
3744 gchelper.s \
3845
39- PY_O = \
40- nlrthumb.o \
41- gc.o \
42- malloc.o \
43- qstr.o \
44- vstr.o \
45- unicode.o \
46- lexer.o \
47- lexerstr.o \
48- parse.o \
49- scope.o \
50- compile.o \
51- emitcommon.o \
52- emitpass1.o \
53- emitbc.o \
54- asmthumb.o \
55- emitnthumb.o \
56- emitinlinethumb.o \
57- runtime.o \
58- map.o \
59- obj.o \
60- objbool.o \
61- objboundmeth.o \
62- objcell.o \
63- objclass.o \
64- objclosure.o \
65- objcomplex.o \
66- objdict.o \
67- objexcept.o \
68- objfloat.o \
69- objfun.o \
70- objgenerator.o \
71- objinstance.o \
72- objint.o \
73- objlist.o \
74- objmodule.o \
75- objnone.o \
76- objrange.o \
77- objset.o \
78- objslice.o \
79- objstr.o \
80- objtuple.o \
81- objtype.o \
82- builtin.o \
83- builtinimport.o \
84- vm.o \
85- showbc.o \
86- repl.o \
87-
8846SRC_TEENSY = \
8947 mk20dx128.c \
9048 pins_teensy.c \
@@ -95,36 +53,29 @@ SRC_TEENSY = \
9553 usb_serial.c \
9654 yield.c \
9755
98- STM_SRC_C_OBJ = $(STM_SRC_C:.c=.o )
99- STM_SRC_S_OBJ = $(STM_SRC_S:.s=.o )
100-
101- OBJ = $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) $(STM_SRC_C_OBJ ) $(STM_SRC_S_OBJ ) $(PY_O ) $(SRC_TEENSY:.c=.o ) )
56+ OBJ = $(addprefix $(BUILD ) /, $(SRC_C:.c=.o ) $(STM_SRC_C:.c=.o ) $(STM_SRC_S:.s=.o ) $(SRC_TEENSY:.c=.o ) ) $(PY_O )
10257# LIB = -lreadline
10358# the following is needed for BSD
10459# LIB += -ltermcap
105- PROG = micropython
10660
107- all : hex
108- hex : $(PROG ) .hex
61+ all2 : $( BUILD ) hex
62+ hex : $(BUILD ) /flash .hex
10963
110- post_compile : $(PROG ) .hex
111- $(TOOLS_PATH ) /teensy_post_compile -file=" $( basename $< ) " -path=" $( CURDIR ) " -tools=" $( TOOLS_PATH) "
64+ post_compile : $(BUILD ) /flash .hex
65+ $(TOOLS_PATH ) /teensy_post_compile -file=" $( basename $< ) " -path=" $( BUILD ) " -tools=" $( TOOLS_PATH) "
11266
11367reboot :
11468 -$(TOOLS_PATH ) /teensy_reboot
11569
11670upload : post_compile reboot
11771
118- $(PROG ) .elf : $(BUILD ) $(OBJ )
119- $(CC ) $(LDFLAGS ) -o " $@ " -Wl,-Map,$(PROG ) .map $(OBJ ) $(LIBS )
72+ $(BUILD ) /flash.elf : $(OBJ )
73+ $(CC ) $(LDFLAGS ) -o " $@ " -Wl,-Map,$(@:.elf=.map ) $(OBJ ) $(LIBS )
74+ $(SIZE ) $@
12075
121- % .hex : % .elf
122- $(SIZE ) " $<"
76+ $(BUILD ) /% .hex : $(BUILD ) /% .elf
12377 $(OBJCOPY ) -O ihex -R .eeprom " $<" " $@ "
12478
125- $(BUILD ) :
126- mkdir -p $@
127-
12879$(BUILD ) /% .o : % .c
12980 $(CC ) $(CFLAGS ) -c -o $@ $<
13081
@@ -134,33 +85,12 @@ $(BUILD)/%.o: ../stm/%.s
13485$(BUILD ) /% .o : ../stm/% .c
13586 $(CC ) $(CFLAGS ) -c -o $@ $<
13687
137- $(BUILD ) /% .o : $(PYSRC ) /% .S
138- $(CC ) $(CFLAGS ) -c -o $@ $<
139-
140- $(BUILD ) /% .o : $(PYSRC ) /% .c mpconfigport.h
141- $(CC ) $(CFLAGS ) -c -o $@ $<
142-
14388$(BUILD ) /% .o : $(CORE_PATH ) /% .c
14489 $(CC ) $(CFLAGS ) -c -o $@ $<
14590
146- $(BUILD ) /emitnthumb.o : $(PYSRC ) /emitnative.c $(PYSRC ) /emit.h
147- $(CC ) $(CFLAGS ) -DN_THUMB -c -o $@ $<
148-
149- # optimising gc for speed; 5ms down to 4ms
150- $(BUILD ) /gc.o : $(PYSRC ) /gc.c
151- $(CC ) $(CFLAGS ) -O3 -c -o $@ $<
152-
153- # optimising vm for speed, adds only a small amount to code size but makes a huge difference to speed (20% faster)
154- $(BUILD ) /vm.o : $(PYSRC ) /vm.c
155- $(CC ) $(CFLAGS ) -O3 -c -o $@ $<
156-
15791$(BUILD ) /main.o : mpconfigport.h
158- $(BUILD ) /parse.o : $(PYSRC ) /grammar.h
159- $(BUILD ) /compile.o : $(PYSRC ) /grammar.h
160- $(BUILD ) /emitbc.o : $(PYSRC ) /emit.h
16192
16293clean :
16394 /bin/rm -rf $(BUILD )
164- /bin/rm -f $(PROG ) .elf $(PROG ) .hex $(PROG ) .map
16595
166- .PHONY : clean
96+ .PHONY : all all2 clean
0 commit comments