# (c) Copyright 2010, ACTi Corporation, Inc. ALL RIGHTS RESERVED
#
# All software are Copyright 2010 by ACTi Corporation. ALL RIGHTS RESERVED.
# Redistribution and use in source and binary forms, with or without modification,
# are strictly prohibited.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY EXPRESS
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.


SHELL = /bin/bash


#
#  Guess of default project construction/building environment variables
#  is moved to build/rules/configure.make
#


ENVIRONMENT_RULES = build/rules/configure.make build/rules/preparation.make
BOOTLOADER_RULES  = build/rules/uboot.make \
					build/rules/bLoader.make
PROJECT_RULES     = build/rules/kernel.make \
					build/rules/project.packages.make \
					build/rules/project.workspace.make \
					build/rules/project.root-fs.make
SANDBOX_RULES     = sandbox/build/rules/sandbox.make
POST_BUILD_RULES  = build/rules/firmware.make


-include config.cache


include $(ENVIRONMENT_RULES)
include $(BOOTLOADER_RULES)
include $(PROJECT_RULES)
-include $(SANDBOX_RULES)
include $(POST_BUILD_RULES)


usage:
	@printf "  Available Tasks\t  Description\n"
	@printf "==================================================================\n"
	@printf "toolchain-install\tInstall cross-compilation toolchain\n"
	@printf "bLoader\t\t\tBuild boot loader\n"
	@printf "uboot\t\t\tBuild uboot image\n"
	@printf "kernel\t\t\tBuild kernel image\n"
	@printf "kernel-modules\t\tBuild all kernel modules of A1\n"
	@printf "packages\t\tBuild all 3rd party/open spurce packages\n"
	@printf "workspace\t\tBuild user applications\n"
	@printf "root-fs\t\t\tGenerate complete root file system\n"
	@printf "firmware\t\tGenerate the target firmware\n"
	@printf "all\t\t\tBuild all projects, include uboot\n"

toolchain-install:
	make -C build -f rules/toolchain-install.make

configure: configure-do

output: output-build

bLoader: bLoader-build

uboot: bLoader-build uboot-build

kernel: kernel-build

kernel-modules-all: kernel-modules-all-build

kernel-modules-private: kernel-modules-private-build

packages: packages-build

workspace: workspace-build

root-fs: root-fs-build

firmware: firmware-build

all: bLoader uboot firmware

clean: bLoader-clean uboot-clean kernel-clean kernel-modules-private-clean \
	   packages-clean workspace-clean root-fs-clean


print-make-environment:
	@printf "TARGET_PROFILE: %s\n" $(TARGET_PROFILE)
	@printf "CROSS_COMPILE: %s\n" $(CROSS_COMPILE)
	@printf "RAMDISK_SIZE: %s\n" $(RAMDISK_SIZE)
	@printf "BUILD_TOPDIR: %s\n" $(BUILD_TOPDIR)
	@printf "A1_TOOLCHAIN_HOME: %s\n" $(A1_TOOLCHAIN_HOME)
	@printf "A1_UBOOT_TOOLCHAIN_HOME: %s\n" $(A1_UBOOT_TOOLCHAIN_HOME)
	@printf "PATH: %s\n" $(PATH)

preview:
	@printf "TFTP server  locates to: %s\n" $(BUILD_TOPDIR)/output
	build/rules/tiny-tftpd.py $(BUILD_TOPDIR)/output 69

.PHONY: usage toolchain-install configure output \
		uboot \
		kernel kernel-modules-all kernel-modules-private \
		packages workspace root-fs \
		firmware
