1 | ###############################################################################
|
2 | # Makefile for the project TransistorTestNew
|
3 | ###############################################################################
|
4 |
|
5 | ## General Flags
|
6 | PROJECT = TransistorTestNew
|
7 | # available languages are: LANG_ENGLISH, LANG_GERMAN, LANG_POLISH, LANG_CZECH, LANG_SLOWAK
|
8 | UI_LANGUAGE = LANG_ENGLISH
|
9 | MCU = atmega8
|
10 | TARGET = TransistorTestNew.elf
|
11 | CC = avr-gcc
|
12 |
|
13 | # programmer type
|
14 | PROGRAMMER=jtag2isp
|
15 | PORT=usb
|
16 |
|
17 | CPP = avr-g++
|
18 |
|
19 | ## Options common to compile, link and assembly rules
|
20 | COMMON = -mmcu=$(MCU)
|
21 |
|
22 | ## Compile options common for all C compilation units.
|
23 | CFLAGS = $(COMMON)
|
24 | CFLAGS += -Wall -gdwarf-2 -std=gnu99 -DF_CPU=1000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
25 | CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
|
26 |
|
27 | ## Assembly specific flags
|
28 | ASMFLAGS = $(COMMON)
|
29 | ASMFLAGS += $(CFLAGS)
|
30 | ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
|
31 |
|
32 | ## Linker flags
|
33 | LDFLAGS = $(COMMON)
|
34 | LDFLAGS += -Wl,-Map=TransistorTestNew.map
|
35 |
|
36 |
|
37 | ## Intel Hex file production flags
|
38 | HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
|
39 |
|
40 | HEX_EEPROM_FLAGS = -j .eeprom
|
41 | HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
|
42 | HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
|
43 |
|
44 |
|
45 | ## Objects that must be built in order to link
|
46 | OBJECTS = main.o lcd-routines.o swuart.o
|
47 |
|
48 | ## Objects explicitly added by the user
|
49 | LINKONLYOBJECTS =
|
50 |
|
51 | ## Build
|
52 | all: $(TARGET) TransistorTestNew.hex TransistorTestNew.eep TransistorTestNew.lss size
|
53 |
|
54 | ## Compile
|
55 | main.o: ./main.c
|
56 | $(CC) $(INCLUDES) $(CFLAGS) -D$(UI_LANGUAGE) -c $<
|
57 |
|
58 | lcd-routines.o: ./lcd-routines.c
|
59 | $(CC) $(INCLUDES) $(CFLAGS) -c $<
|
60 |
|
61 | swuart.o: ./swuart.S
|
62 | $(CC) $(INCLUDES) $(CFLAGS) -c $<
|
63 |
|
64 | ##Link
|
65 | $(TARGET): $(OBJECTS)
|
66 | $(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
|
67 |
|
68 | %.hex: $(TARGET)
|
69 | avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
|
70 |
|
71 | %.eep: $(TARGET)
|
72 | -avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
|
73 |
|
74 | %.lss: $(TARGET)
|
75 | avr-objdump -h -S $< > $@
|
76 |
|
77 | size: ${TARGET}
|
78 | @echo
|
79 | @avr-size -C --mcu=${MCU} ${TARGET}
|
80 |
|
81 | ## Clean target
|
82 | .PHONY: clean
|
83 | clean:
|
84 | -rm -rf $(OBJECTS) TransistorTestNew.elf dep/* TransistorTestNew.hex TransistorTestNew.eep TransistorTestNew.lss TransistorTestNew.map
|
85 |
|
86 |
|
87 | ## Other dependencies
|
88 | -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
|
89 |
|
90 | # device programming
|
91 | fuses-m8:
|
92 | avrdude -c $(PROGRAMMER) -B 10.0 -p m8 -P $(PORT) -F -U lfuse:w:0x01:m -U hfuse:w:0xd9:m
|
93 |
|
94 | fuses-m48:
|
95 | avrdude -c $(PROGRAMMER) -B 10.0 -p m8 -P $(PORT) -F -U lfuse:w:0x42:m -U hfuse:w:0xdc:m
|
96 |
|
97 | upload:
|
98 | avrdude -c $(PROGRAMMER) -B 10.0 -p m8 -P $(PORT) -F -U flash:w:./TransistorTestNew.hex:a \
|
99 | -U eeprom:w:./TransistorTestNew.eep:a
|