From 371244cb19f9804711dd66e4281ff7979915fd2e Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Tue, 13 Sep 2016 21:44:07 -0600 Subject: Makefile: Give a build error if ad-hoc CONFIG options are added New CONFIG options should be added via Kconfig. To help prevent new ad-hoc CONFIGs from being added, give a build error when these are detected. Signed-off-by: Simon Glass Acked-by: Stephen Warren Tested-by: Stephen Warren --- scripts/check-config.sh | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100755 scripts/check-config.sh (limited to 'scripts') diff --git a/scripts/check-config.sh b/scripts/check-config.sh new file mode 100755 index 0000000..28c8fe9 --- /dev/null +++ b/scripts/check-config.sh @@ -0,0 +1,55 @@ +#!/bin/sh +# Copyright (c) 2016 Google, Inc +# Written by Simon Glass +# +# Check that the u-boot.cfg file provided does not introduce any new +# ad-hoc CONFIG options +# +# You can generate the list of current ad-hoc CONFIG options (those which are +# not in Kconfig) with this command: +# +# export LC_ALL=C LC_COLLATE=C +# git grep CONFIG_ |tr ' \t' '\n\n' |sed -n 's/^\(CONFIG_[A-Z0-9_]*\).*/\1/p' \ +# |sort |uniq >scripts/config_whitelist.txt; +# unset LC_ALL LC_COLLATE + +# Usage +# check-config.sh +# +# For example: +# scripts/check-config.sh b/chromebook_link/u-boot.cfg kconfig_whitelist.txt . + +path="$1" +whitelist="$2" +srctree="$3" + +# Temporary files +configs="${path}.configs" +suspects="${path}.suspects" +ok="${path}.ok" +new_adhoc="${path}.adhoc" + +export LC_ALL=C +export LC_COLLATE=C + +cat ${path} |sed -n 's/^#define \(CONFIG_[A-Za-z0-9_]*\).*/\1/p' |sort |uniq \ + >${configs} + +comm -23 ${configs} ${whitelist} > ${suspects} + +cat `find ${srctree} -name "Kconfig*"` |sed -n \ + -e 's/^config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ + -e 's/^menuconfig \([A-Za-z0-9_]*\).*$/CONFIG_\1/p' |sort |uniq > ${ok} +comm -23 ${suspects} ${ok} >${new_adhoc} +if [ -s ${new_adhoc} ]; then + echo "Error: You must add new CONFIG options using Kconfig" + echo "The following new ad-hoc CONFIG options were detected:" + cat ${new_adhoc} + echo + echo "Please add these via Kconfig instead. Find a suitable Kconfig" + echo "file and add a 'config' or 'menuconfig' option." + # Don't delete the temporary files in case they are useful + exit 1 +else + rm ${suspects} ${ok} ${new_adhoc} +fi -- cgit v1.1