a6862bc123
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>
140 lines
2.9 KiB
Bash
Executable File
140 lines
2.9 KiB
Bash
Executable File
#!/bin/sh -e
|
|
|
|
# Script to create header files and links to configure
|
|
# U-Boot for a specific board.
|
|
#
|
|
# Parameters: Target Architecture CPU Board [VENDOR] [SOC]
|
|
#
|
|
# (C) 2002-2006 DENX Software Engineering, Wolfgang Denk <wd@denx.de>
|
|
#
|
|
|
|
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 ;;
|
|
-a) shift ; APPEND=yes ;;
|
|
-n) shift ; BOARD_NAME="${1%_config}" ; shift ;;
|
|
-t) shift ; TARGETS="`echo $1 | sed 's:_: :g'` ${TARGETS}" ; shift ;;
|
|
*) break ;;
|
|
esac
|
|
done
|
|
|
|
[ $# -lt 4 ] && exit 1
|
|
[ $# -gt 6 ] && exit 1
|
|
|
|
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
|
|
|
|
echo "Configuring for ${BOARD_NAME} board..."
|
|
|
|
#
|
|
# Create link to architecture specific headers
|
|
#
|
|
if [ "$SRCTREE" != "$OBJTREE" ] ; then
|
|
mkdir -p ${OBJTREE}/include
|
|
mkdir -p ${OBJTREE}/include2
|
|
cd ${OBJTREE}/include2
|
|
rm -f asm
|
|
ln -s ${SRCTREE}/arch/${arch}/include/asm asm
|
|
LNPREFIX=${SRCTREE}/arch/${arch}/include/asm/
|
|
cd ../include
|
|
rm -f asm
|
|
ln -s ${SRCTREE}/arch/${arch}/include/asm asm
|
|
else
|
|
cd ./include
|
|
rm -f asm
|
|
ln -s ../arch/${arch}/include/asm asm
|
|
fi
|
|
|
|
rm -f asm/arch
|
|
|
|
if [ -z "${soc}" ] ; then
|
|
ln -s ${LNPREFIX}arch-${cpu} asm/arch
|
|
else
|
|
ln -s ${LNPREFIX}arch-${soc} asm/arch
|
|
fi
|
|
|
|
if [ "${arch}" = "arm" ] ; then
|
|
rm -f asm/proc
|
|
ln -s ${LNPREFIX}proc-armv asm/proc
|
|
fi
|
|
|
|
#
|
|
# Create include file for Make
|
|
#
|
|
echo "ARCH = ${arch}" > config.mk
|
|
echo "CPU = ${cpu}" >> config.mk
|
|
echo "BOARD = ${board}" >> config.mk
|
|
|
|
[ "${vendor}" ] && echo "VENDOR = ${vendor}" >> config.mk
|
|
|
|
[ "${soc}" ] && echo "SOC = ${soc}" >> config.mk
|
|
|
|
# Assign board directory to BOARDIR variable
|
|
if [ -z "${vendor}" ] ; then
|
|
BOARDDIR=${board}
|
|
else
|
|
BOARDDIR=${vendor}/${board}
|
|
fi
|
|
|
|
#
|
|
# Create board specific header file
|
|
#
|
|
if [ "$APPEND" = "yes" ] # Append to existing config file
|
|
then
|
|
echo >> config.h
|
|
else
|
|
> config.h # Create new config file
|
|
fi
|
|
echo "/* Automatically generated - do not edit */" >>config.h
|
|
|
|
for i in ${TARGETS} ; do
|
|
echo "#define CONFIG_MK_${i} 1" >>config.h ;
|
|
done
|
|
|
|
cat << EOF >> config.h
|
|
#define CONFIG_BOARDDIR board/$BOARDDIR
|
|
#include <config_defaults.h>
|
|
#include <configs/${CONFIG_NAME}.h>
|
|
#include <asm/config.h>
|
|
EOF
|
|
|
|
exit 0
|