[PATCH libnetfilter_queue v2] build: doc: `make distcheck` passes with doxygen enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The main fix is to move fixmanpages.sh to inside doxygen/Makefile.am.

This means that in future, developers need to update doxygen/Makefile.am
when they add new functions and source files, since fixmanpages.sh is deleted.

Signed-off-by: Duncan Roe <duncan_roe@xxxxxxxxxxxxxxx>
---
v2: Implement suggestions from Jan Engelhardt <jengelh@xxxxxxx>

 Makefile.am         |  1 -
 configure.ac        | 11 +++++--
 doxygen/Makefile.am | 76 +++++++++++++++++++++++++++++++++++++++++++--
 fixmanpages.sh      | 66 ---------------------------------------
 4 files changed, 82 insertions(+), 72 deletions(-)
 delete mode 100755 fixmanpages.sh

diff --git a/Makefile.am b/Makefile.am
index 796f0d0..a5b347b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,4 +10,3 @@ pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = libnetfilter_queue.pc
 
 EXTRA_DIST += Make_global.am
-EXTRA_DIST += fixmanpages.sh
diff --git a/configure.ac b/configure.ac
index 32e4990..bdbee98 100644
--- a/configure.ac
+++ b/configure.ac
@@ -37,9 +37,10 @@ AC_CONFIG_FILES([Makefile src/Makefile utils/Makefile examples/Makefile
 	include/linux/Makefile include/linux/netfilter/Makefile])
 
 AC_ARG_WITH([doxygen], [AS_HELP_STRING([--with-doxygen],
-	    [create doxygen documentation [default=no]])],
-	    [], [with_doxygen=no])
-AS_IF([test "x$with_doxygen" = xyes], [
+	    [create doxygen documentation])],
+	    [with_doxygen="$withval"], [with_doxygen=yes])
+
+AS_IF([test "x$with_doxygen" != xno], [
 	AC_CHECK_PROGS([DOXYGEN], [doxygen])
 	AC_CHECK_PROGS([DOT], [dot], [""])
 	AS_IF([test "x$DOT" != "x"],
@@ -48,6 +49,10 @@ AS_IF([test "x$with_doxygen" = xyes], [
 ])
 
 AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
+AS_IF([test "x$DOXYGEN" = x], [
+	dnl Only run doxygen Makefile if doxygen installed
+	AC_MSG_WARN([Doxygen not found - continuing without Doxygen support])
+])
 AC_OUTPUT
 
 echo "
diff --git a/doxygen/Makefile.am b/doxygen/Makefile.am
index 0f99feb..b4268a5 100644
--- a/doxygen/Makefile.am
+++ b/doxygen/Makefile.am
@@ -1,4 +1,6 @@
 if HAVE_DOXYGEN
+
+# Be sure to add new source files to this table
 doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c  \
            $(top_srcdir)/src/nlmsg.c               \
            $(top_srcdir)/src/extra/checksum.c      \
@@ -9,8 +11,74 @@ doc_srcs = $(top_srcdir)/src/libnetfilter_queue.c  \
            $(top_srcdir)/src/extra/icmp.c          \
            $(top_srcdir)/src/extra/pktbuff.c
 
-doxyfile.stamp: $(doc_srcs) $(top_srcdir)/fixmanpages.sh
-	rm -rf html man && cd .. && doxygen doxygen.cfg >/dev/null && ./fixmanpages.sh
+doxyfile.stamp: $(doc_srcs) Makefile.am
+	rm -rf html man
+
+# Test for running under make distcheck.
+# If so, sibling src directory will be empty:
+# move it out of the way and symlink the real one while we run doxygen.
+	[ -f ../src/Makefile.in ] || \
+{ set -x; cd ..; mv src src.distcheck; ln -s $(top_srcdir)/src; }
+
+	cd ..; doxygen doxygen.cfg >/dev/null
+
+	[ ! -d ../src.distcheck ] || \
+{ set -x; cd ..; rm src; mv src.distcheck src; }
+
+# Keep this command up to date after adding new functions and source files.
+# The command has to be a single line so the functions work
+# (hence ";\" at the end of every line but the last).
+	main() { set -e; cd man/man3; rm -f _*;\
+setgroup LibrarySetup nfq_open;\
+  add2group nfq_close nfq_bind_pf nfq_unbind_pf;\
+setgroup Parsing nfq_get_msg_packet_hdr;\
+  add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev;\
+  add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name;\
+  add2group nfq_get_physindev_name nfq_get_outdev_name;\
+  add2group nfq_get_physoutdev_name nfq_get_packet_hw;\
+  add2group nfq_get_skbinfo;\
+  add2group nfq_get_uid nfq_get_gid;\
+  add2group nfq_get_secctx nfq_get_payload;\
+setgroup Queue nfq_fd;\
+  add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode;\
+  add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict;\
+  add2group nfq_set_verdict2 nfq_set_verdict_batch;\
+  add2group nfq_set_verdict_batch2 nfq_set_verdict_mark;\
+setgroup ipv4 nfq_ip_get_hdr;\
+  add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf;\
+  setgroup ip_internals nfq_ip_set_checksum;\
+setgroup ipv6 nfq_ip6_get_hdr;\
+  add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf;\
+setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd;\
+  add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen;\
+setgroup nfq_verd nfq_nlmsg_verdict_put;\
+  add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt;\
+setgroup nlmsg nfq_nlmsg_parse;\
+  add2group nfq_nlmsg_put;\
+setgroup pktbuff pktb_alloc;\
+  add2group pktb_data pktb_len pktb_mangle pktb_mangled;\
+  add2group pktb_free;\
+  setgroup otherfns pktb_tailroom;\
+    add2group pktb_mac_header pktb_network_header pktb_transport_header;\
+    setgroup uselessfns pktb_push;\
+      add2group pktb_pull pktb_put pktb_trim;\
+setgroup tcp nfq_tcp_get_hdr;\
+  add2group nfq_tcp_get_payload nfq_tcp_get_payload_len;\
+  add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6;\
+  setgroup tcp_internals nfq_tcp_compute_checksum_ipv4;\
+    add2group nfq_tcp_compute_checksum_ipv6;\
+setgroup udp nfq_udp_get_hdr;\
+  add2group nfq_udp_get_payload nfq_udp_get_payload_len;\
+  add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf;\
+  setgroup udp_internals nfq_udp_compute_checksum_ipv4;\
+    add2group nfq_udp_compute_checksum_ipv6;\
+setgroup Printing nfq_snprintf_xml;\
+setgroup icmp nfq_icmp_get_hdr;\
+};\
+setgroup() { mv $$1.3 $$2.3; BASE=$$2; };\
+add2group() { for i in $$@; do ln -sf $$BASE.3 $$i.3; done; };\
+main
+
 	touch doxyfile.stamp
 
 CLEANFILES = doxyfile.stamp
@@ -21,4 +89,8 @@ clean-local:
 install-data-local:
 	mkdir -p $(DESTDIR)$(mandir)/man3
 	cp --no-dereference --preserve=links,mode,timestamps man/man3/*.3 $(DESTDIR)$(mandir)/man3/
+
+# make distcheck needs uninstall-local
+uninstall-local:
+	rm -r $(DESTDIR)$(mandir) man html doxyfile.stamp
 endif
diff --git a/fixmanpages.sh b/fixmanpages.sh
deleted file mode 100755
index 02064ab..0000000
--- a/fixmanpages.sh
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/bash -p
-#set -x
-function main
-{
-  set -e
-  cd doxygen/man/man3
-  rm -f _*
-  setgroup LibrarySetup nfq_open
-    add2group nfq_close nfq_bind_pf nfq_unbind_pf
-  setgroup Parsing nfq_get_msg_packet_hdr
-    add2group nfq_get_nfmark nfq_get_timestamp nfq_get_indev nfq_get_physindev
-    add2group nfq_get_outdev nfq_get_physoutdev nfq_get_indev_name
-    add2group nfq_get_physindev_name nfq_get_outdev_name
-    add2group nfq_get_physoutdev_name nfq_get_packet_hw
-    add2group nfq_get_skbinfo
-    add2group nfq_get_uid nfq_get_gid
-    add2group nfq_get_secctx nfq_get_payload
-  setgroup Queue nfq_fd
-    add2group nfq_create_queue nfq_destroy_queue nfq_handle_packet nfq_set_mode
-    add2group nfq_set_queue_flags nfq_set_queue_maxlen nfq_set_verdict
-    add2group nfq_set_verdict2 nfq_set_verdict_batch
-    add2group nfq_set_verdict_batch2 nfq_set_verdict_mark
-  setgroup ipv4 nfq_ip_get_hdr
-    add2group nfq_ip_set_transport_header nfq_ip_mangle nfq_ip_snprintf
-    setgroup ip_internals nfq_ip_set_checksum
-  setgroup ipv6 nfq_ip6_get_hdr
-    add2group nfq_ip6_set_transport_header nfq_ip6_mangle nfq_ip6_snprintf
-  setgroup nfq_cfg nfq_nlmsg_cfg_put_cmd
-    add2group nfq_nlmsg_cfg_put_params nfq_nlmsg_cfg_put_qmaxlen
-  setgroup nfq_verd nfq_nlmsg_verdict_put
-    add2group nfq_nlmsg_verdict_put_mark nfq_nlmsg_verdict_put_pkt
-  setgroup nlmsg nfq_nlmsg_parse
-    add2group nfq_nlmsg_put
-  setgroup pktbuff pktb_alloc
-    add2group pktb_data pktb_len pktb_mangle pktb_mangled
-    add2group pktb_free
-    setgroup otherfns pktb_tailroom
-      add2group pktb_mac_header pktb_network_header pktb_transport_header
-      setgroup uselessfns pktb_push
-        add2group pktb_pull pktb_put pktb_trim
-  setgroup tcp nfq_tcp_get_hdr
-    add2group nfq_tcp_get_payload nfq_tcp_get_payload_len
-    add2group nfq_tcp_snprintf nfq_tcp_mangle_ipv4 nfq_tcp_mangle_ipv6
-    setgroup tcp_internals nfq_tcp_compute_checksum_ipv4
-      add2group nfq_tcp_compute_checksum_ipv6
-  setgroup udp nfq_udp_get_hdr
-    add2group nfq_udp_get_payload nfq_udp_get_payload_len
-    add2group nfq_udp_mangle_ipv4 nfq_udp_mangle_ipv6 nfq_udp_snprintf
-    setgroup udp_internals nfq_udp_compute_checksum_ipv4
-      add2group nfq_udp_compute_checksum_ipv6
-  setgroup Printing nfq_snprintf_xml
-  setgroup icmp nfq_icmp_get_hdr
-}
-function setgroup
-{
-  mv $1.3 $2.3
-  BASE=$2
-}
-function add2group
-{
-  for i in $@
-  do
-    ln -sf $BASE.3 $i.3
-  done
-}
-main
-- 
2.17.5




[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux