diff options
author | Simon Glass <sjg@chromium.org> | 2016-09-13 21:44:07 -0600 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2016-09-16 17:27:24 -0400 |
commit | 371244cb19f9804711dd66e4281ff7979915fd2e (patch) | |
tree | 40cb0869ea03db494f5c2ae723b3ddf8f07ccf1c /scripts/check-config.sh | |
parent | eed921d923480eae759ebb79d1a1cd04f54f9445 (diff) | |
download | u-boot-imx-371244cb19f9804711dd66e4281ff7979915fd2e.zip u-boot-imx-371244cb19f9804711dd66e4281ff7979915fd2e.tar.gz u-boot-imx-371244cb19f9804711dd66e4281ff7979915fd2e.tar.bz2 |
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 <sjg@chromium.org>
Acked-by: Stephen Warren <swarren@nvidia.com>
Tested-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'scripts/check-config.sh')
-rwxr-xr-x | scripts/check-config.sh | 55 |
1 files changed, 55 insertions, 0 deletions
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 <sjg@chromium.org> +# +# 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 <path to u-boot.cfg> <path to whitelist file> <source dir> +# +# 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 |