ARGH
[matches/honours.git] / research / TCS / apparatus / source_code / default / Makefile
1 ###############################################################################\r
2 # Makefile for the project datalog\r
3 ###############################################################################\r
4 \r
5 ## General Flags\r
6 PROJECT = datalog\r
7 MCU = atmega169p\r
8 TARGET = datalog.elf\r
9 CC = avr-gcc\r
10 \r
11 CPP = avr-g++\r
12 \r
13 ## Options common to compile, link and assembly rules\r
14 COMMON = -mmcu=$(MCU)\r
15 \r
16 ## Compile options common for all C compilation units.\r
17 CFLAGS = $(COMMON)\r
18 CFLAGS += -Wall -gdwarf-2 -std=gnu99 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums\r
19 CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d \r
20 \r
21 ## Assembly specific flags\r
22 ASMFLAGS = $(COMMON)\r
23 ASMFLAGS += $(CFLAGS)\r
24 ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2\r
25 \r
26 ## Linker flags\r
27 LDFLAGS = $(COMMON)\r
28 LDFLAGS +=  -Wl,-Map=datalog.map\r
29 \r
30 \r
31 ## Intel Hex file production flags\r
32 HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature\r
33 \r
34 HEX_EEPROM_FLAGS = -j .eeprom\r
35 HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"\r
36 HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings\r
37 \r
38 \r
39 ## Objects that must be built in order to link\r
40 OBJECTS = adc.o LCD_Driver.o LCD_functions.o main.o timer.o usart.o printf.o parser.o commands.o dac.o \r
41 \r
42 ## Objects explicitly added by the user\r
43 LINKONLYOBJECTS = \r
44 \r
45 ## Build\r
46 all: $(TARGET) datalog.hex datalog.eep datalog.lss## Compile\r
47 adc.o: ../adc.c\r
48         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
49 \r
50 LCD_Driver.o: ../LCD_Driver.c\r
51         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
52 \r
53 LCD_functions.o: ../LCD_functions.c\r
54         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
55 \r
56 main.o: ../main.c\r
57         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
58 \r
59 timer.o: ../timer.c\r
60         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
61 \r
62 usart.o: ../usart.c\r
63         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
64 \r
65 printf.o: ../printf.c\r
66         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
67 \r
68 parser.o: ../parser.c\r
69         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
70 \r
71 commands.o: ../commands.c\r
72         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
73 \r
74 dac.o: ../dac.c\r
75         $(CC) $(INCLUDES) $(CFLAGS) -c  $<\r
76 \r
77 ##Link\r
78 $(TARGET): $(OBJECTS)\r
79          $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)\r
80 \r
81 %.hex: $(TARGET)\r
82         avr-objcopy -O ihex $(HEX_FLASH_FLAGS)  $< $@\r
83 \r
84 %.eep: $(TARGET)\r
85         -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0\r
86 \r
87 %.lss: $(TARGET)\r
88         avr-objdump -h -S $< > $@\r
89 \r
90 ## Clean target\r
91 .PHONY: clean\r
92 clean:\r
93         -rm -rf $(OBJECTS) datalog.elf dep/* datalog.hex datalog.eep datalog.lss datalog.map\r
94 \r
95 \r
96 ## Other dependencies\r
97 -include $(shell mkdir dep 2>NUL) $(wildcard dep/*)\r
98 \r

UCC git Repository :: git.ucc.asn.au