diff options
Diffstat (limited to 'examples/examples.mk')
-rw-r--r-- | examples/examples.mk | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/examples/examples.mk b/examples/examples.mk new file mode 100644 index 0000000..f6b0acb --- /dev/null +++ b/examples/examples.mk @@ -0,0 +1,74 @@ +# vim:ts=4:sw=4:sts=4:noexpandtab +MAKEFLAGS += --no-builtin-rules +# Note this file is included to Makefiles in lower directories so all paths here +# are like thy would be from lower directory. + +# You have to define EXAMPLE_NAME variable +ifndef EXAMPLE_NAME +$(error Before including examples.mk define EXAMPLE_NAME) +endif +ifndef SRC +$(error Before including examples.mk define SRC) +endif + +OBJ = $(patsubst %.c,%.o,$(SRC)) # This creates list of *.o files from *.c +Q ?= @ # This can be overwritten to show commands + +CONFIG = .config + +.PHONY: all +ifneq ("$(wildcard $(CONFIG))","") # Checking if configuration exists +all: $(EXAMPLE_NAME).hex + @echo Now you can flash $< to your chip. +else +all: $(CONFIG) +endif + +# Edit here help like you ever want +.PHONY: help +help: + @echo "AVR-IOE $(EXAMPLE_NAME) example" + @echo " all - Build example" + @echo " config - Start configuration program" + @echo " menuconfig - NCurses based configuration program" + @echo " help - Prints this text" + @echo " clean - Removing all object files generated from source files" + +.PHONY: clean +clean: + @echo " CLEAN OBJ" + $(Q)$(RM) $(OBJ) + @echo " CLEAN $(EXAMPLE_NAME).elf $(EXAMPLE_NAME).hex" + $(Q)$(RM) $(EXAMPLE_NAME).elf $(EXAMPLE_NAME).hex + $(Q)$(MAKE) -C ../.. clean O=examples/$(EXAMPLE_NAME) + +# Building targets are available only if configuration is generated +ifneq ("$(wildcard $(CONFIG))","") +-include $(CONFIG) +# If you want change some standard CFLAGS, change them in configuration not here. +# Add here only options that should not be applied to avr-ioe also. +CFLAGS = -I../../include -mmcu=$(MMCU) -imacros build/config.h \ + $(shell echo $(CCFLAGS)) $(shell echo -DF_CPU=$(F_CPU)000L) +CC = $(CHOST)gcc +OBJCOPY = $(CHOST)objcopy + +$(EXAMPLE_NAME).elf: libioe.a +$(EXAMPLE_NAME).elf: $(OBJ) + @echo " LD $@" + $(Q)$(CC) -Os -mmcu=$(MMCU) $(filter %.o,$^) -o $@ -L. -lioe + +$(EXAMPLE_NAME).hex: $(EXAMPLE_NAME).elf + @echo " OBJCOPY $@" + $(Q)$(OBJCOPY) -O ihex -R .eeprom $< $@ + +$(OBJ): %.o: %.c libioe.a + @echo " CC $@" + $(Q)$(CC) $(CFLAGS) -c -o $@ $< + +libioe.a: $(CONFIG) + $(Q)$(MAKE) -C ../.. examples/$(EXAMPLE_NAME)/libioe.a O=examples/$(EXAMPLE_NAME) +endif + +TOOL_PATH=../../tools +IOEROOT=../../ +include ../../tools/kconfig.mk |