diff options
-rw-r--r-- | util/lint/lint-001-no-global-config-in-romstage | 12 | ||||
-rw-r--r-- | util/lint/remccoms3.sed | 102 |
2 files changed, 114 insertions, 0 deletions
diff --git a/util/lint/lint-001-no-global-config-in-romstage b/util/lint/lint-001-no-global-config-in-romstage new file mode 100644 index 0000000000..095cbcebab --- /dev/null +++ b/util/lint/lint-001-no-global-config-in-romstage @@ -0,0 +1,12 @@ +#!/bin/sh +DEFINES=`grep "#define" src/mainboard/*/*/romstage.c |sed 's,.*#define[\t ]\([^\t ]*\)[\t ].*,\1,' | grep -v "(" | sort -u` +SCANBUCKET=`mktemp` +find src -name .svn -type d -prune -o -name mainboard -type d -prune -o -name examples -type d -prune -o -type f -exec sed -f `dirname $0`/remccoms3.sed {} + > $SCANBUCKET + +for define in $DEFINES; do + if [ `egrep -c "([^_A-Za-z0-9]$define[^_A-Za-z0-9]|^$define[^_A-Za-z0-9]|[^_A-Za-z0-9]$define\$)" $SCANBUCKET` -gt 0 ]; then + echo "$define is defined in mainboard(s) and used elsewhere" + fi +done + +rm -f $SCANBUCKET diff --git a/util/lint/remccoms3.sed b/util/lint/remccoms3.sed new file mode 100644 index 0000000000..477a5eacb1 --- /dev/null +++ b/util/lint/remccoms3.sed @@ -0,0 +1,102 @@ +#! /bin/sed -nf + +# Remove C and C++ comments, by Brian Hiles (brian_hiles@rocketmail.com) + +# Sped up (and bugfixed to some extent) by Paolo Bonzini (bonzini@gnu.org) +# Works its way through the line, copying to hold space the text up to the +# first special character (/, ", '). The original version went exactly a +# character at a time, hence the greater speed of this one. But the concept +# and especially the trick of building the line in hold space are entirely +# merit of Brian. + +# Taken from http://sed.sourceforge.net/grabbag/scripts/remccoms3.sed +# According to http://sed.sourceforge.net/grabbag/ it's in the public domain +# Changes: +# 2010-11-06: Remove strings + +:loop + +# This line is sufficient to remove C++ comments! +/^\/\// s,.*,, + +# addition for coreboot-lint: For our purpose we don't need strings +s,"[^"]*",,g + +/^$/{ + x + p + n + b loop +} +/^"/{ + :double + /^$/{ + x + p + n + /^"/b break + b double + } + + H + x + s,\n\(.[^\"]*\).*,\1, + x + s,.[^\"]*,, + + /^"/b break + /^\\/{ + H + x + s,\n\(.\).*,\1, + x + s/.// + } + b double +} + +/^'/{ + :single + /^$/{ + x + p + n + /^'/b break + b single + } + H + x + s,\n\(.[^\']*\).*,\1, + x + s,.[^\']*,, + + /^'/b break + /^\\/{ + H + x + s,\n\(.\).*,\1, + x + s/.// + } + b single +} + +/^\/\*/{ + s/.// + :ccom + s,^.[^*]*,, + /^$/ n + /^\*\//{ + s/..// + b loop + } + b ccom +} + +:break +H +x +s,\n\(.[^"'/]*\).*,\1, +x +s/.[^"'/]*// +b loop |