#
#  Copyleft 2002
#

VERSION_MAJOR = 1
VERSION_MINOR = 0
VER_STR = $(VERSION_MAJOR).$(VERSION_MINOR)

VER_DEFS = -DVERSION_MAJOR=$(VERSION_MAJOR)
VER_DEFS += -DVERSION_MINOR=$(VERSION_MINOR)
VER_DEFS += -DVER_STR=$(VER_STR)

GLOBAL_DEFS = -DDATE=\"`date +%y-%m-%d_%H:%M'\"

ALL_DEFS = $(VER_DEFS) $(GLOBAL_DEFS)


TARGETS = sdimage


all: $(TARGETS)

HDRS =  init.h version.h wallabylib.h diag_main.h

OBJS = boot.o init.o wallabylibcall.o wallabylib.o diag_main.o v517patch.o v622patch.o 
        

ARCHITECTURE=arm
CROSS_COMPILE=arm-elf-
ASM = gcc
CC = gcc
LD = ld
NM = nm
OBJCOPY = objcopy
OBJDUMP = objdump
ASMFLAGS = -c -D__ASM__
CFLAGS = -c -O -Wall
LDBASE_BASE0000 = 0x8c240000
LDFLAGS_BASE0000 = -Tv514jumptable.ld -Tv515jumptable.ld -Tv517jumptable.ld -Tv622jumptable.ld -Tv515bjumptable.ld -Tbase0000.ld -Bstatic
OBJCOPYFLAGS = -R .comment -R .stab -R .stabstr
OBJDUMPFLAGS = -Mreg-names-std


sdimage: wallabypatch
	./create_sdimage.sh

wallabypatch: $(HDRS) $(OBJS) base0000.ld
	$(CROSS_COMPILE)$(LD) -v $(LDFLAGS_BASE0000) -o wallabypatch-elf $(ENTRYOBJS) $(OBJS)
	$(CROSS_COMPILE)$(NM) -v -l wallabypatch-elf > wallabypatch.nm
	$(CROSS_COMPILE)$(OBJCOPY) $(OBJCOPYFLAGS) -O binary -S wallabypatch-elf wallabypatch.bin
	
base0000.ld: ramld.ld.in Makefile
	sed s/@LOAD_BASE_ADDR@/$(LDBASE_BASE0000)/g ramld.ld.in > $@

hex: wallabypatch
	hexdump -v -e '"0x%x\n"' wallabypatch > wallabypatch.hex

dasm: wallabypatch-elf
	$(CROSS_COMPILE)$(OBJDUMP) $(OBJDUMPFLAGS) -d wallabypatch-elf > wallabypatch.dasm

clean: 
	rm -f $(ENTRYOBJS) $(OBJS) wallabypatch-elf wallabypatch.nm \
	wallabypatch *.bin base0000.ld *.hex *.dasm \
	wallabypatch-sd.img wallabypatch-sd.nb2
	
.c.o: $(HDRS)
	$(CROSS_COMPILE)$(CC) $(CFLAGS) -o $@ $<

.S.o: $(HDRS)
	$(CROSS_COMPILE)$(ASM) $(ASMFLAGS) -o $@ $<
