Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Teo Swee Ann
committed
Mar 16, 2015
1 parent
9b4a08f
commit d3f5956
Showing
155 changed files
with
255,545 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,339 @@ | ||
# copyright (c) 2010 Espressif System | ||
# | ||
ifndef PDIR | ||
|
||
endif | ||
|
||
ifeq ($(COMPILE), gcc) | ||
AR = xtensa-lx106-elf-ar | ||
CC = xtensa-lx106-elf-gcc | ||
NM = xtensa-lx106-elf-nm | ||
CPP = xtensa-lx106-elf-cpp | ||
OBJCOPY = xtensa-lx106-elf-objcopy | ||
OBJDUMP = xtensa-lx106-elf-objdump | ||
else | ||
AR = xt-ar | ||
CC = xt-xcc | ||
NM = xt-nm | ||
CPP = xt-cpp | ||
OBJCOPY = xt-objcopy | ||
OBJDUMP = xt-objdump | ||
endif | ||
|
||
BOOT?=none | ||
APP?=0 | ||
SPI_SPEED?=40 | ||
SPI_MODE?=QIO | ||
SPI_SIZE?=512 | ||
|
||
ifeq ($(BOOT), new) | ||
boot = new | ||
else | ||
ifeq ($(BOOT), old) | ||
boot = old | ||
else | ||
boot = none | ||
endif | ||
endif | ||
|
||
ifeq ($(APP), 1) | ||
app = 1 | ||
else | ||
ifeq ($(APP), 2) | ||
app = 2 | ||
else | ||
app = 0 | ||
endif | ||
endif | ||
|
||
ifeq ($(SPI_SPEED), 26.7) | ||
freqdiv = 1 | ||
else | ||
ifeq ($(SPI_SPEED), 20) | ||
freqdiv = 2 | ||
else | ||
ifeq ($(SPI_SPEED), 80) | ||
freqdiv = 15 | ||
else | ||
freqdiv = 0 | ||
endif | ||
endif | ||
endif | ||
|
||
|
||
ifeq ($(SPI_MODE), QOUT) | ||
mode = 1 | ||
else | ||
ifeq ($(SPI_MODE), DIO) | ||
mode = 2 | ||
else | ||
ifeq ($(SPI_MODE), DOUT) | ||
mode = 3 | ||
else | ||
mode = 0 | ||
endif | ||
endif | ||
endif | ||
|
||
# flash larger than 1024KB only use 1024KB to storage user1.bin and user2.bin | ||
ifeq ($(SPI_SIZE), 256) | ||
size = 1 | ||
flash = 256 | ||
else | ||
ifeq ($(SPI_SIZE), 1024) | ||
size = 2 | ||
flash = 1024 | ||
else | ||
ifeq ($(SPI_SIZE), 2048) | ||
size = 3 | ||
flash = 1024 | ||
else | ||
ifeq ($(SPI_SIZE), 4096) | ||
size = 4 | ||
flash = 1024 | ||
else | ||
size = 0 | ||
flash = 512 | ||
endif | ||
endif | ||
endif | ||
endif | ||
|
||
ifeq ($(flash), 512) | ||
ifeq ($(app), 1) | ||
addr = 0x01000 | ||
else | ||
ifeq ($(app), 2) | ||
addr = 0x41000 | ||
endif | ||
endif | ||
else | ||
ifeq ($(flash), 1024) | ||
ifeq ($(app), 1) | ||
addr = 0x01000 | ||
else | ||
ifeq ($(app), 2) | ||
addr = 0x81000 | ||
endif | ||
endif | ||
endif | ||
endif | ||
|
||
LD_FILE = $(LDDIR)/eagle.app.v6.ld | ||
|
||
ifneq ($(boot), none) | ||
ifneq ($(app),0) | ||
LD_FILE = $(LDDIR)/eagle.app.v6.$(boot).$(flash).app$(app).ld | ||
BIN_NAME = user$(app).$(flash).$(boot) | ||
endif | ||
else | ||
app = 0 | ||
endif | ||
|
||
CSRCS ?= $(wildcard *.c) | ||
ASRCs ?= $(wildcard *.s) | ||
ASRCS ?= $(wildcard *.S) | ||
SUBDIRS ?= $(patsubst %/,%,$(dir $(wildcard */Makefile))) | ||
|
||
ODIR := .output | ||
OBJODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/obj | ||
|
||
OBJS := $(CSRCS:%.c=$(OBJODIR)/%.o) \ | ||
$(ASRCs:%.s=$(OBJODIR)/%.o) \ | ||
$(ASRCS:%.S=$(OBJODIR)/%.o) | ||
|
||
DEPS := $(CSRCS:%.c=$(OBJODIR)/%.d) \ | ||
$(ASRCs:%.s=$(OBJODIR)/%.d) \ | ||
$(ASRCS:%.S=$(OBJODIR)/%.d) | ||
|
||
LIBODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/lib | ||
OLIBS := $(GEN_LIBS:%=$(LIBODIR)/%) | ||
|
||
IMAGEODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/image | ||
OIMAGES := $(GEN_IMAGES:%=$(IMAGEODIR)/%) | ||
|
||
BINODIR := $(ODIR)/$(TARGET)/$(FLAVOR)/bin | ||
OBINS := $(GEN_BINS:%=$(BINODIR)/%) | ||
|
||
CCFLAGS += \ | ||
-g \ | ||
-O2 \ | ||
-Wpointer-arith \ | ||
-Wundef \ | ||
-Werror \ | ||
-Wl,-EL \ | ||
-fno-inline-functions \ | ||
-nostdlib \ | ||
-mlongcalls \ | ||
-mtext-section-literals | ||
# -Wall | ||
|
||
CFLAGS = $(CCFLAGS) $(DEFINES) $(EXTRA_CCFLAGS) $(INCLUDES) | ||
DFLAGS = $(CCFLAGS) $(DDEFINES) $(EXTRA_CCFLAGS) $(INCLUDES) | ||
|
||
|
||
############################################################# | ||
# Functions | ||
# | ||
|
||
define ShortcutRule | ||
$(1): .subdirs $(2)/$(1) | ||
endef | ||
|
||
define MakeLibrary | ||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib))) | ||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj))) | ||
$$(LIBODIR)/$(1).a: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1)) | ||
@mkdir -p $$(LIBODIR) | ||
$$(if $$(filter %.a,$$?),mkdir -p $$(EXTRACT_DIR)_$(1)) | ||
$$(if $$(filter %.a,$$?),cd $$(EXTRACT_DIR)_$(1); $$(foreach lib,$$(filter %.a,$$?),$$(AR) xo $$(UP_EXTRACT_DIR)/$$(lib);)) | ||
$$(AR) ru $$@ $$(filter %.o,$$?) $$(if $$(filter %.a,$$?),$$(EXTRACT_DIR)_$(1)/*.o) | ||
$$(if $$(filter %.a,$$?),$$(RM) -r $$(EXTRACT_DIR)_$(1)) | ||
endef | ||
|
||
define MakeImage | ||
DEP_LIBS_$(1) = $$(foreach lib,$$(filter %.a,$$(COMPONENTS_$(1))),$$(dir $$(lib))$$(LIBODIR)/$$(notdir $$(lib))) | ||
DEP_OBJS_$(1) = $$(foreach obj,$$(filter %.o,$$(COMPONENTS_$(1))),$$(dir $$(obj))$$(OBJODIR)/$$(notdir $$(obj))) | ||
$$(IMAGEODIR)/$(1).out: $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1)) $$(DEPENDS_$(1)) | ||
@mkdir -p $$(IMAGEODIR) | ||
$$(CC) $$(LDFLAGS) $$(if $$(LINKFLAGS_$(1)),$$(LINKFLAGS_$(1)),$$(LINKFLAGS_DEFAULT) $$(OBJS) $$(DEP_OBJS_$(1)) $$(DEP_LIBS_$(1))) -o $$@ | ||
endef | ||
|
||
$(BINODIR)/%.bin: $(IMAGEODIR)/%.out | ||
@mkdir -p $(BINODIR) | ||
|
||
ifeq ($(APP), 0) | ||
@$(RM) -r ../bin/eagle.S ../bin/eagle.dump | ||
@$(OBJDUMP) -x -s $< > ../bin/eagle.dump | ||
@$(OBJDUMP) -S $< > ../bin/eagle.S | ||
else | ||
@$(RM) -r ../bin/upgrade/$(BIN_NAME).S ../bin/upgrade/$(BIN_NAME).dump | ||
@$(OBJDUMP) -x -s $< > ../bin/upgrade/$(BIN_NAME).dump | ||
@$(OBJDUMP) -S $< > ../bin/upgrade/$(BIN_NAME).S | ||
endif | ||
|
||
@$(OBJCOPY) --only-section .text -O binary $< eagle.app.v6.text.bin | ||
@$(OBJCOPY) --only-section .data -O binary $< eagle.app.v6.data.bin | ||
@$(OBJCOPY) --only-section .rodata -O binary $< eagle.app.v6.rodata.bin | ||
@$(OBJCOPY) --only-section .irom0.text -O binary $< eagle.app.v6.irom0text.bin | ||
|
||
@echo "" | ||
@echo "!!!" | ||
|
||
ifeq ($(app), 0) | ||
@python ../tools/gen_appbin.py $< 0 $(mode) $(freqdiv) $(size) | ||
@mv eagle.app.flash.bin ../bin/eagle.flash.bin | ||
@mv eagle.app.v6.irom0text.bin ../bin/eagle.irom0text.bin | ||
@rm eagle.app.v6.* | ||
@echo "No boot needed." | ||
@echo "Generate eagle.flash.bin and eagle.irom0text.bin successully in folder bin." | ||
@echo "eagle.flash.bin-------->0x00000" | ||
@echo "eagle.irom0text.bin---->0x40000" | ||
@python ../tools/add_disable_rf_cmd.py ../bin/eagle.flash.bin | ||
else | ||
ifeq ($(boot), new) | ||
@python ../tools/gen_appbin.py $< 2 $(mode) $(freqdiv) $(size) | ||
@echo "Support boot_v1.2 and +" | ||
else | ||
@python ../tools/gen_appbin.py $< 1 $(mode) $(freqdiv) $(size) | ||
@echo "Support boot_v1.1 and +" | ||
endif | ||
|
||
@mv eagle.app.flash.bin ../bin/upgrade/$(BIN_NAME).bin | ||
@rm eagle.app.v6.* | ||
@echo "Generate $(BIN_NAME).bin successully in folder bin/upgrade." | ||
@echo "boot.bin------------>0x00000" | ||
@echo "$(BIN_NAME).bin--->$(addr)" | ||
@python ../tools/add_disable_rf_cmd.py ../bin/upgrade/$(BIN_NAME).bin | ||
endif | ||
|
||
@echo "!!!" | ||
|
||
############################################################# | ||
# Rules base | ||
# Should be done in top-level makefile only | ||
# | ||
|
||
all: .subdirs $(OBJS) $(OLIBS) $(OIMAGES) $(OBINS) $(SPECIAL_MKTARGETS) | ||
|
||
clean: | ||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clean;) | ||
$(RM) -r $(ODIR)/$(TARGET)/$(FLAVOR) | ||
|
||
clobber: $(SPECIAL_CLOBBER) | ||
$(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clobber;) | ||
$(RM) -r $(ODIR) | ||
|
||
.subdirs: | ||
@set -e; $(foreach d, $(SUBDIRS), $(MAKE) -C $(d);) | ||
|
||
#.subdirs: | ||
# $(foreach d, $(SUBDIRS), $(MAKE) -C $(d)) | ||
|
||
ifneq ($(MAKECMDGOALS),clean) | ||
ifneq ($(MAKECMDGOALS),clobber) | ||
ifdef DEPS | ||
sinclude $(DEPS) | ||
endif | ||
endif | ||
endif | ||
|
||
$(OBJODIR)/%.o: %.c | ||
@mkdir -p $(OBJODIR); | ||
$(CC) $(if $(findstring $<,$(DSRCS)),$(DFLAGS),$(CFLAGS)) $(COPTS_$(*F)) -o $@ -c $< | ||
|
||
$(OBJODIR)/%.d: %.c | ||
@mkdir -p $(OBJODIR); | ||
@echo DEPEND: $(CC) -M $(CFLAGS) $< | ||
@set -e; rm -f $@; \ | ||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \ | ||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \ | ||
rm -f $@.$$$$ | ||
|
||
$(OBJODIR)/%.o: %.s | ||
@mkdir -p $(OBJODIR); | ||
$(CC) $(CFLAGS) -o $@ -c $< | ||
|
||
$(OBJODIR)/%.d: %.s | ||
@mkdir -p $(OBJODIR); \ | ||
set -e; rm -f $@; \ | ||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \ | ||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \ | ||
rm -f $@.$$$$ | ||
|
||
$(OBJODIR)/%.o: %.S | ||
@mkdir -p $(OBJODIR); | ||
$(CC) $(CFLAGS) -D__ASSEMBLER__ -o $@ -c $< | ||
|
||
$(OBJODIR)/%.d: %.S | ||
@mkdir -p $(OBJODIR); \ | ||
set -e; rm -f $@; \ | ||
$(CC) -M $(CFLAGS) $< > $@.$$$$; \ | ||
sed 's,\($*\.o\)[ :]*,$(OBJODIR)/\1 $@ : ,g' < $@.$$$$ > $@; \ | ||
rm -f $@.$$$$ | ||
|
||
$(foreach lib,$(GEN_LIBS),$(eval $(call ShortcutRule,$(lib),$(LIBODIR)))) | ||
|
||
$(foreach image,$(GEN_IMAGES),$(eval $(call ShortcutRule,$(image),$(IMAGEODIR)))) | ||
|
||
$(foreach bin,$(GEN_BINS),$(eval $(call ShortcutRule,$(bin),$(BINODIR)))) | ||
|
||
$(foreach lib,$(GEN_LIBS),$(eval $(call MakeLibrary,$(basename $(lib))))) | ||
|
||
$(foreach image,$(GEN_IMAGES),$(eval $(call MakeImage,$(basename $(image))))) | ||
|
||
############################################################# | ||
# Recursion Magic - Don't touch this!! | ||
# | ||
# Each subtree potentially has an include directory | ||
# corresponding to the common APIs applicable to modules | ||
# rooted at that subtree. Accordingly, the INCLUDE PATH | ||
# of a module can only contain the include directories up | ||
# its parent path, and not its siblings | ||
# | ||
# Required for each makefile to inherit from the parent | ||
# | ||
|
||
INCLUDES := $(INCLUDES) -I $(PDIR)include -I $(PDIR)include/$(TARGET) | ||
PDIR := ../$(PDIR) | ||
sinclude $(PDIR)Makefile |
Binary file not shown.
Oops, something went wrong.