aboutsummaryrefslogtreecommitdiff
path: root/mkconfig
diff options
context:
space:
mode:
authorWolfgang Denk2010-05-27 23:18:36 +0200
committerWolfgang Denk2010-06-13 18:08:22 +0200
commita6862bc123a9e6c93583879973679b0c5941a418 (patch)
tree9016a66d229a25dd185a471c27d788bd2ae9ac78 /mkconfig
parent8c994630b90fe5e6ced15105eee4549e3338abcc (diff)
Makefile/mkconfig: read simple board configurations from boards.cfg
Instead of adding explicit build rules for each and every board to the top level Makefile (which makes it grow and grow), we now provide a simple default rule and extend the "mkconfig" script to read board configurations from a plain text file (table), "boards.cfg". For simple boards it is now sufficient to add a single line of text to the "boards.cfg" file, no changes to the top level Makefile are needed any more. To make the table better readable, change the notation for unused fields from "NULL" into "-". Signed-off-by: Wolfgang Denk <wd@denx.de> Cc: Peter Tyser <ptyser@xes-inc.com> Cc: Mike Frysinger <vapier@gentoo.org>
Diffstat (limited to 'mkconfig')
-rwxr-xr-xmkconfig72
1 files changed, 51 insertions, 21 deletions
diff --git a/mkconfig b/mkconfig
index a71d09e95c5..b661071834e 100755
--- a/mkconfig
+++ b/mkconfig
@@ -12,6 +12,24 @@ APPEND=no # Default: Create new config file
BOARD_NAME="" # Name to print in make output
TARGETS=""
+arch=""
+cpu=""
+board=""
+vendor=""
+soc=""
+
+if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
+ # Automatic mode
+ line=`egrep -i "^[[:space:]]*${2}[[:space:]]" boards.cfg` || {
+ echo "make: *** No rule to make target \`$2_config'. Stop." >&2
+ exit 1
+ }
+
+ set ${line}
+ # add default board name if needed
+ [ $# = 3 ] && set ${line} ${1}
+fi
+
while [ $# -gt 0 ] ; do
case "$1" in
--) shift ; break ;;
@@ -22,13 +40,25 @@ while [ $# -gt 0 ] ; do
esac
done
-[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
-
[ $# -lt 4 ] && exit 1
[ $# -gt 6 ] && exit 1
-if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then
- echo "Failed: \$ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}" 1>&2
+CONFIG_NAME="${1%_config}"
+
+[ "${BOARD_NAME}" ] || BOARD_NAME="${CONFIG_NAME}"
+
+arch="$2"
+cpu="$3"
+if [ "$4" = "-" ] ; then
+ board=${BOARD_NAME}
+else
+ board="$4"
+fi
+[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
+[ $# -gt 5 ] && [ "$6" != "-" ] && soc="$6"
+
+if [ "${ARCH}" -a "${ARCH}" != "${arch}" ]; then
+ echo "Failed: \$ARCH=${ARCH}, should be '${arch}' for ${BOARD_NAME}" 1>&2
exit 1
fi
@@ -42,26 +72,26 @@ if [ "$SRCTREE" != "$OBJTREE" ] ; then
mkdir -p ${OBJTREE}/include2
cd ${OBJTREE}/include2
rm -f asm
- ln -s ${SRCTREE}/arch/$2/include/asm asm
- LNPREFIX=${SRCTREE}/arch/$2/include/asm/
+ ln -s ${SRCTREE}/arch/${arch}/include/asm asm
+ LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
cd ../include
rm -f asm
- ln -s ${SRCTREE}/arch/$2/include/asm asm
+ ln -s ${SRCTREE}/arch/${arch}/include/asm asm
else
cd ./include
rm -f asm
- ln -s ../arch/$2/include/asm asm
+ ln -s ../arch/${arch}/include/asm asm
fi
rm -f asm/arch
-if [ -z "$6" -o "$6" = "NULL" ] ; then
- ln -s ${LNPREFIX}arch-$3 asm/arch
+if [ -z "${soc}" ] ; then
+ ln -s ${LNPREFIX}arch-${cpu} asm/arch
else
- ln -s ${LNPREFIX}arch-$6 asm/arch
+ ln -s ${LNPREFIX}arch-${soc} asm/arch
fi
-if [ "$2" = "arm" ] ; then
+if [ "${arch}" = "arm" ] ; then
rm -f asm/proc
ln -s ${LNPREFIX}proc-armv asm/proc
fi
@@ -69,19 +99,19 @@ fi
#
# Create include file for Make
#
-echo "ARCH = $2" > config.mk
-echo "CPU = $3" >> config.mk
-echo "BOARD = $4" >> config.mk
+echo "ARCH = ${arch}" > config.mk
+echo "CPU = ${cpu}" >> config.mk
+echo "BOARD = ${board}" >> config.mk
-[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk
+[ "${vendor}" ] && echo "VENDOR = ${vendor}" >> config.mk
-[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk
+[ "${soc}" ] && echo "SOC = ${soc}" >> config.mk
# Assign board directory to BOARDIR variable
-if [ -z "$5" -o "$5" = "NULL" ] ; then
- BOARDDIR=$4
+if [ -z "${vendor}" ] ; then
+ BOARDDIR=${board}
else
- BOARDDIR=$5/$4
+ BOARDDIR=${vendor}/${board}
fi
#
@@ -102,7 +132,7 @@ done
cat << EOF >> config.h
#define CONFIG_BOARDDIR board/$BOARDDIR
#include <config_defaults.h>
-#include <configs/${BOARDNAME}.h>
+#include <configs/${CONFIG_NAME}.h>
#include <asm/config.h>
EOF