diff --git a/basic_example/Makefile b/basic_example/Makefile index 3340b12..2eb212b 100644 --- a/basic_example/Makefile +++ b/basic_example/Makefile @@ -1,23 +1,29 @@ -# tnx to mamalala -# Changelog -# Changed the variables to include the header file directory -# Added global var for the XTENSA tool root -# -# This make file still needs some work. +# Makefile for ESP8266 projects # +# Thanks to: +# - zarya +# - Jeroen Domburg (Sprite_tm) +# - Christian Klippel (mamalala) +# - Tommie Gannert (tommie) # +# Changelog: +# - 2014-10-06: Changed the variables to include the header file directory +# - 2014-10-06: Added global var for the Xtensa tool root +# - 2014-11-23: Updated for SDK 0.9.3 +# - 2014-12-25: Replaced esptool by esptool.py + # Output directors to store intermediate compiled files # relative to the project directory BUILD_BASE = build FW_BASE = firmware -# Base directory for the compiler +# base directory for the compiler XTENSA_TOOLS_ROOT ?= /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin # base directory of the ESP8266 SDK package, absolute SDK_BASE ?= /opt/Espressif/ESP8266_SDK -#Esptool.py path and port +# esptool.py path and port ESPTOOL ?= esptool.py ESPPORT ?= /dev/ttyUSB0 @@ -26,7 +32,7 @@ TARGET = app # which modules (subdirectories) of the project to include in compiling MODULES = driver user -EXTRA_INCDIR = include /opt/Espressif/include +EXTRA_INCDIR = include # libraries used in this project, mainly provided by the SDK LIBS = c gcc hal pp phy net80211 lwip wpa main @@ -47,10 +53,8 @@ SDK_INCDIR = include include/json # we create two different files for uploading into the flash # these are the names and options to generate them -FW_FILE_1 = 0x00000 -FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec -FW_FILE_2 = 0x40000 -FW_FILE_2_ARGS = -es .irom0.text $@ -ec +FW_FILE_1_ADDR = 0x00000 +FW_FILE_2_ADDR = 0x40000 # select which tools to use as compiler, librarian and linker CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc @@ -62,7 +66,6 @@ LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc #### #### no user configurable options below here #### -FW_TOOL ?= /usr/bin/esptool SRC_DIR := $(MODULES) BUILD_DIR := $(addprefix $(BUILD_BASE)/,$(MODULES)) @@ -81,8 +84,8 @@ INCDIR := $(addprefix -I,$(SRC_DIR)) EXTRA_INCDIR := $(addprefix -I,$(EXTRA_INCDIR)) MODULE_INCDIR := $(addsuffix /include,$(INCDIR)) -FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1).bin) -FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2).bin) +FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1_ADDR).bin) +FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2_ADDR).bin) V ?= $(VERBOSE) ifeq ("$(V)","1") @@ -98,20 +101,16 @@ vpath %.c $(SRC_DIR) define compile-objects $1/%.o: %.c $(vecho) "CC $$<" - $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ + $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ endef .PHONY: all checkdirs flash clean all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2) -$(FW_FILE_1): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS) - -$(FW_FILE_2): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS) +$(FW_BASE)/%.bin: $(TARGET_OUT) | $(FW_BASE) + $(vecho) "FW $(FW_BASE)/" + $(Q) $(ESPTOOL) elf2image -o $(FW_BASE)/ $(TARGET_OUT) $(TARGET_OUT): $(APP_AR) $(vecho) "LD $@" @@ -126,21 +125,13 @@ checkdirs: $(BUILD_DIR) $(FW_BASE) $(BUILD_DIR): $(Q) mkdir -p $@ -firmware: +$(FW_BASE): $(Q) mkdir -p $@ -flash: firmware/0x00000.bin firmware/0x40000.bin - -$(ESPTOOL) --port $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin +flash: $(FW_FILE_1) $(FW_FILE_2) + $(ESPTOOL) --port $(ESPPORT) write_flash $(FW_FILE_1_ADDR) $(FW_FILE_1) $(FW_FILE_2_ADDR) $(FW_FILE_2) clean: - $(Q) rm -f $(APP_AR) - $(Q) rm -f $(TARGET_OUT) - $(Q) rm -rf $(BUILD_DIR) - $(Q) rm -rf $(BUILD_BASE) - - - $(Q) rm -f $(FW_FILE_1) - $(Q) rm -f $(FW_FILE_2) - $(Q) rm -rf $(FW_BASE) + $(Q) rm -rf $(FW_BASE) $(BUILD_BASE) $(foreach bdir,$(BUILD_DIR),$(eval $(call compile-objects,$(bdir)))) diff --git a/blinky/Makefile b/blinky/Makefile index 3340b12..2eb212b 100644 --- a/blinky/Makefile +++ b/blinky/Makefile @@ -1,23 +1,29 @@ -# tnx to mamalala -# Changelog -# Changed the variables to include the header file directory -# Added global var for the XTENSA tool root -# -# This make file still needs some work. +# Makefile for ESP8266 projects # +# Thanks to: +# - zarya +# - Jeroen Domburg (Sprite_tm) +# - Christian Klippel (mamalala) +# - Tommie Gannert (tommie) # +# Changelog: +# - 2014-10-06: Changed the variables to include the header file directory +# - 2014-10-06: Added global var for the Xtensa tool root +# - 2014-11-23: Updated for SDK 0.9.3 +# - 2014-12-25: Replaced esptool by esptool.py + # Output directors to store intermediate compiled files # relative to the project directory BUILD_BASE = build FW_BASE = firmware -# Base directory for the compiler +# base directory for the compiler XTENSA_TOOLS_ROOT ?= /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin # base directory of the ESP8266 SDK package, absolute SDK_BASE ?= /opt/Espressif/ESP8266_SDK -#Esptool.py path and port +# esptool.py path and port ESPTOOL ?= esptool.py ESPPORT ?= /dev/ttyUSB0 @@ -26,7 +32,7 @@ TARGET = app # which modules (subdirectories) of the project to include in compiling MODULES = driver user -EXTRA_INCDIR = include /opt/Espressif/include +EXTRA_INCDIR = include # libraries used in this project, mainly provided by the SDK LIBS = c gcc hal pp phy net80211 lwip wpa main @@ -47,10 +53,8 @@ SDK_INCDIR = include include/json # we create two different files for uploading into the flash # these are the names and options to generate them -FW_FILE_1 = 0x00000 -FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec -FW_FILE_2 = 0x40000 -FW_FILE_2_ARGS = -es .irom0.text $@ -ec +FW_FILE_1_ADDR = 0x00000 +FW_FILE_2_ADDR = 0x40000 # select which tools to use as compiler, librarian and linker CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc @@ -62,7 +66,6 @@ LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc #### #### no user configurable options below here #### -FW_TOOL ?= /usr/bin/esptool SRC_DIR := $(MODULES) BUILD_DIR := $(addprefix $(BUILD_BASE)/,$(MODULES)) @@ -81,8 +84,8 @@ INCDIR := $(addprefix -I,$(SRC_DIR)) EXTRA_INCDIR := $(addprefix -I,$(EXTRA_INCDIR)) MODULE_INCDIR := $(addsuffix /include,$(INCDIR)) -FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1).bin) -FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2).bin) +FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1_ADDR).bin) +FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2_ADDR).bin) V ?= $(VERBOSE) ifeq ("$(V)","1") @@ -98,20 +101,16 @@ vpath %.c $(SRC_DIR) define compile-objects $1/%.o: %.c $(vecho) "CC $$<" - $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ + $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ endef .PHONY: all checkdirs flash clean all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2) -$(FW_FILE_1): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS) - -$(FW_FILE_2): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS) +$(FW_BASE)/%.bin: $(TARGET_OUT) | $(FW_BASE) + $(vecho) "FW $(FW_BASE)/" + $(Q) $(ESPTOOL) elf2image -o $(FW_BASE)/ $(TARGET_OUT) $(TARGET_OUT): $(APP_AR) $(vecho) "LD $@" @@ -126,21 +125,13 @@ checkdirs: $(BUILD_DIR) $(FW_BASE) $(BUILD_DIR): $(Q) mkdir -p $@ -firmware: +$(FW_BASE): $(Q) mkdir -p $@ -flash: firmware/0x00000.bin firmware/0x40000.bin - -$(ESPTOOL) --port $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin +flash: $(FW_FILE_1) $(FW_FILE_2) + $(ESPTOOL) --port $(ESPPORT) write_flash $(FW_FILE_1_ADDR) $(FW_FILE_1) $(FW_FILE_2_ADDR) $(FW_FILE_2) clean: - $(Q) rm -f $(APP_AR) - $(Q) rm -f $(TARGET_OUT) - $(Q) rm -rf $(BUILD_DIR) - $(Q) rm -rf $(BUILD_BASE) - - - $(Q) rm -f $(FW_FILE_1) - $(Q) rm -f $(FW_FILE_2) - $(Q) rm -rf $(FW_BASE) + $(Q) rm -rf $(FW_BASE) $(BUILD_BASE) $(foreach bdir,$(BUILD_DIR),$(eval $(call compile-objects,$(bdir)))) diff --git a/example.Makefile b/example.Makefile index e4c1f77..2eb212b 100644 --- a/example.Makefile +++ b/example.Makefile @@ -1,24 +1,29 @@ -# tnx to mamalala -# Changelog -# Changed the variables to include the header file directory -# Added global var for the XTENSA tool root +# Makefile for ESP8266 projects # -# This make file still needs some work. -# -# Updated for SDK 0.9.3 +# Thanks to: +# - zarya +# - Jeroen Domburg (Sprite_tm) +# - Christian Klippel (mamalala) +# - Tommie Gannert (tommie) # +# Changelog: +# - 2014-10-06: Changed the variables to include the header file directory +# - 2014-10-06: Added global var for the Xtensa tool root +# - 2014-11-23: Updated for SDK 0.9.3 +# - 2014-12-25: Replaced esptool by esptool.py + # Output directors to store intermediate compiled files # relative to the project directory BUILD_BASE = build FW_BASE = firmware -# Base directory for the compiler +# base directory for the compiler XTENSA_TOOLS_ROOT ?= /opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin # base directory of the ESP8266 SDK package, absolute SDK_BASE ?= /opt/Espressif/ESP8266_SDK -#Esptool.py path and port +# esptool.py path and port ESPTOOL ?= esptool.py ESPPORT ?= /dev/ttyUSB0 @@ -27,7 +32,7 @@ TARGET = app # which modules (subdirectories) of the project to include in compiling MODULES = driver user -EXTRA_INCDIR = include /opt/Espressif/include +EXTRA_INCDIR = include # libraries used in this project, mainly provided by the SDK LIBS = c gcc hal pp phy net80211 lwip wpa main @@ -48,10 +53,8 @@ SDK_INCDIR = include include/json # we create two different files for uploading into the flash # these are the names and options to generate them -FW_FILE_1 = 0x00000 -FW_FILE_1_ARGS = -bo $@ -bs .text -bs .data -bs .rodata -bc -ec -FW_FILE_2 = 0x40000 -FW_FILE_2_ARGS = -es .irom0.text $@ -ec +FW_FILE_1_ADDR = 0x00000 +FW_FILE_2_ADDR = 0x40000 # select which tools to use as compiler, librarian and linker CC := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc @@ -63,7 +66,6 @@ LD := $(XTENSA_TOOLS_ROOT)/xtensa-lx106-elf-gcc #### #### no user configurable options below here #### -FW_TOOL ?= /usr/bin/esptool SRC_DIR := $(MODULES) BUILD_DIR := $(addprefix $(BUILD_BASE)/,$(MODULES)) @@ -82,8 +84,8 @@ INCDIR := $(addprefix -I,$(SRC_DIR)) EXTRA_INCDIR := $(addprefix -I,$(EXTRA_INCDIR)) MODULE_INCDIR := $(addsuffix /include,$(INCDIR)) -FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1).bin) -FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2).bin) +FW_FILE_1 := $(addprefix $(FW_BASE)/,$(FW_FILE_1_ADDR).bin) +FW_FILE_2 := $(addprefix $(FW_BASE)/,$(FW_FILE_2_ADDR).bin) V ?= $(VERBOSE) ifeq ("$(V)","1") @@ -99,20 +101,16 @@ vpath %.c $(SRC_DIR) define compile-objects $1/%.o: %.c $(vecho) "CC $$<" - $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ + $(Q) $(CC) $(INCDIR) $(MODULE_INCDIR) $(EXTRA_INCDIR) $(SDK_INCDIR) $(CFLAGS) -c $$< -o $$@ endef -.PHONY: all checkdirs clean +.PHONY: all checkdirs flash clean all: checkdirs $(TARGET_OUT) $(FW_FILE_1) $(FW_FILE_2) -$(FW_FILE_1): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_1_ARGS) - -$(FW_FILE_2): $(TARGET_OUT) - $(vecho) "FW $@" - $(Q) $(FW_TOOL) -eo $(TARGET_OUT) $(FW_FILE_2_ARGS) +$(FW_BASE)/%.bin: $(TARGET_OUT) | $(FW_BASE) + $(vecho) "FW $(FW_BASE)/" + $(Q) $(ESPTOOL) elf2image -o $(FW_BASE)/ $(TARGET_OUT) $(TARGET_OUT): $(APP_AR) $(vecho) "LD $@" @@ -127,21 +125,13 @@ checkdirs: $(BUILD_DIR) $(FW_BASE) $(BUILD_DIR): $(Q) mkdir -p $@ -firmware: +$(FW_BASE): $(Q) mkdir -p $@ -flash: firmware/0x00000.bin firmware/0x40000.bin - -$(ESPTOOL) --port $(ESPPORT) write_flash 0x00000 firmware/0x00000.bin 0x40000 firmware/0x40000.bin +flash: $(FW_FILE_1) $(FW_FILE_2) + $(ESPTOOL) --port $(ESPPORT) write_flash $(FW_FILE_1_ADDR) $(FW_FILE_1) $(FW_FILE_2_ADDR) $(FW_FILE_2) clean: - $(Q) rm -f $(APP_AR) - $(Q) rm -f $(TARGET_OUT) - $(Q) rm -rf $(BUILD_DIR) - $(Q) rm -rf $(BUILD_BASE) - - - $(Q) rm -f $(FW_FILE_1) - $(Q) rm -f $(FW_FILE_2) - $(Q) rm -rf $(FW_BASE) + $(Q) rm -rf $(FW_BASE) $(BUILD_BASE) $(foreach bdir,$(BUILD_DIR),$(eval $(call compile-objects,$(bdir))))