#
# (C) Copyright 2000
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# 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
#

LOAD_ADDR = 0x40000

include $(TOPDIR)/config.mk

PROG    = updater
IMAGE   = updater.image
SRC     = update.c flash.c flash_hw.c utils.c cmd_flash.c string.c ctype.c dummy.c
ASRC    = ppcstring.S
OBJS	= $(SRC:.c=.o) $(ASRC:.S=.o) 

LIB	= $(TOPDIR)/examples/libsyscall.a 
LIBAOBJS= $(TOPDIR)/examples/syscall.o
LIBCOBJS=
LIBOBJS	= $(LIBAOBJS) $(LIBCOBJS)

CPPFLAGS += -I$(TOPDIR) -I$(TOPDIR)/board/MAI/AmigaOneG3SE
CFLAGS   += -I$(TOPDIR)/board/MAI/AmigaOneG3SE

all:	.depend $(LIB) $(PROG)

#########################################################################
$(LIB): .depend $(LIBOBJS)
	$(AR) crv $@ $(LIBOBJS)

%.srec:	%.o $(LIB)
	$(LD) -g -Ttext $(LOAD_ADDR) -o $(<:.o=) -e $(<:.o=) $< $(LIB)
	$(OBJCOPY) -O srec $(<:.o=) $@

%.o: %.c
	$(CC) $(CPPFLAGS) -c $< 

%.o: %.S
	$(CC) $(CPPFLAGS) -c $<

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

updater: $(OBJS) $(LIB) $(TOPDIR)/board/MAI/AmigaOneG3SE/memio.o 
	$(LD) -g -Ttext $(LOAD_ADDR) -o updater -e _main $(OBJS) $(LIB)  \
	$(TOPDIR)/board/MAI/AmigaOneG3SE/memio.o
	$(OBJCOPY) -O binary updater updater.bin

updater.image: updater $(TOPDIR)/u-boot.bin
	cat >/tmp/tempimage updater.bin junk $(TOPDIR)/u-boot.bin
	$(TOPDIR)/tools/mkimage -A ppc -O u-boot -T standalone -C none -a $(LOAD_ADDR) \
	-e `ppc-elf32-nm updater | grep _main | cut --bytes=0-8` \
	-n "Firmware Updater" -d /tmp/tempimage updater.image
	rm /tmp/tempimage
	cp updater.image /tftpboot

updater.image2: updater $(TOPDIR)/u-boot.bin
	cat >/tmp/tempimage updater.bin junk ../../create_image/image
	$(TOPDIR)/tools/mkimage -A ppc -O u-boot -T standalone -C none -a $(LOAD_ADDR) \
	-e `ppc-elf32-nm updater | grep _main | cut --bytes=0-8` \
	-n "Firmware Updater" -d /tmp/tempimage updater.image
	rm /tmp/tempimage
	cp updater.image /tftpboot

.depend:	Makefile $(SRC) $(ASRC) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S)
		$(CC) -M $(CFLAGS) $(SRC) $(ASRC) $(LIBCOBJS:.o=.c) $(LIBAOBJS:.o=.S) > $@

sinclude .depend

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