--- /dev/null
+#!/bin/sh
+
+# Verify consistency of the regression test files present in a directory with
+# the contents of the EXTRA_DIST Makefile.am variable.
+
+# Expand variables in a Makefile ($(NAME) syntax), evaluate $(add_suffix ...)
+# and ignore $(noinst_SCRIPTS).
+parse_makefile() {
+ cat "$1" |
+ awk '/\\$/ {
+ n = $0
+ sub("\\\\$", "", n)
+ if (line != "")
+ line = line " " n
+ else
+ line = n
+ }
+ /[^\\]$/ {
+ if (line != "") {
+ print line " " $0
+ line = ""
+ } else {
+ print
+ }
+ }' |
+ awk '{
+ if (match($0, "^ *[A-Za-z_]* *= *.*$")) {
+ varname = $0
+ gsub("^ *", "", varname)
+ gsub(" *=.*", "", varname)
+ value = $0
+ gsub("^ *[A-Za-z_]* *= *", "", value)
+ var[varname] = value
+ }
+ for (v in var)
+ gsub("\\$\\( *" v " *\\)", var[v])
+ while ((pos = match($0, "\\$\\( *addsuffix *[^,)]*, *[^)]*\\)")) >= 1) {
+ suffix = substr($0, pos)
+ gsub("^\\$\\( *addsuffix *", "", suffix)
+ gsub(",.*", "", suffix)
+ names = substr($0, pos)
+ gsub("^\\$\\( *addsuffix *[^,)]*, *", "", names)
+ gsub("\\).*", "", names)
+ split(names, name)
+ name_and_suff=""
+ for (n in name)
+ name_and_suff = name_and_suff " " name[n] suffix
+ sub("\\$\\( *addsuffix *[^,)]*, *[^)]*\\)", name_and_suff)
+ }
+ print
+ }' |
+ sed 's/\$(noinst_SCRIPTS)//'
+}
+
+if [ $# = 0 ]; then
+ echo "Error: tool name argument is missing."
+ exit 1
+fi
+
+rc=0
+
+# For all directories specified as an argument, find the Makefile.am files
+# beneath and check the consistency of the files *.vgtest and *.exp* files
+# in that directory with the filenames specified in EXTRA_DIST in Makefile.am.
+for t in "$@"
+do
+ find $t -name Makefile.am |
+ while read m; do
+ d="$(dirname "$m")"
+ (
+ rc=0
+ if cd $d; then
+ parsed_makefile="$(parse_makefile Makefile.am)"
+ for f in $(ls -d *.exp* *.gdb *.vgtest 2>/dev/null)
+ do
+ if [ "$f" = "*.exp*" -o "$f" = "*.gdb" -o "$f" = "*.vgtest" ]; then
+ continue
+ fi
+ if ! echo "${parsed_makefile}" 2>/dev/null | grep '^ *EXTRA_DIST *=' |
+ grep -qw "$f"
+ then
+ echo "$m:1: error: $f is missing in EXTRA_DIST"
+ rc=1
+ fi
+ done
+
+ for f in $(ls -d filter* 2>/dev/null)
+ do
+ if ! echo "${parsed_makefile}" 2>/dev/null | grep '^ *dist_noinst_SCRIPTS *=' |
+ grep -qw "$f"
+ then
+ echo "$m:1: error: $f is missing in dist_noinst_SCRIPTS"
+ rc=1
+ fi
+ done
+
+ for f in $(parse_makefile Makefile.am | sed -n 's/^ *EXTRA_DIST *=//p')
+ do
+ if [ ! -e "$f" ]; then
+ echo "$m:1: error: $f is in EXTRA_DIST but doesn't exist"
+ rc=1
+ fi
+ done
+
+ for f in $(parse_makefile Makefile.am | sed -n 's/^ *dist_noinst_SCRIPTS *=//p')
+ do
+ if [ ! -e "$f" ]; then
+ echo "$m:1: error: $f is in dist_noinst_SCRIPTS but doesn't exist"
+ rc=1
+ fi
+ done
+ fi
+ [ $rc = 0 ]
+ )
+ if [ $? != 0 ]; then
+ rc=1
+ fi
+ [ $rc = 0 ]
+ done
+ if [ $? != 0 ]; then
+ rc=1
+ fi
+ [ $rc = 0 ]
+done
+exit $?