[Powertop] [RFC 2/2] build: use pkg-config for looking for netlink libraries

Vinicius Costa Gomes <vcgomes at gmail.com>
Newsgroups dev.linux.lists.powertop
Message-ID <[email protected]>
Also, adds support for using libnl-3.0.
---

I guess that it looks nicer, but it is more intrusive.

BTW, I wasn't able to test in the case with just libnl-2.0.

 configure.ac    |   29 +++++++++++++++++------------
 src/Makefile.am |    6 +++---
 src/tuning/iw.c |    2 +-
 src/tuning/iw.h |    2 +-
 4 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/configure.ac b/configure.ac
index 2d56684..7b10c65 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,19 +54,24 @@ PKG_CHECK_MODULES([LIBZ], [zlib],[],[
 	AC_SEARCH_LIBS([deflate], [z], [], AC_MSG_ERROR([zlib is required but was not found]), [])
 ])

-has_libnl_ver=0
-PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [
-	AC_SEARCH_LIBS([nl_socket_alloc], [nl], [has_libnl_ver=2], [
-		     PKG_CHECK_MODULES([LIBNL], [libnl-3.0 libnl-genl-3.0], [has_libnl_ver=3],
-				       [AC_SEARCH_LIBS([nl_socket_alloc], [nl-3 nl-genl-3], [has_libnl_ver=3], [], [])])
-	], [])
+PKG_CHECK_MODULES(LIBNL3, libnl-3.0 libnl-genl-3.0, [
+	NETLINK_CFLAGS=${LIBNL3_CFLAGS}
+	NETLINK_LIBS=${LIBNL3_LIBS}
+], [
+	PKG_CHECK_MODULES(LIBNL2, libnl-2.0, [
+		NETLINK_CFLAGS=${LIBNL2_CFLAGS}
+		NETLINK_LIBS=${LIBNL2_LIBS}
+	], [
+		PKG_CHECK_MODULES(LIBNL1, libnl-1, dummy=yes,
+			AC_MSG_ERROR(Netlink library is required))
+		AC_DEFINE(NEED_LIBNL_COMPAT, 1,
+			[Define to 1 if you need libnl-1 compat functions.])
+		NETLINK_CFLAGS=${LIBNL1_CFLAGS}
+		NETLINK_LIBS=${LIBNL1_LIBS}
+	])
 ])
-if (test "$has_libnl_ver" -eq 0); then
-	AC_MSG_ERROR(libnl is required but not found)
-fi
-if (test "$has_libnl_ver" -gt 1); then
-	AC_DEFINE([HAVE_LIBNL20], [1], [Define if you have libnl-2.0 or higher])
-fi
+AC_SUBST(NETLINK_CFLAGS)
+AC_SUBST(NETLINK_LIBS)

 AC_SEARCH_LIBS([pthread_create], [pthread], [], AC_MSG_ERROR([libpthread is required but was not found]), [])
 AC_SEARCH_LIBS([inet_aton], [resolv], [], AC_MSG_ERROR([libresolv is required but was not found]), [])
diff --git a/src/Makefile.am b/src/Makefile.am
index 935bdab..f2adc41 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -34,14 +34,14 @@ powertop_SOURCES = parameters/persistent.cpp parameters/learn.cpp parameters/par
 		measurement/sysfs.cpp measurement/acpi.h measurement/extech.cpp \
 		measurement/power_supply.h measurement/extech.h main.cpp css.h powertop.css

-powertop_CXXFLAGS = -O2 -g -fno-omit-frame-pointer -fstack-protector -Wall -Wshadow -Wformat -I/usr/include/ $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(LIBNL_CFLAGS) $(GLIB2_CFLAGS)
+powertop_CXXFLAGS = -O2 -g -fno-omit-frame-pointer -fstack-protector -Wall -Wshadow -Wformat -I/usr/include/ $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(NETLINK_CFLAGS) $(GLIB2_CFLAGS)


-powertop_CPPFLAGS = -D_FORTIFY_SOURCE=2 $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(LIBNL_CFLAGS) $(GLIB2_CFLAGS) $(LIBZ_CFLAGS)
+powertop_CPPFLAGS = -D_FORTIFY_SOURCE=2 $(NCURSES_CFLAGS) $(PCIUTILS_CFLAGS) $(NETLINK_CFLAGS) $(GLIB2_CFLAGS) $(LIBZ_CFLAGS)

 powertop_LDADD = ../pevent/libparseevent.la

-AM_LDFLAGS = $(LIBS) $(NCURSES_LIBS) $(PCIUTILS_LIBS) $(LIBNL_LIBS) $(LIBZ_LIBS) $(NCURES_LIBS) $(PTHREAD_LIBS)  $(RESOLV_LIBS)
+AM_LDFLAGS = $(LIBS) $(NCURSES_LIBS) $(PCIUTILS_LIBS) $(NETLINK_LIBS) $(LIBZ_LIBS) $(NCURES_LIBS) $(PTHREAD_LIBS)  $(RESOLV_LIBS)

 BUILT_SOURCES = css.h
 CLEANFILES = css.h
diff --git a/src/tuning/iw.c b/src/tuning/iw.c
index aeba3fd..ba40d22 100644
--- a/src/tuning/iw.c
+++ b/src/tuning/iw.c
@@ -50,7 +50,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "iw.h"


-#ifndef HAVE_LIBNL20
+#ifdef NEED_LIBNL_COMPAT
 /* libnl 2.0 compatibility code */

 static inline struct nl_handle *nl_socket_alloc(void)
diff --git a/src/tuning/iw.h b/src/tuning/iw.h
index acf132d..3b82aec 100644
--- a/src/tuning/iw.h
+++ b/src/tuning/iw.h
@@ -46,7 +46,7 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #include "config.h"
 #endif

-#ifndef HAVE_LIBNL20
+#ifdef NEED_LIBNL_COMPAT
 #define nl_sock nl_handle
 #endif

--
1.7.10.2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.