<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://old.hacdc.org/index.php?action=history&amp;feed=atom&amp;title=AVR_Makefile</id>
	<title>AVR Makefile - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://old.hacdc.org/index.php?action=history&amp;feed=atom&amp;title=AVR_Makefile"/>
	<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php?title=AVR_Makefile&amp;action=history"/>
	<updated>2026-05-07T14:14:08Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://old.hacdc.org/index.php?title=AVR_Makefile&amp;diff=445&amp;oldid=prev</id>
		<title>Griph at 21:48, 8 June 2008</title>
		<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php?title=AVR_Makefile&amp;diff=445&amp;oldid=prev"/>
		<updated>2008-06-08T21:48:22Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 21:48, 8 June 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l390&quot;&gt;Line 390:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 390:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/nowiki&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category: AVR Tutorial]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Griph</name></author>
	</entry>
	<entry>
		<id>https://old.hacdc.org/index.php?title=AVR_Makefile&amp;diff=351&amp;oldid=prev</id>
		<title>66.92.147.234: New page: &lt;pre&gt;&lt;nowiki&gt;  # WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. # Modified (bringing often-changed options to the top) by Elliot Williams  # make all = Make sof...</title>
		<link rel="alternate" type="text/html" href="https://old.hacdc.org/index.php?title=AVR_Makefile&amp;diff=351&amp;oldid=prev"/>
		<updated>2008-06-02T19:32:04Z</updated>

		<summary type="html">&lt;p&gt;New page: &amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;  # WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al. # Modified (bringing often-changed options to the top) by Elliot Williams  # make all = Make sof...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# WinAVR Sample makefile written by Eric B. Weddington, Jörg Wunsch, et al.&lt;br /&gt;
# Modified (bringing often-changed options to the top) by Elliot Williams&lt;br /&gt;
&lt;br /&gt;
# make all = Make software and program&lt;br /&gt;
# make clean = Clean out built project files.&lt;br /&gt;
# make program = Download the hex file to the device, using avrdude.  Please&lt;br /&gt;
#                customize the avrdude settings below first!&lt;br /&gt;
&lt;br /&gt;
# Microcontroller Type&lt;br /&gt;
MCU = attiny13&lt;br /&gt;
# MCU = attiny2313&lt;br /&gt;
# MCU = atmega8&lt;br /&gt;
# MCU = attiny45&lt;br /&gt;
&lt;br /&gt;
# Target file name (without extension).&lt;br /&gt;
TARGET = LED_Demo&lt;br /&gt;
&lt;br /&gt;
# Programming hardware: type avrdude -c ?&lt;br /&gt;
# to get a full listing.&lt;br /&gt;
# AVRDUDE_PROGRAMMER = dapa&lt;br /&gt;
AVRDUDE_PROGRAMMER = usbtiny       &lt;br /&gt;
# AVRDUDE_PROGRAMMER = dt006&lt;br /&gt;
&lt;br /&gt;
AVRDUDE_PORT = /dev/usb    # not really needed for usb &lt;br /&gt;
#AVRDUDE_PORT = /dev/parport0           # linux&lt;br /&gt;
# AVRDUDE_PORT = lpt1		       # windows&lt;br /&gt;
&lt;br /&gt;
############# Don&amp;#039;t need to change below here for most purposes  (Elliot)&lt;br /&gt;
&lt;br /&gt;
# Optimization level, can be [0, 1, 2, 3, s]. 0 turns off optimization.&lt;br /&gt;
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)&lt;br /&gt;
OPT = s&lt;br /&gt;
&lt;br /&gt;
# Output format. (can be srec, ihex, binary)&lt;br /&gt;
FORMAT = ihex&lt;br /&gt;
&lt;br /&gt;
# List C source files here. (C dependencies are automatically generated.)&lt;br /&gt;
SRC = $(TARGET).c&lt;br /&gt;
&lt;br /&gt;
# If there is more than one source file, append them above, or modify and&lt;br /&gt;
# uncomment the following:&lt;br /&gt;
#SRC += foo.c bar.c&lt;br /&gt;
&lt;br /&gt;
# You can also wrap lines by appending a backslash to the end of the line:&lt;br /&gt;
#SRC += baz.c \&lt;br /&gt;
#xyzzy.c&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# List Assembler source files here.&lt;br /&gt;
# Make them always end in a capital .S.  Files ending in a lowercase .s&lt;br /&gt;
# will not be considered source files but generated files (assembler&lt;br /&gt;
# output from the compiler), and will be deleted upon &amp;quot;make clean&amp;quot;!&lt;br /&gt;
# Even though the DOS/Win* filesystem matches both .s and .S the same,&lt;br /&gt;
# it will preserve the spelling of the filenames, and gcc itself does&lt;br /&gt;
# care about how the name is spelled on its command-line.&lt;br /&gt;
ASRC = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# List any extra directories to look for include files here.&lt;br /&gt;
#     Each directory must be seperated by a space.&lt;br /&gt;
EXTRAINCDIRS = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Optional compiler flags.&lt;br /&gt;
#  -g:        generate debugging information (for GDB, or for COFF conversion)&lt;br /&gt;
#  -O*:       optimization level&lt;br /&gt;
#  -f...:     tuning, see gcc manual and avr-libc documentation&lt;br /&gt;
#  -Wall...:  warning level&lt;br /&gt;
#  -Wa,...:   tell GCC to pass this to the assembler.&lt;br /&gt;
#    -ahlms:  create assembler listing&lt;br /&gt;
CFLAGS = -g -O$(OPT) \&lt;br /&gt;
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \&lt;br /&gt;
-Wall -Wstrict-prototypes \&lt;br /&gt;
-Wa,-adhlns=$(&amp;lt;:.c=.lst) \&lt;br /&gt;
$(patsubst %,-I%,$(EXTRAINCDIRS))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Set a &amp;quot;language standard&amp;quot; compiler flag.&lt;br /&gt;
#   Unremark just one line below to set the language standard to use.&lt;br /&gt;
#   gnu99 = C99 + GNU extensions. See GCC manual for more information.&lt;br /&gt;
#CFLAGS += -std=c89&lt;br /&gt;
#CFLAGS += -std=gnu89&lt;br /&gt;
#CFLAGS += -std=c99&lt;br /&gt;
CFLAGS += -std=gnu99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Optional assembler flags.&lt;br /&gt;
#  -Wa,...:   tell GCC to pass this to the assembler.&lt;br /&gt;
#  -ahlms:    create listing&lt;br /&gt;
#  -gstabs:   have the assembler create line number information; note that&lt;br /&gt;
#             for use in COFF files, additional information about filenames&lt;br /&gt;
#             and function names needs to be present in the assembler source&lt;br /&gt;
#             files -- see avr-libc docs [FIXME: not yet described there]&lt;br /&gt;
ASFLAGS = -Wa,-adhlns=$(&amp;lt;:.S=.lst),-gstabs &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Optional linker flags.&lt;br /&gt;
#  -Wl,...:   tell GCC to pass this to linker.&lt;br /&gt;
#  -Map:      create map file&lt;br /&gt;
#  --cref:    add cross reference to  map file&lt;br /&gt;
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Additional libraries&lt;br /&gt;
&lt;br /&gt;
# Minimalistic printf version&lt;br /&gt;
#LDFLAGS += -Wl,-u,vfprintf -lprintf_min&lt;br /&gt;
&lt;br /&gt;
# Floating point printf version (requires -lm below)&lt;br /&gt;
#LDFLAGS += -Wl,-u,vfprintf -lprintf_flt&lt;br /&gt;
&lt;br /&gt;
# -lm = math library&lt;br /&gt;
LDFLAGS += -lm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Programming support using avrdude. Settings and variables.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex&lt;br /&gt;
#AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep&lt;br /&gt;
&lt;br /&gt;
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)&lt;br /&gt;
&lt;br /&gt;
# Uncomment the following if you want avrdude&amp;#039;s erase cycle counter.&lt;br /&gt;
# Note that this counter needs to be initialized first using -Yn,&lt;br /&gt;
# see avrdude manual.&lt;br /&gt;
#AVRDUDE_ERASE += -y&lt;br /&gt;
&lt;br /&gt;
# Uncomment the following if you do /not/ wish a verification to be&lt;br /&gt;
# performed after programming the device.&lt;br /&gt;
#AVRDUDE_FLAGS += -V&lt;br /&gt;
&lt;br /&gt;
# Increase verbosity level.  Please use this when submitting bug&lt;br /&gt;
# reports about avrdude. See &amp;lt;http://savannah.nongnu.org/projects/avrdude&amp;gt; &lt;br /&gt;
# to submit bug reports.&lt;br /&gt;
#AVRDUDE_FLAGS += -v -v&lt;br /&gt;
&lt;br /&gt;
#Run while cable attached or don&amp;#039;t&lt;br /&gt;
AVRDUDE_FLAGS += -E reset #keep chip disabled while cable attached&lt;br /&gt;
#AVRDUDE_FLAGS += -E noreset&lt;br /&gt;
&lt;br /&gt;
#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x04:m #run with 8 Mhz clock&lt;br /&gt;
&lt;br /&gt;
#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x21:m #run with 1 Mhz clock #default clock mode&lt;br /&gt;
&lt;br /&gt;
#AVRDUDE_WRITE_FLASH = -U lfuse:w:0x01:m #run with 1 Mhz clock no start up time&lt;br /&gt;
&lt;br /&gt;
# ---------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# Define directories, if needed.&lt;br /&gt;
DIRAVR = c:/winavr&lt;br /&gt;
DIRAVRBIN = $(DIRAVR)/bin&lt;br /&gt;
DIRAVRUTILS = $(DIRAVR)/utils/bin&lt;br /&gt;
DIRINC = .&lt;br /&gt;
DIRLIB = $(DIRAVR)/avr/lib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Define programs and commands.&lt;br /&gt;
SHELL = sh&lt;br /&gt;
&lt;br /&gt;
CC = avr-gcc&lt;br /&gt;
&lt;br /&gt;
OBJCOPY = avr-objcopy&lt;br /&gt;
OBJDUMP = avr-objdump&lt;br /&gt;
SIZE = avr-size&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Programming support using avrdude.&lt;br /&gt;
AVRDUDE = avrdude&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
REMOVE = rm -f&lt;br /&gt;
COPY = cp&lt;br /&gt;
&lt;br /&gt;
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex&lt;br /&gt;
ELFSIZE = $(SIZE) -A $(TARGET).elf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Define Messages&lt;br /&gt;
# English&lt;br /&gt;
MSG_ERRORS_NONE = Errors: none&lt;br /&gt;
MSG_BEGIN = -------- begin --------&lt;br /&gt;
MSG_END = --------  end  --------&lt;br /&gt;
MSG_SIZE_BEFORE = Size before: &lt;br /&gt;
MSG_SIZE_AFTER = Size after:&lt;br /&gt;
MSG_COFF = Converting to AVR COFF:&lt;br /&gt;
MSG_EXTENDED_COFF = Converting to AVR Extended COFF:&lt;br /&gt;
MSG_FLASH = Creating load file for Flash:&lt;br /&gt;
MSG_EEPROM = Creating load file for EEPROM:&lt;br /&gt;
MSG_EXTENDED_LISTING = Creating Extended Listing:&lt;br /&gt;
MSG_SYMBOL_TABLE = Creating Symbol Table:&lt;br /&gt;
MSG_LINKING = Linking:&lt;br /&gt;
MSG_COMPILING = Compiling:&lt;br /&gt;
MSG_ASSEMBLING = Assembling:&lt;br /&gt;
MSG_CLEANING = Cleaning project:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Define all object files.&lt;br /&gt;
OBJ = $(SRC:.c=.o) $(ASRC:.S=.o) &lt;br /&gt;
&lt;br /&gt;
# Define all listing files.&lt;br /&gt;
LST = $(ASRC:.S=.lst) $(SRC:.c=.lst)&lt;br /&gt;
&lt;br /&gt;
# Combine all necessary flags and optional flags.&lt;br /&gt;
# Add target processor to flags.&lt;br /&gt;
ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS)&lt;br /&gt;
ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Default target: make program!&lt;br /&gt;
all: begin gccversion sizebefore $(TARGET).elf $(TARGET).hex $(TARGET).eep \&lt;br /&gt;
	$(TARGET).lss $(TARGET).sym sizeafter finished end&lt;br /&gt;
#	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)&lt;br /&gt;
&lt;br /&gt;
# Eye candy.&lt;br /&gt;
# AVR Studio 3.x does not check make&amp;#039;s exit code but relies on&lt;br /&gt;
# the following magic strings to be generated by the compile job.&lt;br /&gt;
begin:&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_BEGIN)&lt;br /&gt;
&lt;br /&gt;
finished:&lt;br /&gt;
	@echo $(MSG_ERRORS_NONE)&lt;br /&gt;
&lt;br /&gt;
end:&lt;br /&gt;
	@echo $(MSG_END)&lt;br /&gt;
	@echo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Display size of file.&lt;br /&gt;
sizebefore:&lt;br /&gt;
	@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); echo; fi&lt;br /&gt;
&lt;br /&gt;
sizeafter:&lt;br /&gt;
	@if [ -f $(TARGET).elf ]; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); echo; fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Display compiler version information.&lt;br /&gt;
gccversion : &lt;br /&gt;
	@$(CC) --version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Convert ELF to COFF for use in debugging / simulating in&lt;br /&gt;
# AVR Studio or VMLAB.&lt;br /&gt;
COFFCONVERT=$(OBJCOPY) --debugging \&lt;br /&gt;
	--change-section-address .data-0x800000 \&lt;br /&gt;
	--change-section-address .bss-0x800000 \&lt;br /&gt;
	--change-section-address .noinit-0x800000 \&lt;br /&gt;
	--change-section-address .eeprom-0x810000 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
coff: $(TARGET).elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_COFF) $(TARGET).cof&lt;br /&gt;
	$(COFFCONVERT) -O coff-avr $&amp;lt; $(TARGET).cof&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
extcoff: $(TARGET).elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_EXTENDED_COFF) $(TARGET).cof&lt;br /&gt;
	$(COFFCONVERT) -O coff-ext-avr $&amp;lt; $(TARGET).cof&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Program the device.  &lt;br /&gt;
program: $(TARGET).hex $(TARGET).eep&lt;br /&gt;
	$(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Create final output files (.hex, .eep) from ELF output file.&lt;br /&gt;
%.hex: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_FLASH) $@&lt;br /&gt;
	$(OBJCOPY) -O $(FORMAT) -R .eeprom $&amp;lt; $@&lt;br /&gt;
&lt;br /&gt;
%.eep: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_EEPROM) $@&lt;br /&gt;
	-$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; \&lt;br /&gt;
	--change-section-lma .eeprom=0 -O $(FORMAT) $&amp;lt; $@&lt;br /&gt;
&lt;br /&gt;
# Create extended listing file from ELF output file.&lt;br /&gt;
%.lss: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_EXTENDED_LISTING) $@&lt;br /&gt;
	$(OBJDUMP) -h -S $&amp;lt; &amp;gt; $@&lt;br /&gt;
&lt;br /&gt;
# Create a symbol table from ELF output file.&lt;br /&gt;
%.sym: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_SYMBOL_TABLE) $@&lt;br /&gt;
	avr-nm -n $&amp;lt; &amp;gt; $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Link: create ELF output file from object files.&lt;br /&gt;
.SECONDARY : $(TARGET).elf&lt;br /&gt;
.PRECIOUS : $(OBJ)&lt;br /&gt;
%.elf: $(OBJ)&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_LINKING) $@&lt;br /&gt;
	$(CC) $(ALL_CFLAGS) $(OBJ) --output $@ $(LDFLAGS)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Compile: create object files from C source files.&lt;br /&gt;
%.o : %.c&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_COMPILING) $&amp;lt;&lt;br /&gt;
	$(CC) -c $(ALL_CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Compile: create assembler files from C source files.&lt;br /&gt;
%.s : %.c&lt;br /&gt;
	$(CC) -S $(ALL_CFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Assemble: create object files from assembler source files.&lt;br /&gt;
%.o : %.S&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_ASSEMBLING) $&amp;lt;&lt;br /&gt;
	$(CC) -c $(ALL_ASFLAGS) $&amp;lt; -o $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Target: clean project.&lt;br /&gt;
clean: begin clean_list finished end&lt;br /&gt;
&lt;br /&gt;
clean_list :&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_CLEANING)&lt;br /&gt;
	$(REMOVE) $(TARGET).hex&lt;br /&gt;
	$(REMOVE) $(TARGET).eep&lt;br /&gt;
	$(REMOVE) $(TARGET).obj&lt;br /&gt;
	$(REMOVE) $(TARGET).cof&lt;br /&gt;
	$(REMOVE) $(TARGET).elf&lt;br /&gt;
	$(REMOVE) $(TARGET).map&lt;br /&gt;
	$(REMOVE) $(TARGET).obj&lt;br /&gt;
	$(REMOVE) $(TARGET).a90&lt;br /&gt;
	$(REMOVE) $(TARGET).sym&lt;br /&gt;
	$(REMOVE) $(TARGET).lnk&lt;br /&gt;
	$(REMOVE) $(TARGET).lss&lt;br /&gt;
	$(REMOVE) $(OBJ)&lt;br /&gt;
	$(REMOVE) $(LST)&lt;br /&gt;
	$(REMOVE) $(SRC:.c=.s)&lt;br /&gt;
	$(REMOVE) $(SRC:.c=.d)&lt;br /&gt;
	$(REMOVE) *~&lt;br /&gt;
&lt;br /&gt;
# Automatically generate C source code dependencies. &lt;br /&gt;
# (Code originally taken from the GNU make user manual and modified &lt;br /&gt;
# (See README.txt Credits).)&lt;br /&gt;
#&lt;br /&gt;
# Note that this will work with sh (bash) and sed that is shipped with WinAVR&lt;br /&gt;
# (see the SHELL variable defined above).&lt;br /&gt;
# This may not work with other shells or other seds.&lt;br /&gt;
#&lt;br /&gt;
%.d: %.c&lt;br /&gt;
	set -e; $(CC) -MM $(ALL_CFLAGS) $&amp;lt; \&lt;br /&gt;
	| sed &amp;#039;s,\(.*\)\.o[ :]*,\1.o \1.d : ,g&amp;#039; &amp;gt; $@; \&lt;br /&gt;
	[ -s $@ ] || rm -f $@&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Remove the &amp;#039;-&amp;#039; if you want to see the dependency files generated.&lt;br /&gt;
-include $(SRC:.c=.d)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Listing of phony targets.&lt;br /&gt;
.PHONY : all begin finish end sizebefore sizeafter gccversion coff extcoff \&lt;br /&gt;
	clean clean_list program&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>66.92.147.234</name></author>
	</entry>
</feed>