#
# (C) Copyright 2006
# Mindspeed Technologies, Inc. <www.mindspeed.com>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
#

include $(TOPDIR)/config.mk

LIB	= lib$(BOARD).a

OBJS	:= board.o ../common/flash.o ../common/amlv640u.o\
		../common/nand.o ../common/cmd_bootcomcerto.o
SOBJS	:= ../common/arm1_init.o

gcclibdir := $(shell dirname `$(CC) -print-libgcc-file-name`)

LDSCRIPT = $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds

HOST_CFLAGS = -Wall -pedantic -I$(TOPDIR)/include

all: $(LIB) ../common/u16_to_u8.bin norboot8.o

$(LIB):	$(OBJS) $(SOBJS)
	$(AR) crv $@ $^

board.o: board.c
	$(CC) $(CFLAGS) -fpic -c -o $@ $<

norboot8.o: ../common/norboot.o
	$(LD) -Ttext 0x11000000 $< -o norboot.o
	$(OBJCOPY) -O binary norboot.o norboot16.bin
	../common/u16_to_u8.bin norboot16.bin norboot8.bin
	$(OBJCOPY) -Barm -I binary -O elf32-littlearm norboot8.bin $@
	$(RM) norboot16.bin norboot8.bin

../common/u16_to_u8.bin: ../common/u16_to_u8.c
	$(HOSTCC) -o $@ $<

clean:
	rm -f $(SOBJS) $(OBJS) norboot8.o ../common/u16_to_u8.bin ../common/norboot.o

distclean:	clean
	rm -f $(LIB) core *.bak .depend

#########################################################################

.depend:	Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
		$(CC) -M $(CPPFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@

sinclude .depend

#########################################################################
