diff --git a/.gitignore b/.gitignore
index db02d0f..2a1e51c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -26,6 +26,7 @@ missing
 mdate-sh
 install-sh
 texinfo.tex
+.#*
 *~
 ,*
 BUGS
@@ -113,6 +114,9 @@ INSTALL
 /lib/sys/stat.h
 /lib/arg-nonnull.h
 /lib/link-warning.h
+/lib/c++defs.h
+/lib/iconv.h
+/lib/netdb.h
 /GPATH
 /GRTAGS
 /GSYMS
@@ -121,6 +125,7 @@ INSTALL
 /meta/guile-config
 /lib/locale.h
 /module/ice-9/eval.go.stamp
+/module/ice-9/psyntax-pp.go.*
 /doc/ref/standard-library.texi
 /doc/ref/standard-libraryscmfiles
 /lib/wchar.h
diff --git a/am/guilec b/am/guilec
index fec1d36..b7b3e6c 100644
--- a/am/guilec
+++ b/am/guilec
@@ -30,8 +30,15 @@ install-data-hook:
 	  touch -r "$$d$$p" "$(DESTDIR)$(ccachedir)/$$f"; \
 	done
 
+
+GUILE_SNARF = $(top_builddir)/libguile/guile-snarf
+
+AM_V_GUILEC = $(AM_V_GUILEC_$(V))
+AM_V_GUILEC_ = $(AM_V_GUILEC_$(AM_DEFAULT_VERBOSITY))
+AM_V_GUILEC_0 = @echo "  GUILEC" $@;
+
 SUFFIXES = .scm .go
 .scm.go:
-	GUILE_AUTO_COMPILE=0					\
+	$(AM_V_GUILEC)GUILE_AUTO_COMPILE=0				\
 	$(top_builddir)/meta/uninstalled-env			\
 	guile-tools compile $(GUILE_WARNINGS) -o "$@" "$<"
diff --git a/am/snarf b/am/snarf
new file mode 100644
index 0000000..74d0ad2
--- /dev/null
+++ b/am/snarf
@@ -0,0 +1,7 @@
+# -*- makefile -*-
+
+GUILE_SNARF = $(top_builddir)/libguile/guile-snarf
+
+AM_V_SNARF = $(AM_V_SNARF_$(V))
+AM_V_SNARF_ = $(AM_V_SNARF_$(AM_DEFAULT_VERBOSITY))
+AM_V_SNARF_0 = @echo "  SNARF " $@;
diff --git a/configure.ac b/configure.ac
index 1cdb471..b6de681 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,6 +37,7 @@ AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR(GUILE-VERSION)
 
 AM_INIT_AUTOMAKE([gnu no-define -Wall -Wno-override])
+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
 AC_COPYRIGHT(GUILE_CONFIGURE_COPYRIGHT)
 AC_CONFIG_SRCDIR([GUILE-VERSION])
diff --git a/guile-readline/Makefile.am b/guile-readline/Makefile.am
index 8d22b24..e749ce8 100644
--- a/guile-readline/Makefile.am
+++ b/guile-readline/Makefile.am
@@ -19,6 +19,8 @@
 ##   to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
 ##   Floor, Boston, MA 02110-1301 USA
 
+include $(top_srcdir)/am/snarf
+
 ## Prevent automake from adding extra -I options
 DEFS = @DEFS@ @EXTRA_DEFS@
 
@@ -38,8 +40,6 @@ AM_CPPFLAGS = -I. -I.. -I$(srcdir)/..			\
 
 AM_CFLAGS = $(GCC_CFLAGS)
 
-GUILE_SNARF = ../libguile/guile-snarf
-
 lib_LTLIBRARIES = libguilereadline-v-@LIBGUILEREADLINE_MAJOR@.la
 
 libguilereadline_v_@LIBGUILEREADLINE_MAJOR@_la_SOURCES = readline.c
@@ -60,7 +60,7 @@ modinclude_HEADERS = readline.h
 snarfcppopts = $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS)
 SUFFIXES = .x
 .c.x:
-	$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
+	$(AM_V_SNARF)$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
 
 EXTRA_DIST += LIBGUILEREADLINE-VERSION ChangeLog-2008
 
diff --git a/libguile/Makefile.am b/libguile/Makefile.am
index 90d8b61..9020a6d 100644
--- a/libguile/Makefile.am
+++ b/libguile/Makefile.am
@@ -19,6 +19,8 @@
 ##   write to the Free Software Foundation, Inc., 51 Franklin Street,
 ##   Fifth Floor, Boston, MA 02110-1301 USA
 
+include $(top_srcdir)/am/snarf
+
 AUTOMAKE_OPTIONS = gnu
 
 ## Prevent automake from adding extra -I options
@@ -53,6 +55,7 @@ gen_scmconfig_SOURCES = gen-scmconfig.c
 ## Override default rule; this should be compiled for BUILD host.
 ## For some reason, OBJEXT does not include the dot
 gen-scmconfig.$(OBJEXT): gen-scmconfig.c
+	$(AM_V_GEN) \
 	if [ "$(cross_compiling)" = "yes" ]; then \
 		$(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) $(AM_CPPFLAGS) -c -o $@ $<; \
 	else \
@@ -61,7 +64,8 @@ gen-scmconfig.$(OBJEXT): gen-scmconfig.c
 
 ## Override default rule; this should run on BUILD host.
 gen-scmconfig$(EXEEXT): $(gen_scmconfig_OBJECTS) $(gen_scmconfig_DEPENDENCIES) 
-	@rm -f gen-scmconfig$(EXEEXT)
+	$(AM_V_GEN) \
+	rm -f gen-scmconfig$(EXEEXT); \
 	if [ "$(cross_compiling)" = "yes" ]; then \
 		$(CCLD_FOR_BUILD) -o $@ $(gen_scmconfig_OBJECTS); \
 	else \
@@ -69,18 +73,20 @@ gen-scmconfig$(EXEEXT): $(gen_scmconfig_OBJECTS) $(gen_scmconfig_DEPENDENCIES)
 	fi
 
 scmconfig.h: ${top_builddir}/config.h gen-scmconfig$(EXEEXT)
-	rm -f scmconfig.h.tmp
-	cat $(srcdir)/scmconfig.h.top > scmconfig.h.tmp
-	./gen-scmconfig$(EXEEXT) >> scmconfig.h.tmp
-	chmod 444 scmconfig.h.tmp
-	rm -f scmconfig.h
-	mv scmconfig.h.tmp scmconfig.h
+	$(AM_V_GEN)(rm -f scmconfig.h.tmp; \
+	cat $(srcdir)/scmconfig.h.top > scmconfig.h.tmp; \
+	./gen-scmconfig$(EXEEXT) >> scmconfig.h.tmp; \
+	chmod 444 scmconfig.h.tmp; \
+	rm -f scmconfig.h; \
+	mv scmconfig.h.tmp scmconfig.h)
+
 
 guile_filter_doc_snarfage_SOURCES = c-tokenize.c
 
 ## Override default rule; this should be compiled for BUILD host.
 ## For some reason, OBJEXT does not include the dot
 c-tokenize.$(OBJEXT): c-tokenize.c
+	$(AM_V_GEN) \
 	if [ "$(cross_compiling)" = "yes" ]; then \
 		$(CC_FOR_BUILD) $(DEFS) $(AM_CPPFLAGS) -c -o $@ $<; \
 	else \
@@ -89,7 +95,8 @@ c-tokenize.$(OBJEXT): c-tokenize.c
 
 ## Override default rule; this should run on BUILD host.
 guile_filter_doc_snarfage$(EXEEXT): $(guile_filter_doc_snarfage_OBJECTS) $(guile_filter_doc_snarfage_DEPENDENCIES) 
-	@rm -f guile_filter_doc_snarfage$(EXEEXT)
+	$(AM_V_GEN) \
+	rm -f guile_filter_doc_snarfage$(EXEEXT); \
 	if [ "$(cross_compiling)" = "yes" ]; then \
 		$(CCLD_FOR_BUILD) -o $@ $(guile_filter_doc_snarfage_OBJECTS); \
 	else \
@@ -406,7 +413,7 @@ EXTRA_DOT_DOC_FILES = @EXTRA_DOT_DOC_FILES@
 DOT_I_FILES = vm-i-system.i vm-i-scheme.i vm-i-loader.i
 
 .c.i:
-	$(GREP) '^VM_DEFINE' $< > $@
+	$(AM_V_GEN)$(GREP) '^VM_DEFINE' $< > $@
 
 BUILT_SOURCES = cpp_err_symbols.c cpp_sig_symbols.c libpath.h \
     version.h scmconfig.h \
@@ -601,16 +608,14 @@ EXTRA_DIST = ChangeLog-scm ChangeLog-threads		\
 ## usual @...@, so autoconf doesn't go and substitute the values
 ## directly into the left-hand sides of the sed substitutions.  *sigh*
 version.h: version.h.in $(top_builddir)/config.status
-	sed < $(srcdir)/version.h.in > $@.tmp \
+	$(AM_V_GEN)sed < $(srcdir)/version.h.in > $@.tmp \
 	  -e s:@-GUILE_MAJOR_VERSION-@:${GUILE_MAJOR_VERSION}: \
 	  -e s:@-GUILE_MINOR_VERSION-@:${GUILE_MINOR_VERSION}: \
 	  -e s:@-GUILE_MICRO_VERSION-@:${GUILE_MICRO_VERSION}: \
-	  -e s:@-GUILE_EFFECTIVE_VERSION-@:${GUILE_EFFECTIVE_VERSION}:
-	mv $@.tmp $@
+	  -e s:@-GUILE_EFFECTIVE_VERSION-@:${GUILE_EFFECTIVE_VERSION}: && mv $@.tmp $@
 
 ## FIXME: Consider using timestamp file, to avoid unnecessary rebuilds.
 libpath.h: $(srcdir)/Makefile.in  $(top_builddir)/config.status
-	@echo "Generating libpath.h..."
 	@rm -f libpath.tmp
 	@echo '/* generated by Makefile */' > libpath.tmp
 	@echo '#define SCM_PKGDATA_DIR "$(pkgdatadir)"' >> libpath.tmp
@@ -649,18 +654,21 @@ libpath.h: $(srcdir)/Makefile.in  $(top_builddir)/config.status
 	@echo '	{ "CFLAGS",	   "@GUILE_CFLAGS@" }, \' >> libpath.tmp
 	@echo '	{ "buildstamp",    "'"`date`"'" }, \' >> libpath.tmp
 	@echo '}' >> libpath.tmp
-	@mv libpath.tmp libpath.h
+	$(AM_V_GEN)mv libpath.tmp libpath.h
 
 
 snarfcppopts = $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS)
 
 SUFFIXES = .x .doc
+
+AM_V_FILTER = $(AM_V_FILTER_$(V))
+AM_V_FILTER_ = $(AM_V_FILTER_$(AM_DEFAULT_VERBOSITY))
+AM_V_FILTER_0 = @echo "  FILTER" $@;
+
 .c.x:
-	./guile-snarf -o $@ $< $(snarfcppopts)
+	$(AM_V_SNARF)$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
 .c.doc:
-	-$(AWK) -f ./guile-func-name-check $<
-	(./guile-snarf-docs $(snarfcppopts) $< | \
-	./guile_filter_doc_snarfage$(EXEEXT) --filter-snarfage) > $@ || { rm $@; false; }
+	-$(AM_V_FILTER)$(AWK) -f ./guile-func-name-check $< && (./guile-snarf-docs $(snarfcppopts) $< | ./guile_filter_doc_snarfage$(EXEEXT) --filter-snarfage) > $@ || { rm $@; false; }
 
 $(DOT_X_FILES) $(EXTRA_DOT_X_FILES): scmconfig.h snarf.h guile-snarf.in
 
@@ -678,7 +686,7 @@ guile.texi: $(alldotdocfiles) guile$(EXEEXT)
 	$(dotdoc2texi) --manual > $@ || { rm $@; false; }
 
 guile-procedures.texi: $(alldotdocfiles) guile$(EXEEXT)
-	$(dotdoc2texi)          > $@ || { rm $@; false; }
+	$(AM_V_GEN)$(dotdoc2texi)          > $@ || { rm $@; false; }
 
 if HAVE_MAKEINFO
 
diff --git a/srfi/Makefile.am b/srfi/Makefile.am
index bb91268..0f0c4ac 100644
--- a/srfi/Makefile.am
+++ b/srfi/Makefile.am
@@ -19,6 +19,8 @@
 ##   write to the Free Software Foundation, Inc., 51 Franklin Street,
 ##   Fifth Floor, Boston, MA 02110-1301 USA
 
+include $(top_srcdir)/am/snarf
+
 AUTOMAKE_OPTIONS = gnu
 
 ## Prevent automake from adding extra -I options
@@ -68,14 +70,13 @@ libguile_srfi_srfi_60_v_@LIBGUILE_SRFI_SRFI_60_MAJOR@_la_LDFLAGS = -no-undefined
 
 EXTRA_DIST = ChangeLog-2008
 
-GUILE_SNARF = ../libguile/guile-snarf
-
 MKDEP = gcc -M -MG $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS)
 
 snarfcppopts = $(DEFS) $(AM_CPPFLAGS) $(CPPFLAGS) $(CFLAGS)
 
 SUFFIXES = .x
+
 .c.x:
-	$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
+	$(AM_V_SNARF)$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
 
 CLEANFILES = *.x
diff --git a/test-suite/standalone/Makefile.am b/test-suite/standalone/Makefile.am
index 806245c..573e4e0 100644
--- a/test-suite/standalone/Makefile.am
+++ b/test-suite/standalone/Makefile.am
@@ -19,6 +19,7 @@
 ##   write to the Free Software Foundation, Inc., 51 Franklin Street,
 ##   Fifth Floor, Boston, MA 02110-1301 USA
 
+include $(top_srcdir)/am/snarf
 
 # initializations so we can use += below.
 TESTS =
@@ -49,7 +50,7 @@ snarfcppopts =								      \
 
 SUFFIXES = .x
 .c.x:
-	${top_builddir}/libguile/guile-snarf -o $@ $< $(snarfcppopts)
+	$(AM_V_SNARF)$(GUILE_SNARF) -o $@ $< $(snarfcppopts)
 
 CLEANFILES = *.x
 
