summaryrefslogtreecommitdiff
path: root/Makefile
blob: bc3185231f7c8aab61c79f5e8764486e70dab705 (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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
IDIR=include

# -------------------------------------------------------------------
# Computer stuff
TPDIR=3rd-party
DEFINES=-DDETERMINISTIC
CFLAGS=-O3 -Wall -Wextra -std=c99 -D_DEFAULT_SOURCE $(DEFINES) -I$(IDIR) -I$(TPDIR)
LIBS=

SRCS=$(wildcard include/*.c) $(wildcard 3rd-party/*.c)
OBJS=$(SRCS:.c=.o)

PROG=ctaklm
STAT=pptdb
SIZE=size

# -------------------------------------------------------------------
# MCU stuff
MCU=atmega32
F_CPU=20000000UL
ACC=avr-gcc
ACFLAGS=-Os -Wall -fpack-struct -fshort-enums -funsigned-bitfields -funsigned-char -I$(IDIR)
AOBJCOPY=avr-objcopy
AOBJSIZE=avr-size

AVRDUDE=avrdude
ADFLAGS=-c usbasp -p t24

TARGET=mcu
AHEX=$(TARGET).hex
ASRC=src/$(TARGET).c $(wildcard include/*.c)
AOBJ=$(patsubst %.c, %.o, $(ASRC))
AASM=$(patsubst %.c, %.s, $(ASRC))

# -------------------------------------------------------------------
# Targets

%.o: %.c
	cc -c $< -o $@ $(CFLAGS)

$(PROG): src/$(PROG).o $(OBJS)
		$(CC) $(CFLAGS) src/$(PROG).o $(OBJS) -o $(PROG)
		$(SIZE) $(PROG)

$(STAT): src/$(STAT).o $(OBJS)
	$(CC) $(CFLAGS) src/$(STAT).o $(OBJS) -o $(STAT)

avr: $(AHEX) $(AASM) ASUMMARY upload

$(AHEX): $(AOBJ)
	$(AOBJCOPY) -S -j .text -j .data -O ihex $< $@

$(AOBJ): $(ASRC)
	$(ACC) $(ACFLAGS) -DF_CPU=$(F_CPU) -mmcu=$(MCU) $(ASRC) -o $@

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

ASUMMARY: $(AOBJ)
	@echo ----------------------------------------------------------------------
	@$(AOBJSIZE) $(AOBJ) $(AHEX)

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

clean:
	rm -f $(PROG) $(STAT) $(OBJS)
	rm -f $(AOBJ) $(AHEX) $(AASM)
	rm -f src/*.o