configure: rework libnl detection and fix libnl-2 case (v2)
Sergey Senozhatsky
PATCH 1/1 configure: rework libnl detection and fix libnl-2 case (v2)
Rework libnl detection.
PKG_CHECK_MODULES macro appends FOO_CFLAGS and FOO_LIBS flags
Example:LIBNL_CFLAGS = -I/usr/include/libnl3LIBNL_LIBS = -lnl-genl-3 -lnl-3
while AC_SEARCH_LIBS only prepends -llibrary to LIBS, so AC_SEARCH_LIBS is not helpful.
Use pkg-config PC file names to search for minimum package versions:
libnl 3.+ -- libnl-3.0.pc
libnl 2.+ -- libnl-2.0.pc
libnl 1.+ -- libnl-1.0.pc
Patch also changes $has_libnl_ver == 0 error message and suppresses failed PKG_CHECK_MODULES output.
Austin pointed out that libnl-2.0 provide only libnl-2.0.pc pkg-config file, while libnl-3 has at least 5 of them (for every `so'). This is why we check libnl-3.0.pc and libnl-genl-3.0.pc in libnl-3 case.
Many thanks to Austin Zhang for help.
v2: Namhyung Kim reported that libnl-1.0.pc on Ubuntu is named libnl-1.pc.
Reported-and-tested-by: Austin Zhang <zhang.austin(a)gmail.com>
Tested-by: Namhyung Kim <namhyung(a)gmail.com>
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>
---
configure.ac | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
configure.ac +7 -8
@@ -54,15 +54,14 @@ PKG_CHECK_MODULES([PCIUTILS], [libpci],[has_libpci=1],[ has_libnl_ver=0 -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], [ - AC_SEARCH_LIBS([nl_socket_alloc], [nl], [ - has_libnl_ver=2], [ - PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [])])])]) +# libnl-2 provides only libnl-2.0.pc file, so we check for separate libnl-genl-3.0.pc +# pkg-config file just for libnl-3.0 case. +# +PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0], [has_libnl_ver=3], [ + PKG_CHECK_MODULES([LIBNL], [libnl-2.0 >= 2.0], [has_libnl_ver=2], [ + PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [has_libnl_ver=0])])]) if (test "$has_libnl_ver" -eq 0); then - AC_MSG_ERROR(libnl is required but not found) + AC_MSG_ERROR(libnl and libnl-genl are required but were 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])
Chris Ferron
Quoted 64 lines · Sergey Senozhatsky
Rework libnl detection.
PKG_CHECK_MODULESmacro appendsFOO_CFLAGSandFOO_LIBSflagsExample:
LIBNL_CFLAGS= -I/usr/include/libnl3LIBNL_LIBS= -lnl-genl-3 -lnl-3while
AC_SEARCH_LIBSonly prepends -llibrary to LIBS, soAC_SEARCH_LIBSis not helpful.Use pkg-config PC file names to search for minimum package versions:
libnl 3.+ -- libnl-3.0.pc
libnl 2.+ -- libnl-2.0.pc
libnl 1.+ -- libnl-1.0.pcPatch also changes $has_libnl_ver == 0 error message and suppresses failed
PKG_CHECK_MODULESoutput.Austin pointed out that libnl-2.0 provide only libnl-2.0.pc pkg-config file, while libnl-3 has at least 5 of them (for every `so'). This is why we check libnl-3.0.pc and libnl-genl-3.0.pc in libnl-3 case.
Many thanks to Austin Zhang for help.
v2: Namhyung Kim reported that libnl-1.0.pc on Ubuntu is named libnl-1.pc.Reported-and-tested-by: Austin Zhang <zhang.austin(a)gmail.com>
Tested-by: Namhyung Kim <namhyung(a)gmail.com>
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky(a)gmail.com>---
configure.ac | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)Sergey Senozhatsky
configure.ac +7
-8@@ -54,15 +54,14 @@ PKG_CHECK_MODULES([PCIUTILS], [libpci],[has_libpci=1],[ has_libnl_ver=0 -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], [ - AC_SEARCH_LIBS([nl_socket_alloc], [nl], [ - has_libnl_ver=2], [ - PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [])])])]) +# libnl-2 provides only libnl-2.0.pc file, so we check for separate libnl-genl-3.0.pc +# pkg-config file just for libnl-3.0 case. +# +PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0], [has_libnl_ver=3], [ + PKG_CHECK_MODULES([LIBNL], [libnl-2.0 >= 2.0], [has_libnl_ver=2], [ + PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [has_libnl_ver=0])])]) if (test "$has_libnl_ver" -eq 0); then - AC_MSG_ERROR(libnl is required but not found) + AC_MSG_ERROR(libnl and libnl-genl are required but were 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])
Quoted 4 lines
_______________________________________________
PowerTop mailing list
PowerTop(a)lists.01.org
https://lists.01.org/mailman/listinfo/powertop
this patch has been merged as it is signed off by Sergey Thanks,
Chris