From 9329cdfb3003a26bac1324fc05dbbbafc00dc37e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 4 Oct 2010 00:34:17 +0200 Subject: [PATCH] Build: Add "board options" column to boards.cfg There are some boards where it's currently not possible to detect all board information at runtime, therefore a new column was added to boards.cfg . This column can contain multiple options: a board configuration name, optionally followed by a colon (':') and a list of options, which are separated by comma (','). In case of simple options like '256M_U_BOOT', these expand to "#define CONFIG_MK_256M_U_BOOT 1" in config.h . In case of assignments like 'RAM=8192', these expand to "#define CONFIG_MK_RAM 8192" in config.h . Example: FOO:HAS_BAR,BAZ=64 means: - the name of the board config file is include/configs/FOO.h - the generated file include/config.h will contain these lines: #define CONFIG_HAS_BAR 1 #define CONFIG_BAZ 64 Signed-off-by: Marek Vasut [wd@denx.de: edited commit message; added code to deal with an optional board configuration name] Signed-off-by: Wolfgang Denk --- boards.cfg | 4 ++-- mkconfig | 34 +++++++++++++++++++++++++++++----- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/boards.cfg b/boards.cfg index 5dd7209..cb1ee31 100644 --- a/boards.cfg +++ b/boards.cfg @@ -17,8 +17,8 @@ # # :.,$! sort -f -k2,2 -k3,3 -k6,6 -k5,5 -k1,1 # -# Target ARCH CPU Board name Vendor SoC -########################################################################### +# Target ARCH CPU Board name Vendor SoC Options +############################################################################################### qong arm arm1136 - davedenx mx31 mx31ads arm arm1136 - freescale mx31 diff --git a/mkconfig b/mkconfig index b661071..f3054ce 100755 --- a/mkconfig +++ b/mkconfig @@ -5,7 +5,7 @@ # # Parameters: Target Architecture CPU Board [VENDOR] [SOC] # -# (C) 2002-2006 DENX Software Engineering, Wolfgang Denk +# (C) 2002-2010 DENX Software Engineering, Wolfgang Denk # APPEND=no # Default: Create new config file @@ -17,6 +17,7 @@ cpu="" board="" vendor="" soc="" +options="" if [ \( $# -eq 2 \) -a \( "$1" = "-A" \) ] ; then # Automatic mode @@ -41,11 +42,12 @@ while [ $# -gt 0 ] ; do done [ $# -lt 4 ] && exit 1 -[ $# -gt 6 ] && exit 1 +[ $# -gt 7 ] && exit 1 +# Strip all options and/or _config suffixes CONFIG_NAME="${1%_config}" -[ "${BOARD_NAME}" ] || BOARD_NAME="${CONFIG_NAME}" +[ "${BOARD_NAME}" ] || BOARD_NAME="${1%_config}" arch="$2" cpu="$3" @@ -56,13 +58,34 @@ else fi [ $# -gt 4 ] && [ "$5" != "-" ] && vendor="$5" [ $# -gt 5 ] && [ "$6" != "-" ] && soc="$6" +[ $# -gt 6 ] && [ "$7" != "-" ] && { + # check if we have a board config name in the options field + # the options field mave have a board config name and a list + # of options, both separated by a colon (':'); the options are + # separated by commas (','). + # + # Check for board name + tmp="${7%:*}" + if [ "$tmp" ] ; then + CONFIG_NAME="$tmp" + fi + # Check if we only have a colon... + if [ "${tmp}" != "$7" ] ; then + options=${7#*:} + TARGETS="`echo ${options} | sed 's:,: :g'` ${TARGETS}" + fi +} 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..." +if [ "$options" ] ; then + echo "Configuring for ${BOARD_NAME} - Board: ${CONFIG_NAME}, Options: ${options}" +else + echo "Configuring for ${BOARD_NAME} board..." +fi # # Create link to architecture specific headers @@ -126,7 +149,8 @@ fi echo "/* Automatically generated - do not edit */" >>config.h for i in ${TARGETS} ; do - echo "#define CONFIG_MK_${i} 1" >>config.h ; + i="`echo ${i} | sed '/=/ {s/=/\t/;q } ; { s/$/\t1/ }'`" + echo "#define CONFIG_MK_${i}" >>config.h ; done cat << EOF >> config.h -- 2.7.4