Update doxygen/Makefile.am to build and install man pages and html documentation conditionally. Involves configure.ac and doxygen.cfg.in, see below. CONFIGURE.AC Update `configure --help` to list non-default documentation options, as do most packages (i.e. list non-defaults). 3 listed options: 1. --enable-html-doc 2. --disable-man-pages 3. --without-doxygen Option 3 overrides 1 & 2: e.g. if you have --without-doxygen but not --disable-man-pages you get: WARNING: Doxygen disabled - man pages will not be built doxygen is not run if no documentation is requested. Configure command Installed package size (KB) ========= ======= ========= ======= ==== ==== ./configure --without-doxygen 176 ./configure --disable-man-pages 176 ./configure 300 ./configure --enable-html-doc 1460 ./configure --enable-html-doc\ --disable-man-pages 1340 Do some extra re-ordering for clarity. Also for clarity, since this is linux-only, re-work test commands to look mode modern. DOXYGEN.CFG.IN HTML and man page generation are both conditional. Signed-off-by: Duncan Roe <duncan_roe@xxxxxxxxxxxxxxx> --- configure.ac | 76 +++++++++++++++++++++++++++++++-------------- doxygen.cfg.in | 3 +- doxygen/Makefile.am | 11 ++++++- 3 files changed, 64 insertions(+), 26 deletions(-) diff --git a/configure.ac b/configure.ac index 0fe754c..376d4ff 100644 --- a/configure.ac +++ b/configure.ac @@ -10,9 +10,42 @@ AM_INIT_AUTOMAKE([-Wall foreign subdir-objects tar-pax no-dist-gzip dist-bzip2 1.6]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) +case "$host" in +*-*-linux* | *-*-uclinux*) ;; +*) AC_MSG_ERROR([Linux only, dude!]);; +esac + dnl kernel style compile messages m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) +AC_ARG_WITH([doxygen], [AS_HELP_STRING([--without-doxygen], + [Don't run doxygen (to create documentation)])], + [with_doxygen="$withval"], [with_doxygen=yes]) + +AC_ARG_ENABLE([html-doc], + AS_HELP_STRING([--enable-html-doc], [Enable html documentation]), + [], [enable_html_doc=no]) +AS_IF([test "$with_doxygen" = no -a "$enable_html_doc" = yes], [ + AC_MSG_WARN([Doxygen disabled - html documentation will not be built]) + enable_html_doc=no +]) +AM_CONDITIONAL([BUILD_HTML], [test "$enable_html_doc" = yes]) +AS_IF([test "$enable_html_doc" = yes], + [AC_SUBST(GEN_HTML, YES)], + [AC_SUBST(GEN_HTML, NO)]) + +AC_ARG_ENABLE([man-pages], + AS_HELP_STRING([--disable-man-pages], [Disable man page documentation]), + [], [enable_man_pages=yes]) +AS_IF([test "$with_doxygen" = no -a "$enable_man_pages" = yes], [ + AC_MSG_WARN([Doxygen disabled - man pages will not be built]) + enable_man_pages=no +]) +AM_CONDITIONAL([BUILD_MAN], [test "$enable_man_pages" = yes]) +AS_IF([test "$enable_man_pages" = yes], + [AC_SUBST(GEN_MAN, YES)], + [AC_SUBST(GEN_MAN, NO)]) + AC_PROG_CC AM_PROG_CC_C_O AC_DISABLE_STATIC @@ -20,44 +53,39 @@ AM_PROG_LIBTOOL AC_PROG_INSTALL CHECK_GCC_FVISIBILITY -case "$host" in -*-*-linux* | *-*-uclinux*) ;; -*) AC_MSG_ERROR([Linux only, dude!]);; -esac - dnl Dependencies PKG_CHECK_MODULES([LIBNFNETLINK], [libnfnetlink >= 0.0.41]) PKG_CHECK_MODULES([LIBMNL], [libmnl >= 1.0.3]) -dnl Output the makefiles -AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile - libnetfilter_queue.pc doxygen.cfg - include/Makefile include/libnetfilter_queue/Makefile - doxygen/Makefile - include/linux/Makefile include/linux/netfilter/Makefile]) - -AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen], - [create doxygen documentation])], - [with_doxygen="$withval"], [with_doxygen=yes]) +AS_IF([test "$enable_man_pages" = no -a "$enable_html_doc" = no], [with_doxygen=no]) -AS_IF([test "x$with_doxygen" != xno], [ +AS_IF([test "$with_doxygen" = yes], [ AC_CHECK_PROGS([DOXYGEN], [doxygen]) AC_CHECK_PROGS([DOT], [dot], [""]) - AS_IF([test "x$DOT" != "x"], + AS_IF([test -n "$DOT"], [AC_SUBST(HAVE_DOT, YES)], [AC_SUBST(HAVE_DOT, NO)]) ]) AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"]) -AS_IF([test "x$DOXYGEN" = x], [ - AS_IF([test "x$with_doxygen" != xno], [ - dnl Only run doxygen Makefile if doxygen installed - AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]) - with_doxygen=no - ]) +AS_IF([test -z "$DOXYGEN" -a "$with_doxygen" = yes], [ + dnl Only run doxygen Makefile if doxygen installed + AC_MSG_WARN([Doxygen not found - no documentation will be built]) + with_doxygen=no + enable_html_doc=no + enable_man_pages=no ]) + +dnl Output the makefiles +AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile + libnetfilter_queue.pc doxygen.cfg + include/Makefile include/libnetfilter_queue/Makefile + doxygen/Makefile + include/linux/Makefile include/linux/netfilter/Makefile]) AC_OUTPUT echo " libnetfilter_queue configuration: - doxygen: ${with_doxygen}" + doxygen: ${with_doxygen} +man pages: ${enable_man_pages} +html docs: ${enable_html_doc}" diff --git a/doxygen.cfg.in b/doxygen.cfg.in index 266782e..757d72e 100644 --- a/doxygen.cfg.in +++ b/doxygen.cfg.in @@ -22,7 +22,8 @@ ALPHABETICAL_INDEX = NO SEARCHENGINE = NO GENERATE_LATEX = NO LATEX_CMD_NAME = latex -GENERATE_MAN = YES +GENERATE_MAN = @GEN_MAN@ +GENERATE_HTML = @GEN_HTML@ MAN_LINKS = YES HAVE_DOT = @HAVE_DOT@ DOT_TRANSPARENT = YES diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am index 5bcef61..37ed7aa 100644 --- a/doxygen/Makefile.am +++ b/doxygen/Makefile.am @@ -24,6 +24,7 @@ doxyfile.stamp: $(doc_srcs) Makefile.am # automake (run by autogen.sh) allows comments starting ## after continuations # but not blank lines +if BUILD_MAN /bin/bash -p -c 'declare -A renamed_page;\ ## main(){ set -e; cd man/man3; rm -f _*;\ @@ -219,6 +220,7 @@ remove_temp_files(){ for i in $$temps;\ };\ ## main' +endif touch doxyfile.stamp @@ -228,11 +230,18 @@ all-local: doxyfile.stamp clean-local: rm -rf $(top_srcdir)/doxygen/man $(top_srcdir)/doxygen/html install-data-local: +if BUILD_MAN mkdir -p $(DESTDIR)$(mandir)/man3 cp --no-dereference --preserve=links,mode,timestamps man/man3/*.3\ $(DESTDIR)$(mandir)/man3/ +endif +if BUILD_HTML + mkdir -p $(DESTDIR)$(htmldir) + cp --no-dereference --preserve=links,mode,timestamps html/*\ + $(DESTDIR)$(htmldir) +endif # make distcheck needs uninstall-local uninstall-local: - rm -r $(DESTDIR)$(mandir) man html doxyfile.stamp + rm -rf $(DESTDIR)$(htmldir) $(DESTDIR)$(mandir) man html doxyfile.stamp endif -- 2.17.5