ENV_PATH=$(PWD)

include .config
include $(ENV_PATH)/platform/$(PLATFORM)/$(CHIPSET)/env.mk
include config.$(CHIPSET)

export PLATFORM := $(PLATFORM)
export CHIPSET := $(CHIPSET)
export FLASH_SIZE := $(FLASH_SIZE)
export VENDOR_NAME := $(VENDOR_NAME)
export DEVICE_TYPE := $(DEVICE_TYPE)
export CONFIG_MODEL_NAME := $(CONFIG_MODEL_NAME)
export CROSS_COMPILE := $(CROSS_COMPILE)
export KERNELARCH := $(KERNELARCH)
export KERNELVER := $(KERNELVER)
export APPS_CFLAG := $(APPS_CFLAG)
export KRL_CFLAG := $(KRL_CFLAG)
export WL_CFLAG := $(WL_CFLAG)
export MAKEARCH=$(MAKE) ARCH=$(KERNELARCH) CROSS_COMPILE=$(CROSS_COMPILE)

export PRJ_PATH := $(ENV_PATH)
export FS_PATH := $(ENV_PATH)/rootfs/target
export KERNEL_PATH := $(ENV_PATH)/platform/$(PLATFORM)/$(CHIPSET)/kernels/$(KERNELARCH)-linux-$(KERNELVER)
export LOADER_PATH := $(ENV_PATH)/platform/$(PLATFORM)/$(CHIPSET)/u-boot/$(CONFIG_MODEL_NAME)/u-boot
export DRIVERS_PATH := $(ENV_PATH)/platform/$(PLATFORM)/$(CHIPSET)/drivers
export APPS_PATH := $(ENV_PATH)/daemons
export IMG_PATH := $(ENV_PATH)/image
export TOOL_PATH := $(ENV_PATH)/tools
export WWW_PATH := $(ENV_PATH)/projectX/$(CONFIG_MODEL_NAME)
export PLATFORM_PATH := $(ENV_PATH)/platform/$(PLATFORM)
export PATH:=$(TOOL_PATH):${PATH}


all: build install

build:
	@echo "=================== Start building ==================="
	rm -rf $(IMG_PATH)
	mkdir -p $(IMG_PATH)
	$(MAKEARCH) -C rootfs	
	$(MAKEARCH) -C platform 
	$(MAKEARCH) -C daemons
	$(MAKEARCH) -C tools
	@echo "=================== Finish building ==================="
	
install:
	@echo "=================== Start installing ==================="
	$(MAKEARCH) -C platform install
	$(MAKEARCH) -C daemons install		
	$(MAKEARCH) -C rootfs install	
	@echo "=================== Finish installing ==================="

clean:
	@echo "=================== Start cleanning ==================="
	rm -rf $(IMG_PATH)
	$(MAKEARCH) -C rootfs clean
	$(MAKEARCH) -C daemons clean		
	$(MAKEARCH) -C platform clean	
	$(MAKEARCH) -C tools clean
	@echo "=================== Finish cleanning ==================="
	
conf mconf:
	$(MAKEARCH) -C config
	@./config/$@ ./config/Config

menuconfig: mconf

# Default configurations
.config:
	cp config/defconfig $@
	$(MAKE) mconf
    
kernels:	
	$(MAKEARCH) -C platform 

daemons:
	$(MAKEARCH) -C daemons
	
daemons-%:
	$(MAKEARCH) -C daemons $*	
		
#
### Generic rules
#
%: 
	[ ! -d $* ] || $(MAKE) -C $*

%-clean:
	[ ! -d $* ] || $(MAKE) -C $* clean

%-install:
	[ ! -d $* ] || $(MAKE) -C $* install
		
.PHONY: all clean install
.PHONY: daemons
.PHONY: conf mconf menuconfig
