X-Git-Url: http://git.kpe.io/?p=avr_serial_lcd.git;a=blobdiff_plain;f=gcc_asm%2FMakefile;fp=gcc_asm%2FMakefile;h=68a8d88bad64bda03be10060dd803894244adb83;hp=0000000000000000000000000000000000000000;hb=ed1c6857c750294747f3705d1d9e37c89658bd5b;hpb=32f563c436c2f9ae80b083280b54aa24af7f5398 diff --git a/gcc_asm/Makefile b/gcc_asm/Makefile new file mode 100644 index 0000000..68a8d88 --- /dev/null +++ b/gcc_asm/Makefile @@ -0,0 +1,74 @@ +############################################################################### +# Makefile for the serial_lcd C version for GCC + +## General Flags +PROJECT = serial_lcd +MCU = attiny2313 +TARGET = $(PROJECT).elf +CC = avr-gcc + +## Options common to compile, link and assembly rules +COMMON = -mmcu=$(MCU) + +## Compile options common for all C compilation units. +CFLAGS = $(COMMON) +CFLAGS += -DF_CPU=14745600UL -Os + +## Assembly specific flags +ASMFLAGS = $(COMMON) -D__ASSEMBLER__ +ASMFLAGS += -DF_CPU=14745600UL -Os +ASMFLAGS += -Wa,-gstabs + +## Linker flags +LDFLAGS = $(COMMON) +LDFLAGS += -Wl,-Map=$(PROJECT).map,--cref + + +## Intel Hex file production flags +HEX_FLASH_FLAGS = -R .eeprom +HEX_EEPROM_FLAGS = -j .eeprom +HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load" +HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings + + +## Objects that must be built in order to link +OBJECTS = $(PROJECT).o + +## Objects explicitly added by the user +LINKONLYOBJECTS = + +## Build +all: $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss size + +## Compile +$(PROJECT).o: ../$(PROJECT).S + $(CC) $(ASMFLAGS) -c $< -o $(PROJECT).o + +##Link +$(TARGET): $(OBJECTS) + $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET) + +$(PROJECT).hex: $(TARGET) + avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@ + +$(PROJECT).eep: $(TARGET) + -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0 + +$(PROJECT).lss: $(TARGET) + avr-objdump -h -S $< > $@ + +.PHONY: size +size: ${TARGET} + @echo $(TARGET) size + @avr-size -C --mcu=${MCU} ${TARGET} + +## Clean target +.PHONY: distclean +distclean: clean + @rm -rf $(PROJECT).hex $(PROJECT).lss $(PROJECT).map $(PROJECT).lst + +.PHONY: clean +clean: + @rm -rf $(OBJECTS) $(TARGET) $(PROJECT).eep + +