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
next 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.