added initial linker script and tartup asm code
[my-code/arm.git] / betty / Makefile
index b5b6a5f..dfd3fee 100644 (file)
@@ -5,12 +5,18 @@ CFLAGS = -Wall
 # cross build
 ARCH = arm-elf
 CROSS_CC = $(ARCH)-gcc
+CROSS_AS = $(ARCH)-as
+CROSS_LD = $(ARCH)-ld
 CROSS_OBJCOPY = $(ARCH)-objcopy
-CROSS_CFLAGS = -Wall -Os -mcpu=arm7tdmi-s -nostartfiles -nostdlib
+CROSS_OPTS = -mcpu=arm7tdmi-s
+CROSS_CFLAGS = $(CROSS_OPTS) -Wall -Os
+CROSS_ASLAGS = $(CROSS_OPTS) --gstabs
+CROSS_RAM_LDFLAGS = -Tlpc2220_ram.ld -nostartfiles -nostdlib
+CROSS_ROM_LDFLAGS = -Tlpc2220_rom.ld -nostartfiles -nostdlib
 
 # build objects
 HOST_TARGET = lpcload fwdump
-CROSS_TARGET = fwbc.hex fwflash.hex
+CROSS_TARGET = fwbc.hex fwflash.hex fwflash.elf # debug: .elf for objdump
 
 # all projects
 all: $(HOST_TARGET) $(CROSS_TARGET)
@@ -18,22 +24,27 @@ all: $(HOST_TARGET) $(CROSS_TARGET)
 # arm code
 arm: arm_clean $(CROSS_TARGET)
 
-# fwbc
-fwbc:
-       $(CROSS_CC) $(CROSS_CFLAGS) -c fwbc.c -o fwbc
+# .o out of .c
+%.o: %.c
+       $(CROSS_CC) -c $(CROSS_CFLAGS) -o $@ $<
 
-fwbc.hex: fwbc
-       $(CROSS_OBJCOPY) -O ihex fwbc fwbc.hex
+# .o out of .s
+%.o: %.s
+       $(CROSS_AS) $(CROSS_ASLAGS) -o $@ $<
 
-# fwflash
-fwflash:
-       $(CROSS_CC) $(CROSS_CFLAGS) -c fwflash.c -o fwflash
+# .elf out of .o
+%.elf: %.o startup.o
+       $(CROSS_LD) $(CROSS_RAM_LDFLAGS) startup.o -o $@ $<
 
-fwflash.hex: fwflash
-       $(CROSS_OBJCOPY) -O ihex fwflash fwflash.hex
+# .hex out of .elf
+%.hex: %.elf
+       $(CROSS_OBJCOPY) -O ihex $< $@
 
+# host clean
 clean:
        rm -f lpcload fwdump
 
+# arm clean
 arm_clean:
-       rm -f $(CROSS_TARGET) fwbc fwflash
+       rm -vf *.o *.hex *.elf
+