DIR?= loadable ########################################################################## # User configuration and firmware specific object files ########################################################################## SRCS = $(wildcard $(DIR)/*.c) OBJS = $(foreach mod,$(SRCS),$(subst .c,.o,$(mod))) ELFS = $(foreach mod,$(SRCS),$(subst .c,.elf,$(mod))) BINS = $(foreach mod,$(SRCS),$(subst .c,.bin,$(mod))) HDRS = $(foreach mod,$(SRCS),$(subst .c,.h,$(mod))) ########################################################################## # GNU GCC compiler flags ########################################################################## ROOT_PATH?= . INCLUDE_PATHS = -I$(ROOT_PATH) -I$(ROOT_PATH)/core include $(ROOT_PATH)/Makefile.inc ########################################################################## # Compiler settings, parameters and flags ########################################################################## FIRMWARE=$(ROOT_PATH)/$(OUTFILE).elf LDSRCFILE=$(DIR)/ram.ld LDFILE=$(DIR)/loadable.ld CFLAGS+=-mlong-calls -fno-toplevel-reorder LDFLAGS+= -R $(FIRMWARE) all: $(OBJS) $(ELFS) $(BINS) $(HDRS) $(LDFILE): -@echo "MEMORY" > $(LDFILE) -@echo "{" >> $(LDFILE) -@echo " sram(rwx): ORIGIN = 0x10002000 - $(RAMCODE), LENGTH = $(RAMCODE)" >> $(LDFILE) -@echo "}" >> $(LDFILE) -@echo "INCLUDE $(LDSRCFILE)" >> $(LDFILE) %.o : %.c $(CC) $(CFLAGS) -o $@ $< %.elf: %.o $(FIRMWARE) $(LDFILE) $(LD) $(LDFLAGS) -T $(LDFILE) -o $@ $< $(SIZE) $@ %.bin: %.elf $(OBJCOPY) $(OCFLAGS) -O binary $< $@ %.h: %.bin $(DIR)/bin2h.pl $(DIR)/bin2h.pl $< clean: cd $(DIR) && rm -f *.o *.elf *.bin .SUFFIXES: .PHONY: $(LDFILE)