* [PATCH libnetfilter_log v2] build: doc: `make` generates requested documentation
@ 2021-09-28 2:28 Duncan Roe
2021-10-03 2:12 ` Duncan Roe
0 siblings, 1 reply; 3+ messages in thread
From: Duncan Roe @ 2021-09-28 2:28 UTC (permalink / raw)
To: pablo; +Cc: netfilter-devel
Generate man pages, HTML, neither or both according to ./configure.
Based on the work done for libnetfilter_queue
Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au>
---
v2: remove --without-doxygen since -disable-man-pages does that
.gitignore | 2 +-
Makefile.am | 2 +-
autogen.sh | 8 +++++
configure.ac | 43 +++++++++++++++++++++++-
doxygen/Makefile.am | 39 +++++++++++++++++++++
doxygen.cfg.in => doxygen/doxygen.cfg.in | 9 ++---
6 files changed, 96 insertions(+), 7 deletions(-)
create mode 100644 doxygen/Makefile.am
rename doxygen.cfg.in => doxygen/doxygen.cfg.in (76%)
diff --git a/.gitignore b/.gitignore
index 5eaabe3..41a3c1c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,6 +13,6 @@ Makefile.in
/configure
/libtool
-/doxygen/
+/build_man.sh
/doxygen.cfg
/*.pc
diff --git a/Makefile.am b/Makefile.am
index 2a9cdd8..6662d7b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = include src utils
+SUBDIRS = include src utils doxygen
ACLOCAL_AMFLAGS = -I m4
diff --git a/autogen.sh b/autogen.sh
index 5e1344a..b47c529 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -1,4 +1,12 @@
#!/bin/sh -e
+# Allow to override build_man.sh url for local testing
+# E.g. export NFQ_URL=file:///usr/src/libnetfilter_queue
+NFQ_URL=${NFQ_URL:-https://git.netfilter.org/libnetfilter_queue/plain}
+
+curl $NFQ_URL/doxygen/build_man.sh -O
+chmod a+x build_man.sh
+mv build_man.sh doxygen/
+
autoreconf -fi
rm -Rf autom4te.cache
diff --git a/configure.ac b/configure.ac
index c914e00..f51a867 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,6 +12,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
@@ -35,8 +51,33 @@ PKG_CHECK_MODULES([LIBNETFILTER_CONNTRACK], [libnetfilter_conntrack >= 1.0.2],
[HAVE_LNFCT=1], [HAVE_LNFCT=0])
AM_CONDITIONAL([BUILD_NFCT], [test "$HAVE_LNFCT" -eq 1])
+AS_IF([test "$enable_man_pages" = no -a "$enable_html_doc" = no], [with_doxygen=no])
+
+AS_IF([test "x$with_doxygen" != xno], [
+ AC_CHECK_PROGS([DOXYGEN], [doxygen])
+ AC_CHECK_PROGS([DOT], [dot], [""])
+ AS_IF([test "x$DOT" != "x"],
+ [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 - no documentation will be built])
+ enable_html_doc=no
+ enable_man_pages=no
+ ])
+])
+
dnl Output the makefile
AC_CONFIG_FILES([Makefile src/Makefile include/Makefile
include/libnetfilter_log/Makefile utils/Makefile libnetfilter_log.pc
- doxygen.cfg])
+ doxygen/Makefile doxygen/doxygen.cfg])
AC_OUTPUT
+
+echo "
+libnetfilter_log configuration:
+man pages: ${enable_man_pages}
+html docs: ${enable_html_doc}"
diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am
new file mode 100644
index 0000000..582db4e
--- /dev/null
+++ b/doxygen/Makefile.am
@@ -0,0 +1,39 @@
+if HAVE_DOXYGEN
+
+doc_srcs = $(top_srcdir)/src/libnetfilter_log.c\
+ $(top_srcdir)/src/nlmsg.c\
+ $(top_srcdir)/src/libipulog_compat.c
+
+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
+
+CLEANFILES = doxyfile.stamp
+
+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 -rf $(DESTDIR)$(mandir) man html doxyfile.stamp $(DESTDIR)$(htmldir)
+endif
+
+EXTRA_DIST = build_man.sh
diff --git a/doxygen.cfg.in b/doxygen/doxygen.cfg.in
similarity index 76%
rename from doxygen.cfg.in
rename to doxygen/doxygen.cfg.in
index dc2fddb..b6c27dc 100644
--- a/doxygen.cfg.in
+++ b/doxygen/doxygen.cfg.in
@@ -1,12 +1,11 @@
# Difference with default Doxyfile 1.8.20
PROJECT_NAME = @PACKAGE@
PROJECT_NUMBER = @VERSION@
-OUTPUT_DIRECTORY = doxygen
ABBREVIATE_BRIEF =
FULL_PATH_NAMES = NO
TAB_SIZE = 8
OPTIMIZE_OUTPUT_FOR_C = YES
-INPUT = .
+INPUT = @abs_top_srcdir@/src
FILE_PATTERNS = *.c
RECURSIVE = YES
EXCLUDE_SYMBOLS = nflog_g_handle \
@@ -18,7 +17,9 @@ SOURCE_BROWSER = YES
ALPHABETICAL_INDEX = NO
GENERATE_LATEX = NO
LATEX_CMD_NAME = latex
-GENERATE_MAN = YES
-HAVE_DOT = YES
+GENERATE_MAN = @GEN_MAN@
+GENERATE_HTML = @GEN_HTML@
+MAN_LINKS = YES
+HAVE_DOT = @HAVE_DOT@
DOT_TRANSPARENT = YES
SEARCHENGINE = NO
--
2.17.5
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH libnetfilter_log v2] build: doc: `make` generates requested documentation
2021-09-28 2:28 [PATCH libnetfilter_log v2] build: doc: `make` generates requested documentation Duncan Roe
@ 2021-10-03 2:12 ` Duncan Roe
2021-10-03 2:35 ` Duncan Roe
0 siblings, 1 reply; 3+ messages in thread
From: Duncan Roe @ 2021-10-03 2:12 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: Netfilter Development
Hi Pablo,
This patch
https://patchwork.ozlabs.org/project/netfilter-devel/patch/20210928022813.12582-1-duncan_roe@optusnet.com.au/
is all that's standing in the way of the next release of libnetfilter_log.
The size increase for defaulting man pages is modest:
> Configure command Installed package size (KB)
> ========= ======= ========= ======= ==== ====
> ./configure --disable-man-pages 208
> ./configure 260
> ./configure --enable-html-doc 848
> ./configure --enable-html-doc\
> --disable-man-pages 800
I can see from the mailing list that you've been really busy. Perhaps someone
else could test or even review the patch?
Cheers ... Duncan.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH libnetfilter_log v2] build: doc: `make` generates requested documentation
2021-10-03 2:12 ` Duncan Roe
@ 2021-10-03 2:35 ` Duncan Roe
0 siblings, 0 replies; 3+ messages in thread
From: Duncan Roe @ 2021-10-03 2:35 UTC (permalink / raw)
To: Pablo Neira Ayuso; +Cc: Netfilter Development
s +--enable-html-doc\+--enable-html-doc \+
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-10-03 2:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28 2:28 [PATCH libnetfilter_log v2] build: doc: `make` generates requested documentation Duncan Roe
2021-10-03 2:12 ` Duncan Roe
2021-10-03 2:35 ` Duncan Roe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.