diff --git a/autoconf_share/Makefile.common b/autoconf_share/Makefile.common
index 26fadeb5c7bbe03f1782375e692524e371d665ce..4fc6d7d706d31aa292b8e03faef5e8f544a80d78 100644
--- a/autoconf_share/Makefile.common
+++ b/autoconf_share/Makefile.common
@@ -44,28 +44,34 @@ SUFFIXES = .idl
 
 
 
-# Rules for building documentation via doxygen.
-docall:
-	@cp $(top_builddir)/.doxygenrc doxygen.cfg
-	@projnm=`basename $(srcdir)`
-	@echo "PROJECT_NAME = $$projnm" >> doxygen.cfg
-	@echo "INPUT = $(srcdir)" >> doxygen.cfg
-	@echo 'RECURSIVE = YES' >> doxygen.cfg
-	$(DOXYGEN) doxygen.cfg
+# Rules for building documentation using doxygen or doc++.
+# Default output directory is docxxhtml.
+DOCDIR := docxxhtml
 
 doc:
-	cp $(top_builddir)/.doxygenrc doxygen.cfg
-	@projnm=`basename $(srcdir)`
-	@echo "PROJECT_NAME = $$projnm" >> doxygen.cfg
-	@echo "INPUT = $(srcdir)" >> doxygen.cfg
-	echo 'RECURSIVE = NO' >> doxygen.cfg
-	$(DOXYGEN) doxygen.cfg
-
-
-
-# Rules for building documentation via doc++.
-docppall:
-	$(DOCPP) $(DOCPPFLAGS) `find $(srcdir) -name "*.h" -print`
-
-docpp:
-	$(DOCPP) $(DOCPPFLAGS) $(srcdir)/*.h
+	@if [ "$(lofar_doctool)" = "doxygen" ] ; then \
+	  cp $(top_builddir)/.doxygenrc doxygen.cfg ; \
+	  projnm=`(cd $(srcdir) && pwd) | sed -e "s%.*/LOFAR/%%"` ; \
+	  echo "PROJECT_NAME = $$projnm" >> doxygen.cfg ; \
+	  echo "INPUT = $(srcdir)" >> doxygen.cfg ; \
+	  echo "RECURSIVE = YES" >> doxygen.cfg ; \
+	  echo "HTML_OUTPUT = $(DOCDIR)" >> doxygen.cfg ; \
+	  $(DOXYGEN) doxygen.cfg ; \
+	else \
+	  $(DOCPP) $(DOCPPFLAGS) --dir $(DOCDIR) `find $(srcdir) -name "*.h" -print` ; \
+	fi
+
+docthis:
+	echo $(lofar_doctool) "$(DOCDIR)"
+	@if [ "$(lofar_doctool)" = "doxygen" ] ; then \
+	echo $(lofar_doctool) "$(DOCDIR)" ; \
+	  cp $(top_builddir)/.doxygenrc doxygen.cfg ; \
+	  projnm=`(cd $(srcdir) && pwd) | sed -e "s%.*/LOFAR/%%"` ; \
+	  echo "PROJECT_NAME = $$projnm" >> doxygen.cfg ; \
+	  echo "INPUT = $(srcdir)" >> doxygen.cfg ; \
+	  echo "RECURSIVE = NO" >> doxygen.cfg ; \
+	  echo "HTML_OUTPUT = $(DOCDIR)" >> doxygen.cfg ; \
+	  $(DOXYGEN) doxygen.cfg ; \
+	else \
+	  $(DOCPP) $(DOCPPFLAGS) --dir $(DOCDIR) $(srcdir)/*.h ; \
+	fi
diff --git a/autoconf_share/lofar_docxx.m4 b/autoconf_share/lofar_docxx.m4
index ca9089fd8d2a9bf79876236a9e2900ef0658a6b5..fe5c382a1cae1dbfcd025ea2919a271b37015910 100644
--- a/autoconf_share/lofar_docxx.m4
+++ b/autoconf_share/lofar_docxx.m4
@@ -121,9 +121,11 @@ else
 	echo '' >> .doxygenrc
       fi
     fi
+    lofar_doctool=doxygen
 ]
 dnl
     AC_SUBST(DOXYGEN)dnl
+    AC_SUBST(lofar_doctool)dnl
 dnl
 [
   fi
@@ -184,12 +186,14 @@ else
       DOCPPFLAGS=
     fi
     if test "$with_docpp_flags" = "yes"; then
-      DOCPPFLAGS="--all --no-define --private --filenames --gifs --dir docxxhtml"
+      DOCPPFLAGS="--all --no-define --private --filenames --gifs"
     fi
+    lofar_doctool=docpp
 ]
 dnl
     AC_SUBST(DOCPP)dnl
     AC_SUBST(DOCPPFLAGS)dnl
+    AC_SUBST(lofar_doctool)dnl
 dnl
 [
   fi