+# native builds
CC = gcc
CFLAGS = -Wall
-all: lpcload
+# cross build
+ARCH = arm-elf
+CROSS_CC = $(ARCH)-gcc
+CROSS_OBJCOPY = $(ARCH)-objcopy
+CROSS_CFLAGS = -Wall -Os -mcpu=arm7tdmi-s -nostartfiles -nostdlib
+# build objects
+HOST_TARGET = lpcload fwdump
+CROSS_TARGET = fwbc.hex fwflash.hex
+
+# all projects
+all: $(HOST_TARGET) $(CROSS_TARGET)
+
+# arm code
+arm: arm_clean $(CROSS_TARGET)
+
+# fwbc
+fwbc:
+ $(CROSS_CC) $(CROSS_CFLAGS) -c fwbc.c -o fwbc
+
+fwbc.hex: fwbc
+ $(CROSS_OBJCOPY) -O ihex fwbc fwbc.hex
+
+# fwflash
+fwflash:
+ $(CROSS_CC) $(CROSS_CFLAGS) -c fwflash.c -o fwflash
+
+fwflash.hex: fwflash
+ $(CROSS_OBJCOPY) -O ihex fwflash fwflash.hex
+
+clean:
+ rm -f lpcload fwdump
+
+arm_clean:
+ rm -f $(CROSS_TARGET) fwbc fwflash