|
|
|
@ -60,7 +60,7 @@ ASRC =
|
|
|
|
|
# Optimization level, can be [0, 1, 2, 3, s].
|
|
|
|
|
# 0 = turn off optimization. s = optimize for size.
|
|
|
|
|
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
|
|
|
|
OPT = 0
|
|
|
|
|
OPT = s
|
|
|
|
|
|
|
|
|
|
# Debugging format.
|
|
|
|
|
# Native formats for AVR-GCC's -g are stabs [default], or dwarf-2.
|
|
|
|
@ -201,12 +201,11 @@ AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
# Define directories, if needed.
|
|
|
|
|
DIRAVR = c:/winavr
|
|
|
|
|
DIRAVRBIN = $(DIRAVR)/bin
|
|
|
|
|
DIRAVRUTILS = $(DIRAVR)/utils/bin
|
|
|
|
|
DIRINC = .
|
|
|
|
|
DIRLIB = $(DIRAVR)/avr/lib
|
|
|
|
|
|
|
|
|
|
# DIRAVR = .
|
|
|
|
|
# DIRAVRBIN = $(DIRAVR)/bin
|
|
|
|
|
# DIRAVRUTILS = $(DIRAVR)/utils/bin
|
|
|
|
|
# DIRINC = .
|
|
|
|
|
# DIRLIB = $(DIRAVR)/avr/lib
|
|
|
|
|
|
|
|
|
|
# Define programs and commands.
|
|
|
|
|
SHELL = sh
|
|
|
|
@ -219,9 +218,6 @@ AVRDUDE = avrdude
|
|
|
|
|
REMOVE = rm -f
|
|
|
|
|
COPY = cp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Define Messages
|
|
|
|
|
# English
|
|
|
|
|
MSG_ERRORS_NONE = Errors: none
|
|
|
|
@ -240,29 +236,20 @@ MSG_COMPILING = Compiling:
|
|
|
|
|
MSG_ASSEMBLING = Assembling:
|
|
|
|
|
MSG_CLEANING = Cleaning project:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Define all object files.
|
|
|
|
|
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o)
|
|
|
|
|
|
|
|
|
|
# Define all listing files.
|
|
|
|
|
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Compiler flags to generate dependency files.
|
|
|
|
|
GENDEPFLAGS = -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Combine all necessary flags and optional flags.
|
|
|
|
|
# Add target processor to flags.
|
|
|
|
|
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
|
|
|
|
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Default target.
|
|
|
|
|
all: begin gccversion sizebefore build sizeafter finished end
|
|
|
|
|
|
|
|
|
@ -274,8 +261,6 @@ eep: $(TARGET).eep
|
|
|
|
|
lss: $(TARGET).lss
|
|
|
|
|
sym: $(TARGET).sym
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Eye candy.
|
|
|
|
|
# AVR Studio 3.x does not check make's exit code but relies on
|
|
|
|
|
# the following magic strings to be generated by the compile job.
|
|
|
|
@ -289,25 +274,19 @@ finished:
|
|
|
|
|
end:
|
|
|
|
|
@echo $(MSG_END)
|
|
|
|
|
@echo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Display size of file.
|
|
|
|
|
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
|
|
|
|
ELFSIZE = $(SIZE) -A $(TARGET).elf
|
|
|
|
|
sizebefore:
|
|
|
|
|
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi
|
|
|
|
|
|
|
|
|
|
sizeafter:
|
|
|
|
|
@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Display compiler version information.
|
|
|
|
|
gccversion :
|
|
|
|
|
@$(CC) --version
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Program the device.
|
|
|
|
|
program: $(TARGET).hex $(TARGET).eep
|
|
|
|
|
$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
|
|
|
@ -319,20 +298,16 @@ COFFCONVERT=$(OBJCOPY) --debugging \
|
|
|
|
|
--change-section-address .noinit-0x800000 \
|
|
|
|
|
--change-section-address .eeprom-0x810000
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
coff: $(TARGET).elf
|
|
|
|
|
@echo
|
|
|
|
|
@echo $(MSG_COFF) $(TARGET).cof
|
|
|
|
|
$(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
extcoff: $(TARGET).elf
|
|
|
|
|
@echo
|
|
|
|
|
@echo $(MSG_EXTENDED_COFF) $(TARGET).cof
|
|
|
|
|
$(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Create final output files (.hex, .eep) from ELF output file.
|
|
|
|
|
%.hex: %.elf
|
|
|
|
|
@echo
|
|
|
|
@ -357,8 +332,6 @@ extcoff: $(TARGET).elf
|
|
|
|
|
@echo $(MSG_SYMBOL_TABLE) $@
|
|
|
|
|
$(NM) -n $< > $@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Link: create ELF output file from object files.
|
|
|
|
|
.SECONDARY : $(TARGET).elf
|
|
|
|
|
.PRECIOUS : $(OBJ)
|
|
|
|
@ -366,6 +339,8 @@ extcoff: $(TARGET).elf
|
|
|
|
|
@echo
|
|
|
|
|
@echo $(MSG_LINKING) $@
|
|
|
|
|
$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)
|
|
|
|
|
@echo
|
|
|
|
|
$(SIZE) -C --mcu=$(MCU) $(TARGET).elf
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Compile: create object files from C source files.
|
|
|
|
@ -374,23 +349,18 @@ extcoff: $(TARGET).elf
|
|
|
|
|
@echo $(MSG_COMPILING) $<
|
|
|
|
|
$(CC) -c $(ALL_CFLAGS) $< -o $@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Compile: create assembler files from C source files.
|
|
|
|
|
%.s : %.c
|
|
|
|
|
$(CC) -S $(ALL_CFLAGS) $< -o $@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Assemble: create object files from assembler source files.
|
|
|
|
|
%.o : %.S
|
|
|
|
|
@echo
|
|
|
|
|
@echo $(MSG_ASSEMBLING) $<
|
|
|
|
|
$(CC) -c $(ALL_ASFLAGS) $< -o $@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Target: clean project.
|
|
|
|
|
clean: begin clean_list finished end
|
|
|
|
|
|
|
|
|
|
clean_list :
|
|
|
|
|
@echo
|
|
|
|
|
@echo $(MSG_CLEANING)
|
|
|
|
@ -411,12 +381,9 @@ clean_list :
|
|
|
|
|
$(REMOVE) $(SRC:.c=.d)
|
|
|
|
|
$(REMOVE) .dep/*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Include the dependency files.
|
|
|
|
|
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Listing of phony targets.
|
|
|
|
|
.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
|
|
|
|
build elf hex eep lss sym coff extcoff \
|
|
|
|
|