ifeq ($(CROSS_COMPILE),)
	CROSS_COMPILE = arm-elf-
endif

AS  = $(CROSS_COMPILE)as
LD  = $(CROSS_COMPILE)ld
CC  = $(CROSS_COMPILE)gcc
CPP = $(CC) -E                                                                                                                                                                                                                               

OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump

VERSION_FILE = inc/auto_version.h
CPPFLAGS += -Iinc $(HOSTCFLAGS)
HOSTCFLAGS  = -Wall -Wstrict-prototypes -Os -fomit-frame-pointer

LDSCRIPT	= bLoader.lds
LDFLAGS		= -Bstatic -T $(LDSCRIPT) -nostdlib -nostartfiles -nodefaultlibs
AFLAGS 		= -D__ASSEMBLY__ $(CPPFLAGS) 

PAD_TO	= 2048
PAD_TO_128K = 131072
CRCS	= bLoader.c nand_boot.c
COBJS	= bLoader.o nand_boot.o

SRCS	= start.S lowlevel_init.S
SOBJS	= start.o lowlevel_init.o

OBJS	:= $(addprefix $(obj),$(SOBJS) $(COBJS))
__OBJS	:= $(SOBJS) $(COBJS)

ALL		= bLoader.elf bLoader-2k.bin bLoader-128k.bin bLoader.bin bLoader.src
all:	$(ALL)

bLoader.elf: $(VERSION_FILE) $(OBJS) 
	$(LD) $(LDFLAGS) $(__OBJS) \
		-Map bLoader.map \
		-o $@
	$(OBJDUMP) -S $@ > bLoader.src

bLoader-2k.bin: bLoader.elf
	$(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $< $@

bLoader-128k.bin: bLoader.elf
	$(OBJCOPY) ${OBJCFLAGS} --gap-fill=0xff --pad-to=$(PAD_TO_128K) -O binary $< $@

bLoader.bin:	bLoader.elf
	$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

clean:	
	rm -f $(__OBJS) $(VERSION_FILE)
	rm -f $(ALL)
	rm -f bLoader.map
	rm -f cscope.* tags

commit:
	svn ci

update:
	svn update

$(VERSION_FILE):
		@( printf '#define BLOADER_VERSION "bldr%s"\n' \
		 '$(shell ./setlocalversion $(TOPDIR))' ) > $@.tmp
		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@

.PONY : $(VERSION_FILE)
