aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWolfgang Denk2010-05-27 16:18:36 -0500
committerWolfgang Denk2010-06-13 11:08:22 -0500
commita6862bc123a9e6c93583879973679b0c5941a418 (patch)
tree9016a66d229a25dd185a471c27d788bd2ae9ac78 /mkconfig
parent8c994630b90fe5e6ced15105eee4549e3338abcc (diff)
downloadu-boot-a6862bc123a9e6c93583879973679b0c5941a418.tar.gz
u-boot-a6862bc123a9e6c93583879973679b0c5941a418.tar.xz
u-boot-a6862bc123a9e6c93583879973679b0c5941a418.zip
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 a71d09e95c..b661071834 100755
--- a/mkconfig
+++ b/mkconfig
@@ -12,6 +12,24 @@ APPEND=no # Default: Create new config file
12BOARD_NAME="" # Name to print in make output 12BOARD_NAME="" # Name to print in make output
13TARGETS="" 13TARGETS=""
14 14
15arch=""
16cpu=""
17board=""
18vendor=""
19soc=""
20
21if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then
22 # Automatic mode
23 line=`egrep -i "^[[:space:]]*${2}[[:space:]]" boards.cfg` || {
24 echo "make: *** No rule to make target \`$2_config'. Stop." >&2
25 exit 1
26 }
27
28 set ${line}
29 # add default board name if needed
30 [ $# = 3 ] && set ${line} ${1}
31fi
32
15while [ $# -gt 0 ] ; do 33while [ $# -gt 0 ] ; do
16 case "$1" in 34 case "$1" in
17 --) shift ; break ;; 35 --) shift ; break ;;
@@ -22,13 +40,25 @@ while [ $# -gt 0 ] ; do
22 esac 40 esac
23done 41done
24 42
25[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}"
26
27[ $# -lt 4 ] && exit 1 43[ $# -lt 4 ] && exit 1
28[ $# -gt 6 ] && exit 1 44[ $# -gt 6 ] && exit 1
29 45
30if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then 46CONFIG_NAME="${1%_config}"
31 echo "Failed: \$ARCH=${ARCH}, should be '$2' for ${BOARD_NAME}" 1>&2 47
48[ "${BOARD_NAME}" ] || BOARD_NAME="${CONFIG_NAME}"
49
50arch="$2"
51cpu="$3"
52if [ "$4" = "-" ] ; then
53 board=${BOARD_NAME}
54else
55 board="$4"
56fi
57[ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5"
58[ $# -gt 5 ] && [ "$6" != "-" ] && soc="$6"
59
60if [ "${ARCH}" -a "${ARCH}" != "${arch}" ]; then
61 echo "Failed: \$ARCH=${ARCH}, should be '${arch}' for ${BOARD_NAME}" 1>&2
32 exit 1 62 exit 1
33fi 63fi
34 64
@@ -42,26 +72,26 @@ if [ "$SRCTREE" != "$OBJTREE" ] ; then
42 mkdir -p ${OBJTREE}/include2 72 mkdir -p ${OBJTREE}/include2
43 cd ${OBJTREE}/include2 73 cd ${OBJTREE}/include2
44 rm -f asm 74 rm -f asm
45 ln -s ${SRCTREE}/arch/$2/include/asm asm 75 ln -s ${SRCTREE}/arch/${arch}/include/asm asm
46 LNPREFIX=${SRCTREE}/arch/$2/include/asm/ 76 LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
47 cd ../include 77 cd ../include
48 rm -f asm 78 rm -f asm
49 ln -s ${SRCTREE}/arch/$2/include/asm asm 79 ln -s ${SRCTREE}/arch/${arch}/include/asm asm
50else 80else
51 cd ./include 81 cd ./include
52 rm -f asm 82 rm -f asm
53 ln -s ../arch/$2/include/asm asm 83 ln -s ../arch/${arch}/include/asm asm
54fi 84fi
55 85
56rm -f asm/arch 86rm -f asm/arch
57 87
58if [ -z "$6" -o "$6" = "NULL" ] ; then 88if [ -z "${soc}" ] ; then
59 ln -s ${LNPREFIX}arch-$3 asm/arch 89 ln -s ${LNPREFIX}arch-${cpu} asm/arch
60else 90else
61 ln -s ${LNPREFIX}arch-$6 asm/arch 91 ln -s ${LNPREFIX}arch-${soc} asm/arch
62fi 92fi
63 93
64if [ "$2" = "arm" ] ; then 94if [ "${arch}" = "arm" ] ; then
65 rm -f asm/proc 95 rm -f asm/proc
66 ln -s ${LNPREFIX}proc-armv asm/proc 96 ln -s ${LNPREFIX}proc-armv asm/proc
67fi 97fi
@@ -69,19 +99,19 @@ fi
69# 99#
70# Create include file for Make 100# Create include file for Make
71# 101#
72echo "ARCH = $2" > config.mk 102echo "ARCH = ${arch}" > config.mk
73echo "CPU = $3" >> config.mk 103echo "CPU = ${cpu}" >> config.mk
74echo "BOARD = $4" >> config.mk 104echo "BOARD = ${board}" >> config.mk
75 105
76[ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk 106[ "${vendor}" ] && echo "VENDOR = ${vendor}" >> config.mk
77 107
78[ "$6" ] && [ "$6" != "NULL" ] && echo "SOC = $6" >> config.mk 108[ "${soc}" ] && echo "SOC = ${soc}" >> config.mk
79 109
80# Assign board directory to BOARDIR variable 110# Assign board directory to BOARDIR variable
81if [ -z "$5" -o "$5" = "NULL" ] ; then 111if [ -z "${vendor}" ] ; then
82 BOARDDIR=$4 112 BOARDDIR=${board}
83else 113else
84 BOARDDIR=$5/$4 114 BOARDDIR=${vendor}/${board}
85fi 115fi
86 116
87# 117#
@@ -102,7 +132,7 @@ done
102cat << EOF >> config.h 132cat << EOF >> config.h
103#define CONFIG_BOARDDIR board/$BOARDDIR 133#define CONFIG_BOARDDIR board/$BOARDDIR
104#include <config_defaults.h> 134#include <config_defaults.h>
105#include <configs/${BOARDNAME}.h> 135#include <configs/${CONFIG_NAME}.h>
106#include <asm/config.h> 136#include <asm/config.h>
107EOF 137EOF
108 138