#
# Makefile to build linux
#

include makefile.envars

CHECKOUT_PREFIX ?= svn://svn.atc.amit.com.tw
ifeq ($(KERNEL_VERSION),2.6.30) 
COMPO_URL := $(CHECKOUT_PREFIX)/Sahara/KernelRTL2630/trunk
COMPO_REV := -r 34
else
COMPO_URL := $(CHECKOUT_PREFIX)/Sahara/KernelRTL2619_8196x/trunk
COMPO_REV := -r 162
endif
COMPO_DIR := $(COMPO_BASE)

ifdef FULL_COPY
USE_SVN_UP := yes
include makefile.compo
else
all: build install
endif

#

start_time := $(shell date)

#CROSS_KERNEL_COMPILE = /toolchain/rsdk-1.3.5/linux/uclibc/bin/mips-linux-
#CROSS_KERNEL_COMPILE = $(TARGET_PREFIX)
#MAKEARCH_KERNEL = V=1 ARCH=mips CROSS_COMPILE=$(TARGET_PREFIX)

TARGET_PREFIX := $(TARGET)-
ifeq ($(KERNEL_VERSION),2.6.30) 
COMMON_OPTION := V=1 ARCH=rlx 
else
COMMON_OPTION := V=1 ARCH=mips CROSS_COMPILE=$(TOOLPATH)/uclibc/bin/$(TARGET_PREFIX)
endif
INSTALL_OPT = ins_modules

ifeq ("$(ROOT_RD_LEVEL)","1")
COMMON_OPTION += ROOT_RD_LEVEL=1
endif

ifeq ("$(WAN_IS_PORT4)","1")
COMMON_OPTION += WAN_IS_PORT4=1
endif

ifeq ("$(WAN_LAN_SELECT)","1")
COMMON_OPTION += WAN_LAN_SELECT=1
endif

ifeq ("$(8MB_FLASH)","1")
COMMON_OPTION += 8MB_FLASH=1
endif

ifeq ("$(CICMD_VLAN_TAG)","1")
COMMON_OPTION += CICMD_VLAN_TAG=1
endif

ifeq ("$(16MB_FLASH)","1")
COMMON_OPTION += 16MB_FLASH=1
endif

ifeq ("$(LED_SCAN_MODE)","1")
COMMON_OPTION += LED_SCAN_MODE=1
endif

ifeq ("$(ENABLE_RS232)","1")
COMMON_OPTION += ENABLE_RS232=1
endif

ifeq ("$(SINGLE_BUTTON)","1")
COMMON_OPTION += SINGLE_BUTTON=1
endif

ifeq ("$(SINGLE_WPS_LED)","1")
COMMON_OPTION += SINGLE_WPS_LED=1
endif

ifeq ("$(ENABLE_MULTI_WAN)","1")
COMMON_OPTION += ENABLE_MULTI_WAN=1
endif

ROOTDIR  = $(shell pwd)
LINUXDIR = src
export ROOTDIR LINUXDIR
#
IMAGE_DIR := ../image
PRIV_TOOLS := ../tools/priv

#

.PHONY: prepared

build: prepared 
	mkdir -p ../image; \
	# For RTL8196C / RTL8198
	if [ "$(KERNEL_VERSION)" == "2.6.30" ] ; then  \
		make $(COMMON_OPTION) -C $(COMPO_DIR) modules;	\
		make $(COMMON_OPTION) -C $(COMPO_DIR); \
		make -C $(COMPO_DIR)/rtkload all;	\
		cp $(COMPO_DIR)/rtkload/nfjrom ${TOPDIR}/image/bzImage; \
		cp $(COMPO_DIR)/rtkload/vmlinux_img.gz $(TOPDIR)/image/vmlinux_img.lzma;\
		rm -irf ${TOPDIR}/image/linux.bin;	\
	else \
		make $(COMMON_OPTION) -C $(COMPO_DIR) modules;	\
		make $(COMMON_OPTION) -C $(COMPO_DIR) vmlinux;	\
		make -C $(COMPO_DIR)/rtkload all;	\
		cp $(COMPO_DIR)/rtkload/nfjrom ${TOPDIR}/image/bzImage; \
		cp $(COMPO_DIR)/rtkload/vmlinux_img.gz $(TOPDIR)/image/vmlinux_img.lzma;\
		rm -irf ${TOPDIR}/image/linux.bin;	\
		make ${COMMON_OPTION} -C $(COMPO_DIR) bzImage;	\
		make ${COMMON_OPTION} -C $(COMPO_DIR) modules;	\
	fi

prepared: $(COMPO_DIR)/.tag.config $(COMPO_DIR)/.tag.oldconfig


$(COMPO_DIR)/.tag.config:
ifeq ($(KERNEL_VERSION),2.6.x)
  ifeq ("$(GIGA_LAN)","1")
	cp Config.Giga $(COMPO_DIR)/.config
	${TOPDIR}/linux/chg_profile.sh GIGA_LAN
  else
	cp Config $(COMPO_DIR)/.config
	${TOPDIR}/linux/chg_profile.sh
  endif
else
	cp Config $(COMPO_DIR)/.config
	${TOPDIR}/linux/chg_profile.sh $(CPU_MODEL)
endif
	touch $@
	if [ "$(KERNEL_VERSION)" = "2.6.x" ] ; then  \
		cp -rf arch_config/8196BU* src/arch/mips/realtek/rtl8196b; \
	fi 

$(COMPO_DIR)/.tag.oldconfig: 
	make ${COMMON_OPTION} -C $(COMPO_DIR) oldconfig
	touch $@


.PHONY: ins_modules ins_image

install: $(INSTALL_OPT) #ins_modules #ins_image
	@echo "*********************************************************************"
	@echo "* Done! $(start_time) ~ `date` *"
	@echo "*********************************************************************"

ins_modules:
	rm -fr $(INSTALL_ROOT)
	make ${COMMON_OPTION} INSTALL_MOD_PATH=$(INSTALL_ROOT) -C $(COMPO_DIR) _modinst_
	make ${COMMON_OPTION} INSTALL_MOD_PATH=$(INSTALL_ROOT) -C $(COMPO_DIR) modules_install
	rm -f $(INSTALL_ROOT)/lib/modules/*/build $(INSTALL_ROOT)/lib/modules/*/source
	ln -sf `ls $(INSTALL_ROOT)/lib/modules`/kernel $(INSTALL_ROOT)/lib/modules/kernel
	mkdir -p $(TOPDIR)/image/root
	cp -rf $(INSTALL_ROOT)/. $(TOPDIR)/image/root/.
ifneq ($(KERNEL_VERSION),2.6.30) 
	if [ $(ENABLE_FLASHOFDM) -eq 1 ] ; then \
		if [ $(FLASHOFDM_BAND) == "BAND_870" ]; then \
			cp -rf $(COMPO_DIR)/drivers/usb/serial/ft1000/ft3000.img870  $(INSTALL_ROOT)/lib/modules/ft3000.img; \
		else \
			cp -rf $(COMPO_DIR)/drivers/usb/serial/ft1000/ft3000.img450h  $(INSTALL_ROOT)/lib/modules/ft3000.img; \
		fi \
	fi
endif

ins_image:
	mkdir -p ../image
	cp $(COMPO_DIR)/arch/i386/boot/bzImage ../image
ifdef FULL_COPY
	$(PRIV_TOOLS)/bin/binman --s kernel.bms --d $(IMAGE_DIR)
	ls -l ../image/bzImage
else
	cd ../image; $(PRIV_TOOLS)/bin/binboy @linux -r "$(ROM_ID)"
endif

clean:
	@if test -f $(COMPO_DIR)/Makefile; then \
		make ${COMMON_OPTION} -C $(COMPO_DIR) clean; \
		rm -f ${TOPDIR}/nfjrom; \
		rm -f $(COMPO_DIR)/.tag.config $(COMPO_DIR)/.tag.oldconfig; \
	fi
#	${TOPDIR}/linux/unlink_profile.sh
#

distclean:
	rm -fr $(INSTALL_ROOT)
	#rm -fr $(COMPO_DIR)

menuconfig: prepared
	make ${COMMON_OPTION} -C $(COMPO_DIR) menuconfig


u = $(subst /, ,$(COMPO_URL))
t = $(word $(words $(u)), $(u))

FREV_TAG := $(shell pwd)/.tag.frev

MY_REV = $(strip $(word 2, $(COMPO_REV)))
F_REV = $(strip $(shell cat $(FREV_TAG)))

list: $(FREV_TAG)-clean $(FREV_TAG)
	@if [ $(F_REV) == $(MY_REV) ]; then \
        if [ $(t) == 'trunk' ]; then \
            echo -e "  " $(COMPO_URL) $(COMPO_REV) >> $(URL_FILE_LIST); \
        else \
            echo -e " B" $(COMPO_URL) $(COMPO_REV) >> $(URL_FILE_LIST); \
        fi; \
    elif [ ! $(F_REV) ]; then \
        if [ $(t) == 'trunk' ]; then \
            echo -e "X " $(COMPO_URL) $(COMPO_REV) >> $(URL_FILE_LIST); \
        else \
            echo -e "XB" $(COMPO_URL) $(COMPO_REV) >> $(URL_FILE_LIST); \
        fi; \
    else \
        if [ $(t) == 'trunk' ]; then \
            echo -e "U " $(COMPO_URL) $(COMPO_REV) "\050" $(F_REV) "\051" >> $(URL_FILE_LIST); \
        else \
            echo -e "UB" $(COMPO_URL) $(COMPO_REV) "\050" $(F_REV) "\051" >> $(URL_FILE_LIST); \
        fi; \
    fi

$(FREV_TAG):
	@echo "$(word 2,$(shell svn info $(COMPO_URL) | grep Revision))" > $@

$(FREV_TAG)-clean:
	@rm -f $(FREV_TAG)




