source: firmware/FSC/src/Makefile

Last change on this file was 17625, checked in by dneise, 11 years ago
initial commit. Can be used to build also on linux, but actually, the real hex-file is still built on Windows using the compiler, that comes with AVR Studio4
  • Property svn:executable set to *
File size: 2.4 KB
Line 
1###############################################################################
2# Makefile for the project FSC
3###############################################################################
4
5## General Flags
6PROJECT = FSC
7MCU = atmega32
8TARGET = FSC.elf
9CC = avr-gcc
10
11CPP = avr-g++
12
13## Options common to compile, link and assembly rules
14COMMON = -mmcu=$(MCU)
15
16## Compile options common for all C compilation units.
17CFLAGS = $(COMMON)
18CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
19CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
20
21## Assembly specific flags
22ASMFLAGS = $(COMMON)
23ASMFLAGS += $(CFLAGS)
24ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
25
26## Linker flags
27LDFLAGS = $(COMMON)
28LDFLAGS += -Wl,-Map=FSC.map
29
30
31## Intel Hex file production flags
32HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
33
34HEX_EEPROM_FLAGS = -j .eeprom
35HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
36HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
37
38
39## Objects that must be built in order to link
40OBJECTS = ad7719_adc.o application.o atmega_adc.o FSC.o muxer_fsc.o spi_master.o timer.o w5100_spi_interface.o
41
42## Objects explicitly added by the user
43LINKONLYOBJECTS =
44
45## Build
46all: $(TARGET) FSC.hex FSC.eep FSC.lss size
47
48## Compile
49ad7719_adc.o: ad7719_adc.c
50 $(CC) $(INCLUDES) $(CFLAGS) -c $<
51
52application.o: application.c
53 $(CC) $(INCLUDES) $(CFLAGS) -c $<
54
55atmega_adc.o: atmega_adc.c
56 $(CC) $(INCLUDES) $(CFLAGS) -c $<
57
58FSC.o: FSC.c
59 $(CC) $(INCLUDES) $(CFLAGS) -c $<
60
61muxer_fsc.o: muxer_fsc.c
62 $(CC) $(INCLUDES) $(CFLAGS) -c $<
63
64spi_master.o: spi_master.c
65 $(CC) $(INCLUDES) $(CFLAGS) -c $<
66
67timer.o: timer.c
68 $(CC) $(INCLUDES) $(CFLAGS) -c $<
69
70w5100_spi_interface.o: w5100_spi_interface.c
71 $(CC) $(INCLUDES) $(CFLAGS) -c $<
72
73##Link
74$(TARGET): $(OBJECTS)
75 $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
76
77%.hex: $(TARGET)
78 avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
79
80%.eep: $(TARGET)
81 -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
82
83%.lss: $(TARGET)
84 avr-objdump -h -S $< > $@
85
86size: ${TARGET}
87 @echo
88 @avr-size ${TARGET}
89
90## Clean target
91.PHONY: clean
92clean:
93 -rm -rf $(OBJECTS) FSC.elf dep/* FSC.hex FSC.eep FSC.lss FSC.map
94
95
96## Other dependencies
97-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
98
Note: See TracBrowser for help on using the repository browser.