aboutsummaryrefslogtreecommitdiff
path: root/kernel/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/Makefile')
-rw-r--r--kernel/Makefile64
1 files changed, 64 insertions, 0 deletions
diff --git a/kernel/Makefile b/kernel/Makefile
new file mode 100644
index 0000000..1d5be25
--- /dev/null
+++ b/kernel/Makefile
@@ -0,0 +1,64 @@
+# $Id$
+
+PROG = kernel
+SRCS = kernel.c main.c uart.c heartbeat.c rgb.c hsv.c lcd3.c
+HEADERS = kernel.h stack.h
+MCU_TARGET = atmega8
+F_CPU = 16000000
+PRESCALE = 8
+STACK = 64
+TASKS = 8
+SEMAPHORES = 8
+BAUD = 9600
+
+# You should not have to change anything below here.
+
+CC = avr-gcc
+OBJCOPY = avr-objcopy
+OBJDUMP = avr-objdump
+SIZE = avr-size
+OBJS = ${SRCS:.c=.o}
+CFLAGS = -Wall -Os -mmcu=${MCU_TARGET} \
+ -DF_CPU=${F_CPU} -DPRESCALE=${PRESCALE} -DBAUD=${BAUD} \
+ -DSTACK=${STACK} -DTASKS=${TASKS} -DSEMAPHORES=${SEMAPHORES}
+LDFLAGS = -Wl,-Map,${PROG}.map
+
+.SUFFIXES: .elf .lst .hex .bin .srec .ehex .ebin .esrec
+
+all: ${PROG}.elf ${PROG}.lst ${PROG}.hex ${PROG}.ehex size
+
+${SRCS}: ${HEADERS} Makefile
+
+${PROG}.elf: ${OBJS}
+ ${CC} ${LDFLAGS} -o ${.TARGET} ${.ALLSRC}
+
+size: ${PROG}.elf
+ ${SIZE} -C --mcu=${MCU_TARGET} ${.ALLSRC}
+
+clean:
+ rm -f *.o ${PROG}.elf *.bak *.lst *.map *.hex *.bin *srec *.ehex *.ebin *.esrec
+
+.elf.lst:
+ ${OBJDUMP} -h -S ${.IMPSRC} > ${.TARGET}
+
+# Rules for building the .text rom images
+
+.elf.hex:
+ ${OBJCOPY} -j .text -j .data -O ihex ${.IMPSRC} ${.TARGET}
+
+.elf.bin:
+ ${OBJCOPY} -j .text -j .data -O binary ${.IMPSRC} ${.TARGET}
+
+.elf.srec:
+ ${OBJCOPY} -j .text -j .data -O srec ${.IMPSRC} ${.TARGET}
+
+# Rules for building the .eeprom rom images
+
+.elf.ehex:
+ ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O ihex ${.IMPSRC} ${.TARGET}
+
+.elf.ebin:
+ ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O binary ${.IMPSRC} ${.TARGET}
+
+.elf.esrec:
+ ${OBJCOPY} -j .eeprom --change-section-lma .eeprom=0 -O srec ${.IMPSRC} ${.TARGET}