3 # Copyright 2002,2003, 2004, 2006 Develer S.r.l. (http://www.develer.com/)
7 # GCC-AVR standard Makefile part 1
10 # Author: Bernardo Innocenti <bernie@develer.com>
13 # Revision 1.12 2007/09/29 16:57:39 bernie
14 # Better sparse support.
16 # Revision 1.11 2007/09/29 15:54:14 bernie
17 # Make demo Qt emulator compile again.
19 # Revision 1.10 2007/09/18 10:17:00 batt
22 # Revision 1.9 2006/09/20 14:28:42 marco
23 # Add MOC. Changed OPTCFLAGS.
25 # Revision 1.8 2006/09/19 17:50:56 bernie
26 # Make native build the default.
28 # Revision 1.7 2006/07/19 12:56:24 bernie
29 # Convert to new Doxygen style.
31 # Revision 1.6 2006/06/12 22:05:09 marco
32 # Bring back config wrongly commited
34 # Revision 1.4 2006/05/27 22:41:46 bernie
35 # Tweak optimization flags for loops.
37 # Revision 1.3 2006/05/18 00:40:10 bernie
38 # Setup for AVR development.
40 # Revision 1.2 2006/03/27 04:48:33 bernie
41 # Add CXXFLAGS; Add recursive targets.
43 # Revision 1.1 2006/03/22 09:51:53 bernie
44 # Add build infrastructure.
50 # see local pgm_config.mk for programmer customization.
51 -include pgm_config.mk
52 DPROG ?= -V -c stk500 -P /dev/ttyS0
54 # AVR ISP dongle that blows up easily
55 #DPROG = -V -c stk500 -P /dev/ttyS0
56 #DPROG = -V -c jtag2slow
59 # STK200 parallel cable
60 #DPROG = -c stk200 -E noreset
63 #DPROG = avarice --mkII -j usb -l
65 # PonyProg serial programmer
68 # Set to 1 to build for embedded devices.
69 # e.g. produce target.elf instead of target and target_nostrip
73 OPTCFLAGS = -ffunction-sections -fdata-sections
74 #OPTCFLAGS = -funsafe-loop-optimizations
77 #DEBUGCFLAGS = -gdwarf-2
83 # define some variables based on the AVR base path in $(AVR)
88 AS = $(CC) -x assembler-with-cpp
90 OBJCOPY = $(CROSS)objcopy
101 FLEXCAT = $(top_srcdir)/tools/flexcat/flexcat
103 # For conversion from ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
104 COFFCONVERT=$(OBJCOPY) \
106 --change-section-address .data-0x800000 \
107 --change-section-address .bss-0x800000 \
108 --change-section-address .noinit-0x800000 \
109 --change-section-address .eeprom-0x810000
116 # output format can be srec, ihex (avrobj is always created)
120 # Compiler flags for generating dependencies
123 # Compiler flags for generating source listings
124 LIST_FLAGS = -Wa,-anhlmsd=$(@:.o=.lst)
126 # Linker flags for generating map files
127 ifeq ($(EMBEDDED_TARGET), 1)
128 MAP_FLAGS = -Wl,-Map=$(@:%.elf=%.map),--cref
133 # Compiler warning flags for both C and C++
135 -W -Wformat -Wall -Wundef -Wpointer-arith -Wcast-qual \
136 -Wcast-align -Wwrite-strings -Wsign-compare \
138 -Wextra -Wstrict-aliasing=2 \
139 # -Wunsafe-loop-optimizations
141 # Compiler warning flags for C only
143 -Wmissing-prototypes -Wstrict-prototypes
145 # Default C preprocessor flags (for C, C++ and cpp+as)
148 # Default C compiler flags
149 CFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) $(C_WARNFLAGS) \
150 $(DEP_FLAGS) $(LIST_FLAGS) -std=gnu99
152 # Default C++ compiler flags
153 CXXFLAGS = $(OPTCFLAGS) $(DEBUGCFLAGS) $(WARNFLAGS) \
154 $(DEP_FLAGS) $(LIST_FLAGS)
156 # Default compiler assembly flags
157 CPPAFLAGS = $(DEBUGCFLAGS) -MMD
159 # Default assembler flags
160 ASFLAGS = $(DEBUGCFLAGS)
162 # Default linker flags
163 #LDFLAGS = $(MAP_FLAGS)
165 #bernie: does not complain for missing symbols!
166 LDFLAGS = $(MAP_FLAGS) -Wl,--gc-sections
169 AVRDUDEFLAGS = $(DPROG)