CROSS = armv5tel-redhat-linux-gnueabi
CC = $(CROSS)-gcc
INCLUDES =
CFLAGS = -g -Wall -fverbose-asm -march=armv5t -mtune=arm926ej-s \
	-msoft-float $(INCLUDES)
LIBS =
LDFILE = arm.ld
LDFLAGS = $(LIBS) -T $(LDFILE)
APP_NAME = tt-loader
OBJ_ADDR ?= 0x10000000

S_SRCS = start.S
C_SRCS = main.c usb.c crc32.c
SRCS = $(S_SRCS) $(C_SRCS)

OBJS = $(S_SRCS:.S=.o) $(C_SRCS:.c=.o)
ALL = $(APP_NAME).bin $(APP_NAME).asm

all:
	$(MAKE) $(ALL) DEPEND=.depend

clean:
	rm -f *.o *.elf *.bin *.map *.asm *.dis .depend *~

$(APP_NAME).elf: $(LDFILE) $(OBJS)
	$(CROSS)-ld $(LDFLAGS) -Map $(APP_NAME).map -o $@ $(OBJS)

$(APP_NAME).asm: $(APP_NAME).elf
	$(CROSS)-objdump -d -S $(APP_NAME).elf >$(APP_NAME).asm

%.dis: %.mtd
	$(CROSS)-objcopy -I binary -O elf32-littlearm -B arm $< $(@F).elf
	$(CROSS)-objdump -D --adjust-vma=$(OBJ_ADDR) $(@F).elf > $@

%.bin: %.elf
	$(CROSS)-objcopy -O binary $< $@

dep: .depend

.depend: $(SRCS)
	$(CC) -M -MG $(INCLUDES) $^ > .depend

ifdef DEPEND
include $(DEPEND)
endif

.depend: $(SRCS)

.PHONY: dep all clean
