summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile47
1 files changed, 44 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 1dfb930..bc31852 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,7 @@
IDIR=include
+
+# -------------------------------------------------------------------
+# Computer stuff
TPDIR=3rd-party
DEFINES=-DDETERMINISTIC
CFLAGS=-O3 -Wall -Wextra -std=c99 -D_DEFAULT_SOURCE $(DEFINES) -I$(IDIR) -I$(TPDIR)
@@ -11,6 +14,27 @@ 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)
@@ -21,8 +45,25 @@ $(PROG): src/$(PROG).o $(OBJS)
$(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)
- rm -f $(STAT)
+ rm -f $(PROG) $(STAT) $(OBJS)
+ rm -f $(AOBJ) $(AHEX) $(AASM)
rm -f src/*.o
- rm -f $(OBJS)