#
#
# This file is subject to the terms and conditions of the GNU General Public
# License.  See the file "COPYING" in the main directory of this archive
# for more details.
#
# Copyright (C) 2003 ARC International
#


SYSTEM	=$(srctree)/vmlinux

#obj-y += initrd.o

LZMA := $(shell which lzma)
MKIMAGE := $(srctree)/scripts/mkuboot.sh
MKIMAGEFLAGS := -A arc -O linux -C lzma -T kernel -a 0x84938000 -e 0x84938000 -n "ARC700 Linux kernel" -Q 0x1 -d
OBJCOPYFLAGS := -O binary -R .note -R .note.gnu.build-id -R .comment -S

# From Beta's doc:
# ZTEXTADDR - Address where zImage is located by the bootloader
# ZRELADDR - Address where the zImage will be relocated
# PARAMS_PHYS - Address where tagged parameters are to be found
# INITRD_PHYS - Physical Address of the Ramdisk
# ZBSSADDR - Address where the real kernel should execute from

#not very sure as to what to fill here...

ZRELADDR	 = 0x00000000 # where to relocate it... hmmm.... 
ZTEXTADDR	 = 0x00000000 # we'll put the kernel image here for now...
#endif


#
# If you don't define ZRELADDR above,
# then it defaults to ZTEXTADDR
#
ifeq ($(ZRELADDR),)
ZRELADDR	= $(ZTEXTADDR)
endif

export	SYSTEM ZTEXTADDR ZBSSADDR ZRELADDR 

targets := uImage 

$(obj)/Image: vmlinux FORCE
	$(OBJCOPY) $(OBJCOPYFLAGS) $< $@

$(obj)/Image.lzma: $(obj)/Image FORCE
	$(LZMA) -k -f --best $<

$(obj)/uImage: $(obj)/Image.lzma FORCE
	$(MKIMAGE) $(MKIMAGEFLAGS) $< $@

clean:
	$(RM) Image Image.lzma uImage initrd.c jffsimg.c
	#@$(MAKE) -C compressed clean


dep:
