summaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/lint/lint-001-no-global-config-in-romstage12
-rw-r--r--util/lint/remccoms3.sed102
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