# (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


# The component list of this project
include Makefile.config


ifeq ($(OPTIMIZATION_LEVEL),op-level-0)
	OP_FLAGS = -O0
endif
ifeq ($(OPTIMIZATION_LEVEL),op-level-1)
	OP_FLAGS = -O1
endif
ifeq ($(OPTIMIZATION_LEVEL),op-level-2)
	OP_FLAGS = -O2
endif
ifeq ($(OPTIMIZATION_LEVEL),op-level-3)
	OP_FLAGS = -O3
endif


$(WORKSPACE_COMPS):
	@if [ -e $@/Makefile ]; then \
		make -C $@ CROSS_COMPILE=$(CROSS_COMPILE) OP_FLAGS=$(OP_FLAGS) all; \
	else \
		make -C $@ CROSS_COMPILE=$(CROSS_COMPILE) OP_FLAGS=$(OP_FLAGS) -f Makefile.default all; \
	fi

$(WORKSPACE_COMPS:%=%-install):
	@make -C $(subst -install,,$@) install

$(WORKSPACE_COMPS:%=%-clean):
	@make -C $(subst -clean,,$@) clean

all:
	@for app in $(strip $(WORKSPACE_COMPS)); do \
		if [ -d $$app ]; then \
			make $$app || break; \
		fi; \
	done

install:
	@printf "Installing all applications\n"
	@for app in $(strip $(WORKSPACE_COMPS)); do \
		if [ -d $$app ]; then \
			make -C $$app install || break; \
		fi; \
	done
	@printf "Applications installed\n"

clean:
	@printf "Cleaning all applications up\n"
	@for app in $(strip $(WORKSPACE_COMPS)); do \
		if [ -d $$app ]; then \
			make -C $$app clean; \
		fi; \
	done

usage:
# TODO: Finish Me

.PHONY: usage all install clean \
		$(WORKSPACE_COMPS) $(WORKSPACE_COMPS:%=%-install) $(WORKSPACE_COMPS:%=%-clean)
