From: Duncan Roe <duncan_roe@optusnet.com.au>
To: pablo@netfilter.org
Cc: netfilter-devel@vger.kernel.org
Subject: [PATCH libnetfilter_queue v5] build: doc: Allow to specify whether to produce man pages, html, neither or both
Date: Sat, 16 Oct 2021 18:52:31 +1100 [thread overview]
Message-ID: <20211016075231.11620-1-duncan_roe@optusnet.com.au> (raw)
- configure --help lists non-default documentation options.
Looking around the web, this seemed to me to be what most projects do.
Listed options are --enable-html-doc & --disable-man-pages.
- --with-doxygen is removed: --disable-man-pages also disables doxygen unless
--enable-html-doc is asserted.
If html is requested, `make install` installs it in htmldir.
Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au>
---
v2: broken out from 0001-build-doc-Fix-man-pages.patch
v3: no change (still part of a series)
v4: remove --without-doxygen since -disable-man-pages does that
v5: - update .gitignore for clean `git status` after in-tree build
- in configure.ac:
- ensure all variables are always set (avoid leakage from environment)
- provide helpful warning if HTML enabled but dot not found
.gitignore | 5 ++++-
configure.ac | 34 +++++++++++++++++++++++++++-------
doxygen/Makefile.am | 11 ++++++++++-
doxygen/doxygen.cfg.in | 3 ++-
4 files changed, 43 insertions(+), 10 deletions(-)
diff --git a/.gitignore b/.gitignore
index 525628e..ae3e740 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,7 +15,10 @@ Makefile.in
/libtool
/stamp-h1
-/doxygen.cfg
+/doxygen/doxygen.cfg
/libnetfilter_queue.pc
/examples/nf-queue
+/doxygen/doxyfile.stamp
+/doxygen/html/
+/doxygen/man/
diff --git a/configure.ac b/configure.ac
index 4721eeb..83959b0 100644
--- a/configure.ac
+++ b/configure.ac
@@ -13,6 +13,22 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
+AC_ARG_ENABLE([html-doc],
+ AS_HELP_STRING([--enable-html-doc], [Enable html documentation]),
+ [], [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])
+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
@@ -36,12 +52,10 @@ AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile
doxygen/Makefile doxygen/doxygen.cfg
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], [with_doxygen=yes])
AS_IF([test "x$with_doxygen" != xno], [
- AC_CHECK_PROGS([DOXYGEN], [doxygen])
+ AC_CHECK_PROGS([DOXYGEN], [doxygen], [""])
AC_CHECK_PROGS([DOT], [dot], [""])
AS_IF([test "x$DOT" != "x"],
[AC_SUBST(HAVE_DOT, YES)],
@@ -52,12 +66,18 @@ 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
+ AC_MSG_WARN([Doxygen not found - no documentation will be built])
+ enable_html_doc=no
+ enable_man_pages=no
])
+], [
+ dnl Warn user if html docs will be missing diagrams
+ AS_IF([test "$enable_html_doc" = yes -a -z "$DOT"],
+ AC_MSG_WARN([Dot not found - install graphviz to get interactive diagrams in HTML]))
])
AC_OUTPUT
echo "
libnetfilter_queue configuration:
- doxygen: ${with_doxygen}"
+man pages: ${enable_man_pages}
+html docs: ${enable_html_doc}"
diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am
index 5a7fdd5..c6eeed7 100644
--- a/doxygen/Makefile.am
+++ b/doxygen/Makefile.am
@@ -14,7 +14,9 @@ doxyfile.stamp: $(doc_srcs) Makefile
rm -rf html man
doxygen doxygen.cfg >/dev/null
+if BUILD_MAN
$(abs_top_srcdir)/doxygen/build_man.sh
+endif
touch doxyfile.stamp
@@ -24,13 +26,20 @@ all-local: doxyfile.stamp
clean-local:
rm -rf man 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)$(mandir) man html doxyfile.stamp $(DESTDIR)$(htmldir)
endif
EXTRA_DIST = build_man.sh
diff --git a/doxygen/doxygen.cfg.in b/doxygen/doxygen.cfg.in
index 99b5c90..14bd0cf 100644
--- a/doxygen/doxygen.cfg.in
+++ b/doxygen/doxygen.cfg.in
@@ -21,7 +21,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
--
2.17.5
reply other threads:[~2021-10-16 7:52 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211016075231.11620-1-duncan_roe@optusnet.com.au \
--to=duncan_roe@optusnet.com.au \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).