+# Copyright (c) 2008-2010 Jakub Piotr Cłapa
+# This program is released under the new BSD license.
+ARCH = /home/asbjorn/dev/armchain/arm-none-eabi/bin/arm-none-eabi
+MBED_VOLUME = /Volumes/MBED
+
+# Tool definitions
+CC = $(ARCH)-gcc
+LD = $(ARCH)-ld
+AR = $(ARCH)-ar
+AS = $(ARCH)-as
+CP = $(ARCH)-objcopy
+OD = $(ARCH)-objdump
+SIZE = $(ARCH)-size
+RM = rm
+Q = @./quiet "$@"
+
+# Flags
+CFLAGS = -W -Wall -Os --std=gnu99 -fgnu89-inline -mcpu=cortex-m3 -mthumb
+CFLAGS += -ffunction-sections -fdata-sections
+ASFLAGS =
+LDFLAGS = --gc-sections
+CPFLAGS =
+ODFLAGS = -x --syms
+PRFLAGS ?=
+
+# Source files
+LINKER_SCRIPT = LPC1768-flash.ld
+CSRCS = startup.c $(wildcard CMSIS/*.c)
+CSRCS += main.c
+ASRCS =
+
+
+OBJS = $(CSRCS:.c=.o) $(ASRCS:.s=.o)
+
+.PHONY: all size clean nuke
+
+all: main.bin main.hex
+
+isp: main.bin
+ @./quiet $< cp $^ $(MBED_VOLUME)/
+
+size: main.elf
+ @$(SIZE) $<
+
+%.hex: %.elf
+ $Q $(CP) $(CPFLAGS) -O ihex $< $*.hex
+
+%.bin: %.elf
+ $Q $(CP) $(CPFLAGS) -O binary $< $*.bin
+
+main.elf: $(LINKER_SCRIPT) $(OBJS)
+ $Q $(LD) -Map $(@:.elf=.map) $(LDFLAGS) -T $^ -o $@
+ $Q $(OD) $(ODFLAGS) $@ > $(@:.elf=.dump)
+ @$(SIZE) $@
+
+%.o: %.c
+ @$(CC) -MM $< -MF $*.d -MP
+ $Q $(CC) -c $(CFLAGS) $< -o $@
+
+%.o: %.S
+ $Q $(AS) $(ASFLAGS) $< -o $@
+
+io-pin.h: io-pin.ss
+ $Q mzscheme $< > $@
+
+clean:
+ @-rm -f *.elf quiet.log
+ @-\
+for D in "." "**"; do \
+ rm -f $$D/*.o $$D/*.d $$D/*.lst $$D/*.dump $$D/*.map; \
+done
+
+nuke: clean
+ -rm -f *.hex *.bin
+
+-include $(CSRCS:.c=.d)