-\r
# build with:\r
-# make subdir1 - build the subdir1 \r
-# make subdir1/subdir2 - build subdir2\r
-# \r
-# clean:\r
-# Removed all generated files \r
+# $ make BOARDDIR=<board> BDIR=<dir>[,<dir>] CROSS_COMPILE=<gcc> all|clean|clean_all\r
+#\r
+# TARGETS\r
+# all: Target when building\r
+# clean: Remove generatated files for a board \r
+# clean_all: Remove all generated files\r
+# help: Print some help\r
#\r
-# BOARDDIR=<board dir> \r
+# VARIABLES:\r
+# BOARDDIR=<board dir> \r
# Select what board to build for \r
-\r
-# BOARDDIR=<board dir> \r
-# Select what board to build for\r
-# \r
-# Q=[(@)/empty] \r
+# BDIR=<dir>[,<dir>] \r
+# Select what directories to build. The kernel is always built.\r
+# CROSS_COMPILE\r
+# Specify the compiler to use. \r
+# Q=[(@)/empty] \r
# If Q=@ cmd's will not be echoed.\r
-# \r
-# Build\r
-# >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple all \r
-# Clean \r
-# >make BOARDDIR=mpc551xsim BDIR=system/kernel,examples/simple clean\r
+#\r
+# EXAMPLES\r
+# Clean all\r
+# $ make clean_all\r
+#\r
+# Clean for a specific board\r
+# $ make BDIR=mpc551xsim clean\r
+#\r
+# Build the simple example (assuming CROSS_COMPILE set)\r
+# $ make BOARDDIR= mpc551xsim BDIR=examples/simple all\r
#\r
\r
+\r
export UNAME:=$(shell uname)\r
\r
ifneq ($(findstring Darwin,$(UNAME)),)\r
export SED=sed\r
endif\r
\r
-USE_DBG_PRINTF?=y\r
+ifeq ($(VERBOSE),y)\r
+export Q?=\r
+else\r
+export Q?=@\r
+endif\r
\r
-Q?=@\r
-export Q\r
export TOPDIR = $(CURDIR)\r
-export CFG_DEBUG ?= n\r
-export CFG_USE_DEBUG_PRINT\r
-ifeq ($(CFG_DEBUG),n)\r
-export CFG_RELEASE = y\r
-endif\r
export PATH\r
\r
+# Select default console\r
+# RAMLOG | TTY_T32 | TTY_WINIDEA \r
+export SELECT_OS_CONSOLE\r
+export SELECT_CONSOLE\r
+export USE_DEBUG_PRINTF\r
+export SELECT_OPT\r
+\r
ifneq ($(filter clean_all,$(MAKECMDGOALS)),clean_all)\r
- ifeq (${BOARDDIR},)\r
- $(error BOARDDIR is empty) \r
+ ifeq ($(BOARDDIR),)\r
+ $(error BOARDDIR is empty)\r
+ endif\r
+ ifeq ($(BDIR),)\r
+ $(error BDIR is empty)\r
endif\r
endif\r
\r
USE_T32_SIM?=n\r
export USE_T32_SIM\r
\r
-# override BDIR := system/kernel ${BDIR} \r
-\r
# Tools\r
# Ugly thing to make things work under cmd.exe \r
PATH := /usr/bin/:$(PATH) \r
-find := $(shell which find)\r
+FIND := $(shell which find)\r
\r
export objdir = obj_$(BOARDDIR)\r
-\r
-.PHONY: clean\r
-.PHONY: release\r
-\r
-.PHONY: help\r
-help:\r
- @echo "Make kernel and a simple example"\r
- @echo " > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
- @echo ""\r
- @echo "Save the config (CROSS_COMPILE and BDIR)"\r
- @echo " > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple save"\r
- @echo ""\r
- @echo "Clean"\r
- @echo " > make clean"\r
- @echo ""\r
- @echo "Present config:"\r
- @echo " ARCH=$(ARCH)"\r
- @echo " ARCH_FAM=$(ARCH_FAM)"\r
- @echo " BOARDDIR =$(BOARDDIR)"\r
- @echo " CROSS_COMPILE =$(CROSS_COMPILE)"\r
- @echo ""\r
- \r
-def-$(USE_DBG_PRINTF) += USE_DBG_PRINTF\r
-def-$(USE_DEBUG_PRINT) += USE_DEBUG_PRINT\r
-\r
-\r
export CFG_MCU \r
export CFG_CPU\r
export MCU\r
# SUBDIR - The current subdirectory it's building.\r
\r
comma:= ,\r
+empty:=\r
+space:= $(empty) $(empty)\r
split = $(subst $(comma), ,$(1))\r
dir_cmd_goals := $(call split,$(BDIR))\r
-cmd_cmd_goals := $(filter clean all install,$(MAKECMDGOALS))\r
+cmd_cmd_goals := $(filter all clean config,$(MAKECMDGOALS))\r
+\r
+# Check for CROSS_COMPILE\r
+ifneq ($(cmd_cmd_goals),)\r
+\r
+# Check that the board actually exist\r
+ifdef BOARDDIR\r
+ all_boards := $(subst boards/,,$(shell $(FIND) boards/ -maxdepth 1 -type d))\r
+ all_boards_print := $(subst $(space),$(comma)$(space),$(strip $(all_boards)))\r
+ ifeq ($(filter $(BOARDDIR),$(all_boards)),)\r
+ $(error no such board: $(BOARDDIR), valid boards are: $(all_boards_print))\r
+ endif\r
+endif\r
+\r
+# Check BDIR\r
+endif\r
\r
libs:\r
mkdir -p $@\r
\r
+.PHONY all:\r
+\r
all: libs $(dir_cmd_goals)\r
\r
+.PHONY: clean\r
+.PHONY: release\r
+\r
+.PHONY: help\r
+help:\r
+ @echo "Build a simple example"\r
+ @echo " > make BOARDDIR=mpc551xsim CROSS_COMPILE=/opt/powerpc-eabi/bin/powerpc-eabi- BDIR=examples/simple all"\r
+ @echo ""\r
+ @echo "Clean"\r
+ @echo " > make clean"\r
+ @echo ""\r
+ @echo "Present config:"\r
+ @echo " BDIR = ${BDIR}"\r
+ @echo " BOARDDIR = $(BOARDDIR)"\r
+ @echo " CROSS_COMPILE = $(CROSS_COMPILE)"\r
+ @echo " CURDIR = $(CURDIR)" \r
+ @echo ""\r
+\r
+\r
+test:\r
+ @echo $(all_boards)\r
+\r
show_build:\r
- @echo Building for $(dir_cmd_goals)\r
- @echo BOARDDIR: $(BOARDDIR)\r
- @echo ARCH_FAM/ARCH: $(ARCH_FAM)/$(ARCH)\r
+ @echo ""\r
+ @echo "==========[ BUILD INFO ]==========="\r
+ @echo " BDIR: $(BDIR) [$(origin BDIR)]"\r
+ @echo " BOARDDIR: $(BOARDDIR) [$(origin BOARDDIR)]"\r
+ @echo " COMPILER: $(COMPILER) [$(origin COMPILER)]" \r
+ifeq ($(COMPILER),cw) \r
+ @echo " CW_COMPILE: $(CW_COMPILE) [$(origin CW_COMPILE)]"\r
+else \r
+ @echo " CROSS_COMPILE: $(CROSS_COMPILE) [$(origin CROSS_COMPILE)]"\r
+endif\r
+ @echo " CURDIR: $(CURDIR)"\r
+ @echo " SELECT_CONSOLE: $(SELECT_CONSOLE) [$(origin SELECT_CONSOLE)]"\r
+ \r
+ \r
\r
-\r
$(dir_cmd_goals) :: show_build FORCE \r
- @echo ==========[ $@ ]===========\r
+ @echo ""\r
+ @echo ==========[ ${abspath $@} ]===========\r
+ @if [ ! -d $@ ]; then echo "No such directory: \"$@\" quitting"; exit 1; fi\r
+@[ -d $@/$(objdir) ] || mkdir -p $@/$(objdir)\r
@chmod 777 $@/$(objdir)\r
$(Q)$(MAKE) -r -C $@/$(objdir) -f $(CURDIR)/scripts/rules.mk ROOTDIR=$(CURDIR) SUBDIR=$@ $(cmd_cmd_goals)\r
\r
FORCE:\r
\r
+.PHONY: boards\r
+boards:\r
+ @find . -type d -name *\r
+\r
clean_all:\r
- @find . -type d -name obj_* | xargs rm -rf\r
- @find . -type f -name *.a | xargs rm -rf\r
- echo Done!\r
+ $(Q)find . -type d -name obj_* | xargs rm -rf\r
+ $(Q)find . -type f -name *.a | xargs rm -rf\r
+ @echo\r
+ @echo " >>>>>>>>> DONE <<<<<<<<<"\r
+ @echo\r
+ \r
+config: $(dir_cmd_goals) \r
\r
+.PHONY clean: \r
clean: $(dir_cmd_goals)\r
- @echo "Clean:"\r
- @echo " Removing objectfiles and libs for ARCH=$(ARCH)"\r
- @find . -type d -name $(objdir) | xargs rm -rf\r
- @find . -type f -name *.a| xargs rm -rf\r
- @rm -rf libs/*\r
- @echo Done!\r
+ @echo\r
+ @echo " >> Cleaning MAIN $(CURDIR)"\r
+# $(Q)find . -type d -name $(objdir) | xargs rm -rf\r
+# $(Q)find . -type f -name *.a | xargs rm -rf\r
+# $(Q)rm -rf libs/*\r
+ @echo\r
+ @echo " >>>>>>>>> DONE <<<<<<<<<"\r
+ @echo\r
\r
\r
\r