summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am8
-rw-r--r--configure.in89
-rw-r--r--doc/core.txt23
-rw-r--r--include/netlink/version.h.in4
-rw-r--r--lib/Makefile.am31
-rw-r--r--libnl-3.0.pc.in (renamed from libnl-3.pc.in)2
-rw-r--r--libnl-genl-3.0.pc.in (renamed from libnl-genl-3.pc.in)4
-rw-r--r--libnl-nf-3.0.pc.in (renamed from libnl-nf-3.pc.in)4
-rw-r--r--libnl-route-3.0.pc.in (renamed from libnl-route-3.pc.in)4
-rw-r--r--src/lib/Makefile.am17
10 files changed, 131 insertions, 55 deletions
diff --git a/Makefile.am b/Makefile.am
index 6706e4b..a936c49 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,10 +10,10 @@ endif
SUBDIRS = include lib doc man python $(OPT_DIRS)
-pkgconfig_DATA = libnl-3.pc \
- libnl-route-3.pc \
- libnl-genl-3.pc \
- libnl-nf-3.pc
+pkgconfig_DATA = libnl-3.0.pc \
+ libnl-route-3.0.pc \
+ libnl-genl-3.0.pc \
+ libnl-nf-3.0.pc
pkgsysconfdir = ${sysconfdir}/libnl
pkgsysconf_DATA = etc/pktloc etc/classid
diff --git a/configure.in b/configure.in
index 2ee35c3..b1b4f11 100644
--- a/configure.in
+++ b/configure.in
@@ -9,16 +9,43 @@
# Copyright (c) 2003-2011 Thomas Graf <tgraf@suug.ch>
#
-AC_INIT(libnl, 3.2, tgraf@suug.ch)
+
+# copied from glib
+m4_define([libnl_major_version], [3])
+m4_define([libnl_minor_version], [2])
+m4_define([libnl_micro_version], [0]) # bump for every release unless minor was bumped
+m4_define([libnl_lt_revision], [0]) # bump or reset to 0 if interfaces were added
+m4_define([libnl_lt_age], [0]) # bump whenever a release is backwards compatible
+ # bump with +100 if a minor release is compatible
+ # reset to 0 if interfaces were removed
+
+m4_define([libnl_version],
+ [libnl_major_version.libnl_minor_version.libnl_micro_version])
+
+m4_define([libnl_lt_current],
+ [m4_eval(100 * libnl_minor_version + libnl_micro_version - libnl_lt_revision)])
+
+AC_INIT(libnl, [libnl_version], [http://www.infradead.org/~tgr/libnl/])
AC_CONFIG_HEADERS([lib/defs.h])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([-Wall foreign subdir-objects])
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)], [])
-MAJ_VERSION=3
-AC_SUBST([MAJ_VERSION])
-MIN_VERSION=2
-AC_SUBST([MIN_VERSION])
+MAJ_VERSION=libnl_major_version
+AC_SUBST(MAJ_VERSION)
+MIN_VERSION=libnl_minor_version
+AC_SUBST(MIN_VERSION)
+MIC_VERSION=libnl_micro_version
+AC_SUBST(MIC_VERSION)
+LIBNL_VERSION=libnl_version
+AC_SUBST(LIBNL_VERSION)
+
+LT_CURRENT=libnl_lt_current
+AC_SUBST(LT_CURRENT)
+LT_REVISION=libnl_lt_revision
+AC_SUBST(LT_REVISION)
+LT_AGE=libnl_lt_age
+AC_SUBST(LT_AGE)
AC_PROG_CC
AM_PROG_CC_C_O
@@ -43,25 +70,39 @@ AM_CONDITIONAL([ENABLE_CLI], [test "$enable_cli" = "yes"])
AC_CHECK_LIB([m], [pow], [], AC_MSG_ERROR([libm is required]))
AC_CHECK_LIB([pthread], [pthread_mutex_lock], [], AC_MSG_ERROR([libpthread is required]))
-AC_CONFIG_FILES([Makefile doc/Doxyfile doc/Makefile lib/Makefile
- include/Makefile src/Makefile src/lib/Makefile man/Makefile
- libnl-3.pc libnl-route-3.pc libnl-genl-3.pc libnl-nf-3.pc
- python/Makefile python/setup.py python/netlink/Makefile
- python/netlink/route/Makefile
- include/netlink/version.h])
+AC_CONFIG_FILES([
+Makefile
+libnl-3.0.pc
+libnl-route-3.0.pc
+libnl-genl-3.0.pc
+libnl-nf-3.0.pc
+doc/Doxyfile
+doc/Makefile
+lib/Makefile
+include/Makefile
+src/Makefile
+src/lib/Makefile
+man/Makefile
+python/Makefile
+python/setup.py
+python/netlink/Makefile
+python/netlink/route/Makefile
+include/netlink/version.h
+])
+
AC_OUTPUT
-echo -------------------------------------------------------------------------------
-echo NOTE
-echo
-echo Headers will be installed in ${includedir}/libnl${MAJ_VERSION} starting with
-echo version 3.2. If you are using pkg-config things should continue to work as
-echo expected, otherwise you will have to extend the CLFAGS of your project with
-echo
-echo -I${includedir}/libnl${MAJ_VERSION}
-echo
-echo Also, pkg-config files for sub libraries have been added, so you can
-echo verify their presence
-echo
-echo -------------------------------------------------------------------------------
+echo "-------------------------------------------------------------------------------"
+echo " NOTE"
+echo ""
+echo " Headers will be installed in ${includedir}/libnl${MAJ_VERSION} starting with"
+echo " version 3.2. If you are using pkg-config things should continue to work as"
+echo " expected, otherwise you will have to extend the CLFAGS of your project with"
+echo ""
+echo " -I${includedir}/libnl${MAJ_VERSION}"
+echo ""
+echo " Also, pkg-config files for sub libraries have been added, so you can"
+echo " verify their presence"
+echo ""
+echo "-------------------------------------------------------------------------------"
diff --git a/doc/core.txt b/doc/core.txt
index 796e9fc..c10cbc0 100644
--- a/doc/core.txt
+++ b/doc/core.txt
@@ -7,7 +7,7 @@
Netlink Library (libnl)
=======================
Thomas Graf <tgraf@suug.ch>
-3.1, Aug 11 2011:
+3.2, Sep 13 2011:
:numbered:
== Introduction
@@ -59,6 +59,25 @@ The low level APIs are described in:
=== Linking to this Library
+.Checking the presence using autoconf
+
+Projects using autoconf may use +PKG_CHECK_MODULES()+ to check if
+a specific version of libnl is available on the system. The example
+below also shows how to retrieve the +CFLAGS+ and linking dependencies
+required to link against the library.
+
+[source]
+----
+PKG_CHECK_MODULES(LIBNL3, libnl-3.0 >= 3.1, [have_libnl3=yes], [have_libnl3=no])
+if (test "${have_libnl3}" = "yes"); then
+ CFLAGS += "$LIBNL3_CFLAGS"
+ LIBS += "$LIBNL3_LIBS"
+fi
+----
+
+NOTE: The pkgconfig file is named +libnl-3.0.pc+ for historic reasons, it also
+ covers library versions >= 3.1.
+
.Main Header
The main header is `<netlink/netlink.h>`. Additional headers need to
@@ -77,7 +96,7 @@ makes use of.
.Linking to libnl
-----
-$ gcc myprogram.c -o myprogram -lnl
+$ gcc myprogram.c -o myprogram $(pkgconfig --cflags --libs libnl-3.0)
-----
=== Debugging
diff --git a/include/netlink/version.h.in b/include/netlink/version.h.in
index 9deb365..4d32dad 100644
--- a/include/netlink/version.h.in
+++ b/include/netlink/version.h.in
@@ -20,4 +20,8 @@
#define LIBNL_VER(maj,min) ((maj) << 8 | (min))
#define LIBNL_VER_NUM LIBNL_VER(LIBNL_VER_MAJ, LIBNL_VER_MIN)
+#define LIBNL_CURRENT @LT_CURRENT@
+#define LIBNL_REVISION @LT_REVISION@
+#define LIBNL_AGE @LT_AGE@
+
#endif
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 90c98e9..da2dbf6 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,21 +1,30 @@
# -*- Makefile -*-
-AM_CPPFLAGS = -Wall -I${top_srcdir}/include -I${top_builddir}/include -I${builddir}/route -I${builddir}/route/cls -D_GNU_SOURCE -DSYSCONFDIR=\"$(sysconfdir)/libnl\"
-AM_LDFLAGS = -version-info @MAJ_VERSION@:@MIN_VERSION@:0
+AM_CPPFLAGS = \
+ -Wall \
+ -I${top_srcdir}/include \
+ -I${top_builddir}/include \
+ -I${builddir}/route \
+ -I${builddir}/route/cls \
+ -D_GNU_SOURCE \
+ -DSYSCONFDIR=\"$(sysconfdir)/libnl\"
+
+AM_LDFLAGS = \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
lib_LTLIBRARIES = \
- libnl.la libnl-genl.la libnl-route.la libnl-nf.la
+ libnl-3.la libnl-genl-3.la libnl-route-3.la libnl-nf-3.la
-libnl_la_SOURCES = \
+libnl_3_la_SOURCES = \
addr.c attr.c cache.c cache_mngr.c cache_mngt.c data.c \
error.c handlers.c msg.c nl.c object.c socket.c utils.c
-libnl_genl_la_LIBADD = libnl.la
-libnl_genl_la_SOURCES = \
+libnl_genl_3_la_LIBADD = libnl-3.la
+libnl_genl_3_la_SOURCES = \
genl/ctrl.c genl/family.c genl/genl.c genl/mngt.c
-libnl_nf_la_LIBADD = libnl-route.la
-libnl_nf_la_SOURCES = \
+libnl_nf_3_la_LIBADD = libnl-route-3.la
+libnl_nf_3_la_SOURCES = \
netfilter/ct.c netfilter/ct_obj.c netfilter/log.c \
netfilter/log_msg.c netfilter/log_msg_obj.c netfilter/log_obj.c \
netfilter/netfilter.c netfilter/nfnl.c netfilter/queue.c \
@@ -41,8 +50,8 @@ route/cls/ematch_grammar.c: route/cls/ematch_grammar.l
route/cls/ematch_syntax.c: route/cls/ematch_syntax.y
$(AM_V_GEN) $(YACC) -d $(YFLAGS) -o $@ $^
-libnl_route_la_LIBADD = libnl.la
-libnl_route_la_SOURCES = \
+libnl_route_3_la_LIBADD = libnl-3.la
+libnl_route_3_la_SOURCES = \
route/addr.c route/class.c route/cls.c route/link.c \
route/neigh.c route/neightbl.c route/nexthop.c route/qdisc.c \
route/route.c route/route_obj.c route/route_utils.c route/rtnl.c \
@@ -69,7 +78,7 @@ libnl_route_la_SOURCES = \
\
route/pktloc.c
-nodist_libnl_route_la_SOURCES = \
+nodist_libnl_route_3_la_SOURCES = \
route/pktloc_syntax.c route/pktloc_syntax.h \
route/pktloc_grammar.c route/pktloc_grammar.h \
route/cls/ematch_syntax.c route/cls/ematch_syntax.h \
diff --git a/libnl-3.pc.in b/libnl-3.0.pc.in
index 05a06fc..b87e3dc 100644
--- a/libnl-3.pc.in
+++ b/libnl-3.0.pc.in
@@ -6,5 +6,5 @@ includedir=@includedir@
Name: libnl
Description: Convenience library for netlink sockets
Version: @PACKAGE_VERSION@
-Libs: -L${libdir} -lnl
+Libs: -L${libdir} -lnl-@MAJ_VERSION@
Cflags: -I${includedir}/libnl@MAJ_VERSION@
diff --git a/libnl-genl-3.pc.in b/libnl-genl-3.0.pc.in
index e9cbe62..d6b69b8 100644
--- a/libnl-genl-3.pc.in
+++ b/libnl-genl-3.0.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libnl-genl
Description: Generic Netlink Library
Version: @PACKAGE_VERSION@
-Requires: libnl-3
-Libs: -L${libdir} -lnl-genl
+Requires: libnl-3.0
+Libs: -L${libdir} -lnl-genl-@MAJ_VERSION@
Cflags: -I${includedir}/libnl@MAJ_VERSION@
diff --git a/libnl-nf-3.pc.in b/libnl-nf-3.0.pc.in
index b45eb51..d82e1a6 100644
--- a/libnl-nf-3.pc.in
+++ b/libnl-nf-3.0.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libnl-nf
Description: Netfilter Netlink Library
Version: @PACKAGE_VERSION@
-Requires: libnl-3
-Libs: -L${libdir} -lnl-nf
+Requires: libnl-route-3.0
+Libs: -L${libdir} -lnl-nf-@MAJ_VERSION@
Cflags: -I${includedir}/libnl@MAJ_VERSION@
diff --git a/libnl-route-3.pc.in b/libnl-route-3.0.pc.in
index 4988616..372a4f4 100644
--- a/libnl-route-3.pc.in
+++ b/libnl-route-3.0.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libnl-route
Description: Netlink Routing Family Library
Version: @PACKAGE_VERSION@
-Requires: libnl-3
-Libs: -L${libdir} -lnl-route
+Requires: libnl-3.0
+Libs: -L${libdir} -lnl-route-@MAJ_VERSION@
Cflags: -I${includedir}/libnl@MAJ_VERSION@
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 3236dbe..a88163a 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -1,7 +1,10 @@
# -*- Makefile -*-
AM_CPPFLAGS = -Wall -I${top_srcdir}/include -I${top_builddir}/include -D_GNU_SOURCE -DPKGLIBDIR=\"$(pkglibdir)\" -DSYSCONFDIR=\"$(sysconfdir)\" -rdynamic
-AM_LDFLAGS = -L${top_builddir}/lib -ldl -version-info 3:0:0
+AM_LDFLAGS = \
+ -L${top_builddir}/lib \
+ -ldl \
+ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
#nobase_pkglib_LTLIBRARIES = cls/basic.la cls/ematch/cmp.la
#cls_basic_la_LDFLAGS = -module -version-info 2:0:0
@@ -26,14 +29,14 @@ AM_LDFLAGS = -L${top_builddir}/lib -ldl -version-info 3:0:0
# cls/pktloc_syntax.c cls/pktloc_syntax.h
lib_LTLIBRARIES = \
- libnl-cli.la
+ libnl-cli-3.la
-libnl_cli_la_LIBADD = ${top_builddir}/lib/libnl.la \
- ${top_builddir}/lib/libnl-route.la \
- ${top_builddir}/lib/libnl-nf.la \
- ${top_builddir}/lib/libnl-genl.la
+libnl_cli_3_la_LIBADD = ${top_builddir}/lib/libnl-3.la \
+ ${top_builddir}/lib/libnl-route-3.la \
+ ${top_builddir}/lib/libnl-nf-3.la \
+ ${top_builddir}/lib/libnl-genl-3.la
-libnl_cli_la_SOURCES = \
+libnl_cli_3_la_SOURCES = \
utils.c addr.c ct.c link.c neigh.c rule.c route.c \
tc.c qdisc.c class.c cls.c
# cls/ematch_syntax.c cls/ematch_grammar.c cls/ematch.c