diff --git a/Makefile.am b/Makefile.am
index d4aadb1..0e36756 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -253,5 +253,8 @@ post-html: docs/index.html
 	rsync $(rsync_args) -r docs/index.html $$USER,libxmlplusplus@web.sourceforge.net:$(web_path_project)
 	rsync $(rsync_args) -r examples $$USER,libxmlplusplus@web.sourceforge.net:$(web_path_project)
 
+install-ptest:
+	make -C examples install-ptest
+
 # Optional: auto-generate the ChangeLog file from the git log on make dist
 include $(top_srcdir)/macros/dist-changelog.am
diff --git a/examples/Makefile.am b/examples/Makefile.am
index d9541ca..c27e088 100644
--- a/examples/Makefile.am
+++ b/examples/Makefile.am
@@ -19,6 +19,8 @@ AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir) -I. $(LIBXMLXX_CFLAGS)
 AM_CXXFLAGS = $(LIBXMLXX_WXXFLAGS)
 LDADD = $(top_builddir)/libxml++/libxml++-$(LIBXMLXX_API_VERSION).la $(LIBXMLXX_LIBS)
 
+LOG_DRIVER = $(SHELL) ../macros/test-driver
+
 check_PROGRAMS = \
   dom_build/dom_build \
   dom_parse_entities/dom_parse_entities \
@@ -36,6 +38,23 @@ check_PROGRAMS = \
   schemavalidation/schemavalidation \
   textreader/textreader
 
+check_DOTLIBS = \
+  dom_build/.libs/dom_build \
+  dom_parse_entities/.libs/dom_parse_entities \
+  dom_parser/.libs/dom_parser \
+  dom_parser_raw/.libs/dom_parser_raw \
+  dom_read_write/.libs/dom_read_write \
+  dom_xinclude/.libs/dom_xinclude \
+  dom_xpath/.libs/dom_xpath \
+  dtdvalidation/.libs/dtdvalidation \
+  import_node/.libs/import_node \
+  sax_exception/.libs/sax_exception \
+  sax_parser/.libs/sax_parser \
+  sax_parser_build_dom/.libs/sax_parser_build_dom \
+  sax_parser_entities/.libs/sax_parser_entities \
+  schemavalidation/.libs/schemavalidation \
+  textreader/.libs/textreader
+
 # Shell scripts that call the example programs.
 check_SCRIPTS = \
   dom_build/make_check.sh \
@@ -147,10 +166,10 @@ dist_noinst_DATA = \
 # file are located in different directories.
 dom_read_write/make_check.sh: Makefile
 	echo '# Generated and used by "make check"' >$@
-	echo 'dom_read_write/dom_read_write "$(srcdir)/dom_read_write/example.xml" dom_read_write/example_output.xml >/dev/null' >>$@
+	echo 'cd dom_read_write && .libs/dom_read_write "example.xml" example_output.xml >/dev/null' >>$@
 	chmod +x $@
 
-script_template = cd "$(srcdir)/<!progname!>" && "$(abs_builddir)/<!progname!>/<!progname!>" >/dev/null
+script_template = cd "<!progname!>" && ".libs/<!progname!>" >/dev/null
 standard_scripts = $(filter-out dom_read_write/make_check.sh,$(check_SCRIPTS))
 
 # All other script files are generated like so:
@@ -162,3 +181,18 @@ $(standard_scripts): Makefile
 CLEANFILES = \
   dom_read_write/example_output.xml \
   $(check_SCRIPTS)
+
+buildtest: all
+	$(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) $(check_SCRIPTS)
+	$(MAKE) $(AM_MAKEFLAGS) buildtest-TESTS
+
+install-ptest:
+	$(MKDIR_P) $(DESTDIR)/examples
+	cp --parents $(check_DOTLIBS) $(DESTDIR)/examples
+	cp --parents $(check_SCRIPTS) $(DESTDIR)/examples
+	cd $(srcdir) && cp --parents $(dist_noinst_DATA) $(DESTDIR)/examples
+	cp Makefile $(DESTDIR)/examples
+	$(MKDIR_P) $(DESTDIR)/macros
+	cp $(srcdir)/../macros/test-driver $(DESTDIR)/macros
+	sed -i -e 's|^Makefile:|_Makefile:|' $(DESTDIR)/examples/Makefile
+
