aboutsummaryrefslogtreecommitdiff
path: root/code/Makefile
blob: 0bc81a8238ceb124a6a9579203005cd26e309936 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
TARGET = main

MCU = attiny24
F_CPU = 8000000UL

CC = avr-gcc
CFLAGS = -Os -Wall -fpack-struct -fshort-enums -funsigned-bitfields -funsigned-char

LDFLATS = -Wl,-Map,$(TARGET).map
LDFLAGS += -Wl,--gc-sections
TARGET_ARCH = -mmcu=$(MCU)

OBJCOPY = avr-objcopy
OBJSIZE = avr-size

AVRDUDE = avrdude
ADFLAGS = -c usbasp -p t24

SRC=$(wildcard src/*.c) $(wildcard src/*/*.c) $(wildcard src/*/*/*.c)
OBJ=$(patsubst %.c, %.o, $(SRC))
ASM=$(patsubst %.c, %.s, $(SRC))

all: $(OBJ) $(TARGET).hex summary upload

%.o: %.c
	$(CC) $(CFLAGS) -DF_CPU=$(F_CPU) -mmcu=$(MCU) -c -o $@ $<

%.s: %.c
	$(CC) -S $(CFLAGS) -DF_CPU=$(F_CPU) -mmcu=$(MCU) $< -o $@

%.elf: $(OBJ)
	$(CC) $(LDFLAGS) $(TARGET_ARCH) $^ -o $@

%.hex: %.elf
	$(OBJCOPY) -j .text -j .data -O ihex $< $@

summary: $(OBJ) $(TARGET).hex
	@echo ----------------------------------------------------------------------
	@$(OBJSIZE) $(OBJ) $(TARGET).hex

upload: $(TARGET).hex
	$(AVRDUDE) $(ADFLAGS) -U flash:w:$<

clean:
	rm -f $(OBJ) $(HEX) $(ASM)