All of lore.kernel.org
 help / color / mirror / Atom feed
From: KOVACS Krisztian <hidden@sch.bme.hu>
To: Pablo Neira Ayuso <pablo@eurodev.net>,
	Harald Welte <laforge@netfilter.org>
Cc: netfilter-devel@lists.netfilter.org
Subject: [RFC][PATCH] use of pkg-config in libnetfilter_*, conntrack, and ulogd2
Date: Sun, 19 Mar 2006 23:24:48 +0100	[thread overview]
Message-ID: <200603192324.50444@krak> (raw)

[-- Attachment #1: Type: text/plain, Size: 1096 bytes --]


  Hi,

  This weekend I've spent a significant amount of time configuring and 
compiling the whole libnetfilter_* universe and the conntrack and ulogd2 
tools. My initial plan was to install everything under /opt/netfilter, 
however, the out-of-the-box configure.in files provided with these 
modules do not make this particularly easy.

  So after spending some time trying all kinds of mantras and magical 
runes to get autoconfuse do what I intended to do, I came to the 
conclusion that all this would be much simpler if we used the PKG_CHECK_* 
macros in configure.in. The necessary pkgconfig .pc files are generated 
and installed anyway, so why not?

  Of course this means that to compile these modules one will need 
pkg-config, but personally I don't consider this a problem. The 
additional benefit of this method would be that the only thing to take 
care of is that of setting a correct PKG_CONFIG_PATH, all the include 
paths and libraries are then found magically.

  Patches for libnetfilter_{conntrack,cthelper,log,queue}, conntrack and 
ulogd2 attached.

-- 
 KOVACS Krisztian

[-- Attachment #2: libnetfilter_conntrack.patch --]
[-- Type: text/x-diff, Size: 2062 bytes --]

Index: libnetfilter_conntrack/configure.in
===================================================================
--- libnetfilter_conntrack/configure.in	(revision 6554)
+++ libnetfilter_conntrack/configure.in	(working copy)
@@ -18,9 +18,12 @@
 *) AC_MSG_ERROR([Linux only, dude!]);;
 esac
 
-AC_CHECK_LIB(nfnetlink, nfnl_subsys_open, AC_MSG_RESULT(found), AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed]))
-AC_CHECK_HEADER([libnfnetlink/linux_nfnetlink.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed])])
+dnl Dependencies
+LIBNFNETLINK_REQUIRED=0.0.16
 
+PKG_CHECK_MODULES(LIBNFNETLINK, libnfnetlink >= $LIBNFNETLINK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnfnetlink >= $LIBNFNETLINK_REQUIRED))
+
 AC_CHECK_HEADERS(arpa/inet.h)
 dnl Check for inet_ntop
 AC_CHECK_FUNCS(inet_ntop)
@@ -61,7 +64,11 @@
 	CFLAGS="$CFLAGS -DLIBNETFILTER_CONNTRACK_DIR=$MODULE_DIR"
 fi
 
+CFLAGS="$CFLAGS $LIBNFNETLINK_CFLAGS"
+LIBNFCONNTRACK_LIBS="$LIBNFNETLINK_LIBS"
 
+AC_SUBST(LIBNFCONNTRACK_LIBS)
+
 dnl Output the makefile
 AC_OUTPUT(Makefile src/Makefile include/Makefile utils/Makefile include/libnetfilter_conntrack/Makefile l3extensions/Makefile extensions/Makefile libnetfilter_conntrack.pc)
 
Index: libnetfilter_conntrack/src/Makefile.am
===================================================================
--- libnetfilter_conntrack/src/Makefile.am	(revision 6554)
+++ libnetfilter_conntrack/src/Makefile.am	(working copy)
@@ -4,8 +4,8 @@
 
 #EXTRA_DIST = $(man_MANS) acinclude.m4
 
-AM_CFLAGS=-fPIC -Wall
-LIBS=
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFCONNTRACK_LIBS@
 
 lib_LTLIBRARIES = libnetfilter_conntrack.la 
 
Index: libnetfilter_conntrack/Makefile.am
===================================================================
--- libnetfilter_conntrack/Makefile.am	(revision 6554)
+++ libnetfilter_conntrack/Makefile.am	(working copy)
@@ -3,7 +3,6 @@
 AUTOMAKE_OPTIONS = foreign dist-bzip2 1.6
 
 SUBDIRS	= include src l3extensions extensions utils
-LINKOPTS = -lnfnetlink
 
 man_MANS = #nfnetlink_conntrack.3 nfnetlink_conntrack.7
 

[-- Attachment #3: libnetfilter_queue.patch --]
[-- Type: text/x-diff, Size: 1459 bytes --]

Index: libnetfilter_queue/configure.in
===================================================================
--- libnetfilter_queue/configure.in	(revision 6554)
+++ libnetfilter_queue/configure.in	(working copy)
@@ -17,8 +17,16 @@
 *) AC_MSG_ERROR([Linux only, dude!]);;
 esac
 
-AC_CHECK_LIB(nfnetlink, nfnl_subsys_open, AC_MSG_RESULT(found), AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed]))
-AC_CHECK_HEADER([libnfnetlink/linux_nfnetlink.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed])])
+dnl Dependencies
+LIBNFNETLINK_REQUIRED=0.0.16
+ 
+PKG_CHECK_MODULES(LIBNFNETLINK, libnfnetlink >= $LIBNFNETLINK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnfnetlink >= $LIBNFNETLINK_REQUIRED))
+ 
+CFLAGS="$CFLAGS $LIBNFNETLINK_CFLAGS"
+LIBNFQUEUE_LIBS="$LIBNFNETLINK_LIBS"
+ 
+AC_SUBST(LIBNFQUEUE_LIBS)
 
 dnl Output the makefiles
 AC_OUTPUT(Makefile include/Makefile include/libnetfilter_queue/Makefile src/Makefile utils/Makefile libnetfilter_queue.pc)
Index: libnetfilter_queue/src/Makefile.am
===================================================================
--- libnetfilter_queue/src/Makefile.am	(revision 6554)
+++ libnetfilter_queue/src/Makefile.am	(working copy)
@@ -3,8 +3,8 @@
 LIBVERSION=2:0:1
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/include -I${KERNELDIR}
-AM_CFLAGS=-fPIC -Wall
-LIBS=
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFQUEUE_LIBS@
 
 lib_LTLIBRARIES = libnetfilter_queue.la libnetfilter_queue_libipq.la
 

[-- Attachment #4: conntrack.patch --]
[-- Type: text/x-diff, Size: 2630 bytes --]

Index: conntrack/configure.in
===================================================================
--- conntrack/configure.in	(revision 6554)
+++ conntrack/configure.in	(working copy)
@@ -3,7 +3,6 @@
 AC_CANONICAL_SYSTEM
 
 AM_INIT_AUTOMAKE(conntrack, 1.00beta2)
-#AM_CONFIG_HEADER(config.h)
 
 AC_PROG_CC
 AM_PROG_LIBTOOL
@@ -15,14 +14,14 @@
 *) AC_MSG_ERROR([Linux only, dude!]);;
 esac
 
-# Checks for libraries.
-# FIXME: Replace `main' with a function in `-lc':
-dnl AC_CHECK_LIB([c], [main])
-# FIXME: Replace `main' with a function in `-ldl':
+dnl Dependencies
+LIBNFCONNTRACK_REQUIRED=0.0.31
+ 
+AC_CHECK_LIB(dl, dlopen)
 
-AC_CHECK_LIB([dl], [dlopen])
-AC_CHECK_LIB([netfilter_conntrack], [nfct_dump_conntrack_table] ,,,[-lnetfilter_conntrack])
-
+PKG_CHECK_MODULES(LIBNFCONNTRACK, libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED))
+ 
 AC_CHECK_HEADERS(arpa/inet.h)
 dnl check for inet_pton
 AC_CHECK_FUNCS(inet_pton)
@@ -56,19 +55,6 @@
   ], AC_MSG_RESULT(no), AC_MSG_RESULT(no))
 fi
 
-# Checks for header files.
-dnl AC_HEADER_STDC
-dnl AC_CHECK_HEADERS([netinet/in.h stdlib.h])
-
-# Checks for typedefs, structures, and compiler characteristics.
-dnl AC_C_CONST
-dnl AC_C_INLINE
-
-# Checks for library functions.
-dnl AC_FUNC_MALLOC
-dnl AC_FUNC_VPRINTF
-dnl AC_CHECK_FUNCS([memset])
-
 dnl--------------------------------
 
 if test ! -z "$libdir"; then
@@ -78,10 +64,9 @@
 
 dnl--------------------------------
 
-dnl AC_CONFIG_FILES([Makefile
-dnl                  debug/Makefile
-dnl                  debug/src/Makefile
-dnl                  extensions/Makefile
-dnl                  src/Makefile])
+CFLAGS="$CFLAGS $LIBNFCONNTRACK_CFLAGS"
+CONNTRACK_LIBS="$LIBNFCONNTRACK_LIBS"
 
+AC_SUBST(CONNTRACK_LIBS)
+
 AC_OUTPUT(Makefile src/Makefile extensions/Makefile include/Makefile)
Index: conntrack/src/Makefile.am
===================================================================
--- conntrack/src/Makefile.am	(revision 6554)
+++ conntrack/src/Makefile.am	(working copy)
@@ -1,7 +1,7 @@
 include $(top_srcdir)/Make_global.am
+LIBS = @CONNTRACK_LIBS@
 
 sbin_PROGRAMS = conntrack
 conntrack_SOURCES = conntrack.c
-
-conntrack_LDFLAGS = $(all_libraries) -rdynamic -lnetfilter_conntrack
+#conntrack_LDFLAGS = $(all_libraries) -rdynamic
  
Index: conntrack/autogen.sh
===================================================================
--- conntrack/autogen.sh	(revision 6554)
+++ conntrack/autogen.sh	(working copy)
@@ -13,6 +13,6 @@
 
 run aclocal
 run libtoolize -f
-run autoheader
+#run autoheader
 run automake -a
 run autoconf

[-- Attachment #5: ulogd2.patch --]
[-- Type: text/x-diff, Size: 2927 bytes --]

Index: ulogd2/configure.in
===================================================================
--- ulogd2/configure.in	(revision 6554)
+++ ulogd2/configure.in	(working copy)
@@ -2,7 +2,7 @@
 AC_INIT
 
 AM_INIT_AUTOMAKE(ulogd, 2.0.0beta2)
-AM_CONFIG_HEADER(config.h)
+# AM_CONFIG_HEADER(config.h)
 
 dnl Checks for programs.
 AC_PROG_MAKE_SET
@@ -28,13 +28,14 @@
 AC_FUNC_VPRINTF
 AC_CHECK_FUNCS(socket strerror)
 
-AC_CHECK_HEADER([libnetfilter_log/linux_nfnetlink_log.h], [AC_MSG_RESULT([found])],
-		[AC_MSG_ERROR([libnetfilter_log Version 0.0.11 or later needed])])
+LIBNFCONNTRACK_REQUIRED=0.0.31
+LIBNFLOG_REQUIRED=0.0.11
+ 
+PKG_CHECK_MODULES(LIBNFCONNTRACK, libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED))
+PKG_CHECK_MODULES(LIBNFLOG, libnetfilter_log >= $LIBNFLOG_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnetfilter_log >= $LIBNFLOG_REQUIRED))
 
-AC_CHECK_HEADER([libnetfilter_conntrack/libnetfilter_conntrack.h], [AC_MSG_RESULT([found])],
-		[AC_MSG_ERROR([libnetfilter_conntrack Version 0.0.11 or later needed])])
-
-
 CT_CHECK_POSTGRES_DB()
 AM_CONDITIONAL(HAVE_PGSQL, test "x$PQLIBPATH" != "x")
 
@@ -61,6 +62,11 @@
 dnl AM_CONDITIONAL(HAVE_MYSQL, test x$mysqldir != x)
 dnl AM_CONDITIONAL(HAVE_PGSQL, test x$pgsqldir != x)
 
+CFLAGS="$CFLAGS $LIBNFCONNTRACK_CFLAGS $LIBNFLOG_CFLAGS"
+
+AC_SUBST(LIBNFCONNTRACK_LIBS)
+AC_SUBST(LIBNFLOG_LIBS)
+
 AC_OUTPUT(doc/Makefile \
 	  include/Makefile include/ulogd/Makefile include/libipulog/Makefile \
 	  libipulog/Makefile \
Index: ulogd2/input/flow/Makefile.am
===================================================================
--- ulogd2/input/flow/Makefile.am	(revision 6554)
+++ ulogd2/input/flow/Makefile.am	(working copy)
@@ -1,11 +1,12 @@
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-fPIC -Wall
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFCONNTRACK_LIBS@
 
 pkglib_LTLIBRARIES = ulogd_inpflow_NFCT.la # ulogd_inpflow_IPFIX.la
 
 ulogd_inpflow_NFCT_la_SOURCES = ulogd_inpflow_NFCT.c
-ulogd_inpflow_NFCT_la_LDFLAGS = -module -lnetfilter_conntrack
+ulogd_inpflow_NFCT_la_LDFLAGS = -module
 
 #ulogd_inpflow_IPFIX_la_SOURCES = ulogd_inpflow_IPFIX.c
 #ulogd_inpflow_IPFIX_la_LDFLAGS = -module
Index: ulogd2/input/packet/Makefile.am
===================================================================
--- ulogd2/input/packet/Makefile.am	(revision 6554)
+++ ulogd2/input/packet/Makefile.am	(working copy)
@@ -1,12 +1,12 @@
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-fPIC -Wall
-LIBS=
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFLOG_LIBS@
 
 pkglib_LTLIBRARIES = ulogd_inppkt_NFLOG.la ulogd_inppkt_ULOG.la
 
 ulogd_inppkt_NFLOG_la_SOURCES = ulogd_inppkt_NFLOG.c
-ulogd_inppkt_NFLOG_la_LDFLAGS = -module -lnetfilter_log
+ulogd_inppkt_NFLOG_la_LDFLAGS = -module
 
 ulogd_inppkt_ULOG_la_SOURCES = ulogd_inppkt_ULOG.c
 ulogd_inppkt_ULOG_la_LDFLAGS = -module

[-- Attachment #6: libnetfilter_cthelper.patch --]
[-- Type: text/x-diff, Size: 2873 bytes --]

Index: libnetfilter_cthelper/include/Makefile.am
===================================================================
--- libnetfilter_cthelper/include/Makefile.am	(revision 6554)
+++ libnetfilter_cthelper/include/Makefile.am	(working copy)
@@ -1,4 +1,4 @@
 
 SUBDIRS = libnetfilter_cthelper
 
-nodist_HEADERS = linux_list.h
+# nodist_HEADERS = linux_list.h
Index: libnetfilter_cthelper/configure.in
===================================================================
--- libnetfilter_cthelper/configure.in	(revision 6554)
+++ libnetfilter_cthelper/configure.in	(working copy)
@@ -18,15 +18,23 @@
 *) AC_MSG_ERROR([Linux only, dude!]);;
 esac
 
-AC_CHECK_LIB(nfnetlink, nfnl_subsys_open, AC_MSG_RESULT(found), AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed]))
-AC_CHECK_HEADER([libnfnetlink/linux_nfnetlink.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed])])
+dnl Dependencies
+LIBNFNETLINK_REQUIRED=0.0.16
+LIBNFCONNTRACK_REQUIRED=0.0.31
+LIBNFQUEUE_REQUIRED=0.0.12
+ 
+PKG_CHECK_MODULES(LIBNFNETLINK, libnfnetlink >= $LIBNFNETLINK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnfnetlink >= $LIBNFNETLINK_REQUIRED))
+PKG_CHECK_MODULES(LIBNFCONNTRACK, libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnetfilter_conntrack >= $LIBNFCONNTRACK_REQUIRED))
+PKG_CHECK_MODULES(LIBNFQUEUE, libnetfilter_queue >= $LIBNFQUEUE_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnetfilter_queue >= $LIBNFQUEUE_REQUIRED))
 
-AC_CHECK_LIB(netfilter_conntrack, nfct_open_nfnl, AC_MSG_RESULT(found), AC_MSG_ERROR([libnetfilter_conntrack 0.0.31 or later needed]))
-AC_CHECK_HEADER([libnetfilter_conntrack/libnetfilter_conntrack.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnetfilter_conntrack 0.0.31 or later needed])])
+CFLAGS="$CFLAGS $LIBNFNETLINK_CFLAGS $LIBNFCONNTRACK_CFLAGS $LIBNFQUEUE_CFLAGS"
+LIBNFCTHELPER_LIBS="$LIBNFNETLINK_LIBS $LIBNFCONNTRACK_LIBS $LIBNFQUEUE_LIBS"
 
-AC_CHECK_LIB(netfilter_queue, nfq_open_nfnl, AC_MSG_RESULT(found), AC_MSG_ERROR([libnetfilter_queue 0.0.12 or later needed]))
-AC_CHECK_HEADER([libnetfilter_queue/libnetfilter_queue.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnetfilter_queue 0.0.12 or later needed])])
+dnl Output the makefile
+AC_SUBST(LIBNFCTHELPER_LIBS)
 
-dnl Output the makefile
 AC_OUTPUT(Makefile src/Makefile include/Makefile utils/Makefile include/libnetfilter_cthelper/Makefile libnetfilter_cthelper.pc)
 
Index: libnetfilter_cthelper/src/Makefile.am
===================================================================
--- libnetfilter_cthelper/src/Makefile.am	(revision 6554)
+++ libnetfilter_cthelper/src/Makefile.am	(working copy)
@@ -3,8 +3,8 @@
 LIBVERSION=0:0:0
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/include -I${KERNELDIR}
-AM_CFLAGS=-fPIC -Wall
-LIBS=
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFCTHELPER_LIBS@
 
 lib_LTLIBRARIES = libnetfilter_cthelper.la
 

[-- Attachment #7: libnetfilter_log.patch --]
[-- Type: text/x-diff, Size: 1421 bytes --]

Index: libnetfilter_log/configure.in
===================================================================
--- libnetfilter_log/configure.in	(revision 6554)
+++ libnetfilter_log/configure.in	(working copy)
@@ -18,9 +18,17 @@
 *) AC_MSG_ERROR([Linux only, dude!]);;
 esac
 
-AC_CHECK_LIB(nfnetlink, nfnl_subsys_open, AC_MSG_RESULT(found), AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed]))
-AC_CHECK_HEADER([libnfnetlink/linux_nfnetlink.h], [AC_MSG_RESULT([found])], [AC_MSG_ERROR([libnfnetlink 0.0.16 or later needed])])
+dnl Dependencies
+LIBNFNETLINK_REQUIRED=0.0.16
+ 
+PKG_CHECK_MODULES(LIBNFNETLINK, libnfnetlink >= $LIBNFNETLINK_REQUIRED,,
+	AC_MSG_ERROR(Cannot find libnfnetlink >= $LIBNFNETLINK_REQUIRED))
 
+CFLAGS="$CFLAGS $LIBNFNETLINK_CFLAGS"
+LIBNFLOG_LIBS="$LIBNFNETLINK_LIBS"
+ 
+AC_SUBST(LIBNFLOG_LIBS)
+
 dnl Output the makefile
 AC_OUTPUT(Makefile src/Makefile include/Makefile include/libnetfilter_log/Makefile utils/Makefile libnetfilter_log.pc)
 
Index: libnetfilter_log/src/Makefile.am
===================================================================
--- libnetfilter_log/src/Makefile.am	(revision 6554)
+++ libnetfilter_log/src/Makefile.am	(working copy)
@@ -3,8 +3,8 @@
 LIBVERSION=2:0:1
 
 INCLUDES = $(all_includes) -I$(top_srcdir)/include
-AM_CFLAGS=-fPIC -Wall
-LIBS=
+AM_CFLAGS = -fPIC -Wall
+LIBS = @LIBNFLOG_LIBS@
 
 lib_LTLIBRARIES = libnetfilter_log.la libnetfilter_log_libipulog.la
 

             reply	other threads:[~2006-03-19 22:24 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-19 22:24 KOVACS Krisztian [this message]
2006-03-21  1:50 ` [RFC][PATCH] use of pkg-config in libnetfilter_*, conntrack, and ulogd2 Pablo Neira Ayuso
2006-07-18 13:29   ` KOVACS Krisztian
2006-07-20 16:38     ` Patrick McHardy

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=200603192324.50444@krak \
    --to=hidden@sch.bme.hu \
    --cc=laforge@netfilter.org \
    --cc=netfilter-devel@lists.netfilter.org \
    --cc=pablo@eurodev.net \
    /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 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.