# Makefile for storage project
# You ONLY need change these values to fit your system:
#*************************************************
#*************************************************
# HADHAT_DIR KERNEL_DIR
#*************************************************
#*************************************************

# We should use the same diff.mk
include ./source/diff.mk
#==================================================
HADHAT_DIR  :=  /usr/local
#KERNEL_DIR  :=  ./linux-2.4.20_mvl31
KERNEL_DIR  :=  ./linux-2.4.x.dongle
#==================================================

ENV_FILE    :=  ./ixp400_xscale_sw/buildUtils/environment.linux.sh
DIFF_DIR    :=  diff/$(MODULE_NAME_STRING)/$(VENDOR_NAME_STRING)

ifneq ($(wildcard $(ENV_FILE)), )
include $(ENV_FILE)
endif

all::
# Make environment
	@make env
# Make ramdisk/
	@make ramdisk
# Build kernel image and modules. And then copy kernel to /tftp, copy modules to ramdisk
	@make dep zImage modules modules_cp zImage_cp zImagei
# Build applications
	@make source sourcei
# Build ramdisk image and then copy ramdisk image to /tftp
	@make ram rami
# Build bin file
	@make bin

.PHONY: env
env::
# Build correct 'ixp400_xscale_sw' and 'kernel' link
	rm -f ixp400_xscale_sw
	if [ "${_SSL_SUPPORT_}" = "1" ] ; then			      \
		/bin/ln -sf ixp400_xscale_sw_ssl ixp400_xscale_sw ;   \
	else		                                              \
		/bin/ln -sf ixp400_xscale_sw_no_ssl ixp400_xscale_sw; \
	fi

	rm -f kernel
	/bin/ln -sf $(KERNEL_DIR) kernel

# Delete the old component_list.mk
	rm -f ./kernel/drivers/ixp400/component_list.mk

# Build Inter IXP lib's environment 
	./mkixpenv.sh $(HADHAT_DIR)

.PHONY: dep
dep::
# Build kernel's dependencies
	@[ -r $(ENV_FILE) ] || ( echo "You need run 'make env' at first" && exit 1 )
	make -C kernel dep

.PHONY: zImage
zImage::
# Build kernel image
	make -C kernel zImage

.PHONY: modules
modules::
# Build kernel modules
	make -C kernel modules

.PHONY: zImage_cp
zImage_cp::
	cp -f ./kernel/arch/arm/boot/zImage $(DIFF_DIR)

.PHONY: modules_cp
modules_cp:
# Copy kernel modules to ramdisk/
	make -C kernel modules_cp

.PHONY: zImagei
zImagei:
# Copy kernel image to /tftpboot
	make -C kernel cp

.PHONY: source
source::
	make -C source

.PHONY: sourcei
sourcei:: modules_cp zImage_cp
	make -C source install

.PHONY: ram
ram::
	chown root.root ramdisk/ -R
	chmod 711 ramdisk/home/httpd/html/Management/
	find ./ramdisk -name Thumbs.db |xargs rm -rf 
	@./mkramdisk.sh $(MODULE_NAME_STRING) $(VENDOR_NAME_STRING) $(RAMDISK_SIZE)

.PHONY: rami
rami::
	cp $(DIFF_DIR)/$(MODULE_NAME_STRING).ram /tftpboot -f

.PHONY: bin
bin::
	@./bb $(MODULE_NAME_STRING) $(VENDOR_NAME_STRING)
	@echo "Build complete."

.PHONY: clean
clean::
	rm -f $(DIFF_DIR)/$(MODULE_NAME_STRING).bin $(DIFF_DIR)/$(MODULE_NAME_STRING).ram $(DIFF_DIR)/zImage


.PHONY: ramdisk.tar.gz
ramdisk.tar.gz::
	rm -f $(DIFF_DIR)/ramdisk.tar.gz
	chown root.root ramdisk/ -R
	chmod 711 ramdisk/home/httpd/html/Management
	tar -czf $(DIFF_DIR)/ramdisk.tar.gz ramdisk

.PHONY: ramdisk
ramdisk::
	rm -rf ramdisk
	tar -zxf $(DIFF_DIR)/ramdisk.tar.gz
	chown root.root ramdisk/ -R
	cp -af ramdisk/lib/lib* source/lib/


