Commit mthomas changes to GCC and port those changes to IAR
[avr_bc100.git] / BaseTinyFirmware / GCC / avr458 / Makefile
1 ###############################################################################\r
2 # Makefile for the project avr458\r
3 ###############################################################################\r
4 \r
5 ## General Flags\r
6 PROJECT = avr458\r
7 MCU = attiny861\r
8 TARGET = $(PROJECT).elf\r
9 CC = avr-gcc\r
10 \r
11 ## Options common to compile, link and assembly rules\r
12 COMMON = -mmcu=$(MCU)\r
13 \r
14 ## Compile options common for all C compilation units.\r
15 CFLAGS = $(COMMON)\r
16 CFLAGS += -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums\r
17 CFLAGS += -Wall -Wstrict-prototypes -Wundef -Wa,-adhlns=./$(*F).lst\r
18 CFLAGS += -fno-inline-small-functions -fno-split-wide-types\r
19 CFLAGS += -MMD -MP -MF dep/$(@F).d  \r
20 CFLAGS += -DLIION\r
21 \r
22 ## Assembly specific flags\r
23 ASMFLAGS = $(COMMON)\r
24 ASMFLAGS += $(CFLAGS)\r
25 ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2\r
26 \r
27 ## Linker flags\r
28 LDFLAGS = $(COMMON)\r
29 LDFLAGS +=  -Wl,-Map=$(PROJECT).map,--cref -Wl,-relax\r
30 \r
31 ## Intel Hex file production flags\r
32 HEX_FLASH_FLAGS = -R .eeprom\r
33 HEX_EEPROM_FLAGS = -j .eeprom\r
34 HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"\r
35 HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings\r
36 \r
37 \r
38 ## Libraries\r
39 LIBS = -lm \r
40 \r
41 ## Objects that must be built in order to link\r
42 OBJECTS = ADC.o battery.o chargefunc.o main.o menu.o LIIONcharge.o OWI.o PWM.o statefunc.o time.o USI.o \r
43 \r
44 ## Objects explicitly added by the user\r
45 LINKONLYOBJECTS = \r
46 \r
47 ## Build\r
48 all: $(TARGET) $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss size\r
49 \r
50 ## Compile\r
51 ADC.o: ../ADC.c\r
52         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
53 \r
54 battery.o: ../battery.c\r
55         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
56 \r
57 chargefunc.o: ../chargefunc.c\r
58         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
59 \r
60 main.o: ../main.c\r
61         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
62 \r
63 menu.o: ../menu.c\r
64         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
65 \r
66 LIIONcharge.o: ../LIIONcharge.c\r
67         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
68 \r
69 OWI.o: ../OWI.c\r
70         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
71 \r
72 PWM.o: ../PWM.c\r
73         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
74 \r
75 statefunc.o: ../statefunc.c\r
76         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
77 \r
78 time.o: ../time.c\r
79         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
80 \r
81 USI.o: ../USI.c\r
82         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
83 \r
84 ##Link\r
85 $(TARGET): $(OBJECTS)\r
86          $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)\r
87 \r
88 %.hex: $(TARGET)\r
89         avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@\r
90 \r
91 %.eep: $(TARGET)\r
92         -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0\r
93 \r
94 %.lss: $(TARGET)\r
95         avr-objdump -h -S $< > $@\r
96 \r
97 size: ${TARGET}\r
98         @echo\r
99         @avr-size -C --mcu=${MCU} ${TARGET}\r
100 \r
101 ## Clean target\r
102 .PHONY: clean\r
103 clean:\r
104         -rm -rf $(OBJECTS) $(PROJECT).elf dep $(PROJECT).hex $(PROJECT).eep $(PROJECT).lss $(PROJECT).map *.lst\r
105 \r
106 \r
107 ## Other dependencies\r
108 -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)\r