diff options
author | Wolfgang Denk | 2010-05-27 16:18:36 -0500 |
---|---|---|
committer | Wolfgang Denk | 2010-06-13 11:08:22 -0500 |
commit | a6862bc123a9e6c93583879973679b0c5941a418 (patch) | |
tree | 9016a66d229a25dd185a471c27d788bd2ae9ac78 /mkconfig | |
parent | 8c994630b90fe5e6ced15105eee4549e3338abcc (diff) | |
download | u-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-x | mkconfig | 72 |
1 files changed, 51 insertions, 21 deletions
@@ -12,6 +12,24 @@ APPEND=no # Default: Create new config file | |||
12 | BOARD_NAME="" # Name to print in make output | 12 | BOARD_NAME="" # Name to print in make output |
13 | TARGETS="" | 13 | TARGETS="" |
14 | 14 | ||
15 | arch="" | ||
16 | cpu="" | ||
17 | board="" | ||
18 | vendor="" | ||
19 | soc="" | ||
20 | |||
21 | if [ \( $# -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} | ||
31 | fi | ||
32 | |||
15 | while [ $# -gt 0 ] ; do | 33 | while [ $# -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 |
23 | done | 41 | done |
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 | ||
30 | if [ "${ARCH}" -a "${ARCH}" != "$2" ]; then | 46 | CONFIG_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 | |||
50 | arch="$2" | ||
51 | cpu="$3" | ||
52 | if [ "$4" = "-" ] ; then | ||
53 | board=${BOARD_NAME} | ||
54 | else | ||
55 | board="$4" | ||
56 | fi | ||
57 | [ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5" | ||
58 | [ $# -gt 5 ] && [ "$6" != "-" ] && soc="$6" | ||
59 | |||
60 | if [ "${ARCH}" -a "${ARCH}" != "${arch}" ]; then | ||
61 | echo "Failed: \$ARCH=${ARCH}, should be '${arch}' for ${BOARD_NAME}" 1>&2 | ||
32 | exit 1 | 62 | exit 1 |
33 | fi | 63 | fi |
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 |
50 | else | 80 | else |
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 |
54 | fi | 84 | fi |
55 | 85 | ||
56 | rm -f asm/arch | 86 | rm -f asm/arch |
57 | 87 | ||
58 | if [ -z "$6" -o "$6" = "NULL" ] ; then | 88 | if [ -z "${soc}" ] ; then |
59 | ln -s ${LNPREFIX}arch-$3 asm/arch | 89 | ln -s ${LNPREFIX}arch-${cpu} asm/arch |
60 | else | 90 | else |
61 | ln -s ${LNPREFIX}arch-$6 asm/arch | 91 | ln -s ${LNPREFIX}arch-${soc} asm/arch |
62 | fi | 92 | fi |
63 | 93 | ||
64 | if [ "$2" = "arm" ] ; then | 94 | if [ "${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 |
67 | fi | 97 | fi |
@@ -69,19 +99,19 @@ fi | |||
69 | # | 99 | # |
70 | # Create include file for Make | 100 | # Create include file for Make |
71 | # | 101 | # |
72 | echo "ARCH = $2" > config.mk | 102 | echo "ARCH = ${arch}" > config.mk |
73 | echo "CPU = $3" >> config.mk | 103 | echo "CPU = ${cpu}" >> config.mk |
74 | echo "BOARD = $4" >> config.mk | 104 | echo "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 |
81 | if [ -z "$5" -o "$5" = "NULL" ] ; then | 111 | if [ -z "${vendor}" ] ; then |
82 | BOARDDIR=$4 | 112 | BOARDDIR=${board} |
83 | else | 113 | else |
84 | BOARDDIR=$5/$4 | 114 | BOARDDIR=${vendor}/${board} |
85 | fi | 115 | fi |
86 | 116 | ||
87 | # | 117 | # |
@@ -102,7 +132,7 @@ done | |||
102 | cat << EOF >> config.h | 132 | cat << 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> |
107 | EOF | 137 | EOF |
108 | 138 | ||