aboutsummaryrefslogtreecommitdiff
path: root/esp8266/Makefile
diff options
context:
space:
mode:
authorDamien George2014-11-27 20:30:33 +0000
committerDamien George2014-11-27 20:30:33 +0000
commit075d597464be619475535930de2f36abe69176f8 (patch)
tree286b765fb8e3c3dc1c741eb825fd7ef49e7e4946 /esp8266/Makefile
parent2399aa03b81e6a23f0b2719196c07101884222be (diff)
esp8266: New port of Micro Python to ESP8266 wifi module.
Diffstat (limited to 'esp8266/Makefile')
-rw-r--r--esp8266/Makefile115
1 files changed, 115 insertions, 0 deletions
diff --git a/esp8266/Makefile b/esp8266/Makefile
new file mode 100644
index 000000000..6826ce9dd
--- /dev/null
+++ b/esp8266/Makefile
@@ -0,0 +1,115 @@
+include ../py/mkenv.mk
+
+# qstr definitions (must come before including py.mk)
+QSTR_DEFS = qstrdefsport.h #$(BUILD)/pins_qstr.h
+
+# include py core make definitions
+include ../py/py.mk
+
+ifeq ($(ESP_SDK),)
+$(error ESP_SDK must be set)
+endif
+
+CROSS_COMPILE = xtensa-lx106-elf-
+
+INC = -I.
+INC += -I$(PY_SRC)
+INC += -I../stmhal
+INC += -I$(BUILD)
+INC += -I$(ESP_SDK)/include
+
+CFLAGS_XTENSA = -fsingle-precision-constant -Wdouble-promotion \
+ -D__ets__ -DICACHE_FLASH \
+ -fno-inline-functions \
+ -Wl,-EL -mlongcalls -mtext-section-literals \
+
+CFLAGS = $(INC) -Wall -Wpointer-arith -Werror -ansi -std=gnu99 -nostdlib $(CFLAGS_XTENSA) $(COPT)
+
+LDFLAGS = -nostdlib -T esp8266.ld -Map=$(@:.elf=.map) --cref
+LIBS = -L$(ESP_SDK)/lib -lmain -ljson -llwip -lpp -lnet80211 -lwpa -lphy -lnet80211
+
+LIBGCC_FILE_NAME = $(shell $(CC) $(CFLAGS) -print-libgcc-file-name)
+LIBS += -L $(dir $(LIBGCC_FILE_NAME)) -lgcc
+
+# Debugging/Optimization
+ifeq ($(DEBUG), 1)
+CFLAGS += -g
+COPT = -O0
+else
+CFLAGS += -fdata-sections -ffunction-sections
+COPT += -Os -DNDEBUG
+LDFLAGS += --gc-sections
+endif
+
+SRC_C = \
+ main.c \
+ esp_mphal.c \
+ gccollect.c \
+ pybstdio.c \
+ uart.c \
+ modpyb.c \
+
+STM_SRC_C = $(addprefix stmhal/,\
+ printf.c \
+ string0.c \
+ pyexec.c \
+ readline.c \
+ )
+
+SRC_S = \
+ gchelper.s \
+
+OBJ =
+OBJ += $(PY_O)
+OBJ += $(addprefix $(BUILD)/, $(SRC_C:.c=.o))
+OBJ += $(addprefix $(BUILD)/, $(SRC_S:.s=.o))
+OBJ += $(addprefix $(BUILD)/, $(STM_SRC_C:.c=.o))
+#OBJ += $(BUILD)/pins_$(BOARD).o
+
+all: $(BUILD)/firmware-combined.bin
+
+.PHONY: deploy
+
+deploy: $(BUILD)/firmware-combined.bin
+ $(ECHO) "Writing $< to the board"
+ $(Q)esptool.py --port /dev/ttyACM0 write_flash 0 $<
+ #$(Q)esptool.py --port /dev/ttyACM0 write_flash 0 $(BUILD)/firmware.elf-0x00000.bin
+ #$(Q)esptool.py --port /dev/ttyACM0 write_flash 0x10000 $(BUILD)/firmware.elf-0x10000.bin
+
+$(BUILD)/firmware-combined.bin: $(BUILD)/firmware.elf
+ $(ECHO) "Create $@"
+ $(Q)esptool.py elf2image $^
+ $(Q)$(PYTHON) makeimg.py $(BUILD)/firmware.elf-0x00000.bin $(BUILD)/firmware.elf-0x10000.bin $@
+
+$(BUILD)/firmware.elf: $(OBJ)
+ $(ECHO) "LINK $@"
+ $(Q)$(LD) $(LDFLAGS) -o $@ $(OBJ) $(LIBS)
+ $(Q)$(SIZE) $@
+
+#MAKE_PINS = boards/make-pins.py
+#BOARD_PINS = boards/$(BOARD)/pins.csv
+#AF_FILE = boards/stm32f4xx_af.csv
+#PREFIX_FILE = boards/stm32f4xx_prefix.c
+#GEN_PINS_SRC = $(BUILD)/pins_$(BOARD).c
+#GEN_PINS_HDR = $(HEADER_BUILD)/pins.h
+#GEN_PINS_QSTR = $(BUILD)/pins_qstr.h
+#GEN_PINS_AF_CONST = $(HEADER_BUILD)/pins_af_const.h
+#GEN_PINS_AF_PY = $(BUILD)/pins_af.py
+
+# Making OBJ use an order-only depenedency on the generated pins.h file
+# has the side effect of making the pins.h file before we actually compile
+# any of the objects. The normal dependency generation will deal with the
+# case when pins.h is modified. But when it doesn't exist, we don't know
+# which source files might need it.
+#$(OBJ): | $(HEADER_BUILD)/pins.h
+
+# Use a pattern rule here so that make will only call make-pins.py once to make
+# both pins_$(BOARD).c and pins.h
+#$(BUILD)/%_$(BOARD).c $(HEADER_BUILD)/%.h $(HEADER_BUILD)/%_af_const.h $(BUILD)/%_qstr.h: boards/$(BOARD)/%.csv $(MAKE_PINS) $(AF_FILE) $(PREFIX_FILE) | $(HEADER_BUILD)
+# $(ECHO) "Create $@"
+# $(Q)$(PYTHON) $(MAKE_PINS) --board $(BOARD_PINS) --af $(AF_FILE) --prefix $(PREFIX_FILE) --hdr $(GEN_PINS_HDR) --qstr $(GEN_PINS_QSTR) --af-const $(GEN_PINS_AF_CONST) --af-py $(GEN_PINS_AF_PY) > $(GEN_PINS_SRC)
+#
+#$(BUILD)/pins_$(BOARD).o: $(BUILD)/pins_$(BOARD).c
+# $(call compile_c)
+
+include ../py/mkrules.mk