> On (05/07/12 00:47), Magnus Fromreide wrote: >> On Sun, 2012-05-06 at 23:42 +0300, Sergey Senozhatsky wrote: >> > On (05/06/12 22:25), Magnus Fromreide wrote: >> > > On Sun, 2012-05-06 at 21:24 +0300, Sergey Senozhatsky wrote: >> > > > Fix libnl-3 detection and rework libnl configure check. >> > > > >> > > > Patch replaces AC_CHECK_LIB with AC_SEARCH_LIBS, as proposed at >> the end of AC_CHECK_LIB docs: >> > > > >> > > > > AC_CHECK_LIB requires some care in usage, and should be avoided >> in some common cases. Many standard functions >> > > > > like gethostbyname appear in the standard C library on some >> hosts, and in special libraries like nsl on other >> > > > > hosts. On some hosts the special libraries contain variant >> implementations that you may not want to use. >> > > > > These days it is normally better to use >> AC_SEARCH_LIBS([gethostbyname], [nsl]) instead of >> AC_CHECK_LIB([nsl], [gethostbyname]). >> > > >> > > On Debian the wide character version of ncurses is named ncursesw so >> if >> > > I use the scripts out of the box the screen looks ugly (M-xM-y). >> > > >> > > Would it be possible to stop assuming that the lib is named >> libncurses? >> > > >> > > /MF >> > > >> > >> > AC_SEARCH_LIBS (function, search-libs, [action-if-found], >> [action-if-not-found], [other-libraries]) >> > >> > Search for a library defining function if it's not already >> available. This equates to calling >> > âAC_LINK_IFELSE([AC_LANG_CALL([], [function])])â first with no >> libraries, then for each library >> > listed in search-libs.Prepend -llibrary to LIBS for the first >> library found to contain function, >> > and run action-if-found. If the function is not found, run >> action-if-not-found. >> > >> > >> > We can try out AC_SEARCH_LIBS(function, [ncursesw ncurses], ...), so >> ncursesw will be the first one to >> > check in a list of possible LIBs. >> > >> > Could you please try the following patch? >> >> With the patch csstoh is linked with -lncursesw. That is a god sign. >> >> The main program fails to build. >> > > That's weird. What version of libnl you are using? > Could you please provide Makefile and config.h files? > > -ss So i just got the patch applied clean, and I see the same thing. Looks like HAVE_LIBNL20 is getting set to 1, even if you have ver < 2. I have a spotty internet connection, so my work is going slow. Must be something simple in the configure.ac for libnl checking. -C
> > >> gcc -DHAVE_CONFIG_H -I. -I.. -D_FORTIFY_SOURCE=2 -g -O2 -MT >> tuning/powertop-iw.o -MD -MP -MF tuning/.deps/powertop-iw.Tpo -c -o >> tuning/powertop-iw.o `test -f 'tuning/iw.c' || echo './'`tuning/iw.c >> tuning/iw.c: In function ânl80211_initâ: >> tuning/iw.c:82:17: warning: assignment makes pointer from integer >> without a cast [enabled by default] >> tuning/iw.c:88:2: warning: passing argument 1 of âgenl_connectâ from >> incompatible pointer type [enabled by default] >> /usr/include/netlink/genl/genl.h:23:13: note: expected âstruct >> nl_handle *â but argument is of type âstruct nl_sock *â >> tuning/iw.c:94:2: warning: passing argument 1 of >> âgenl_ctrl_alloc_cacheâ from incompatible pointer type [enabled by >> default] >> /usr/include/netlink/genl/ctrl.h:25:26: note: expected âstruct >> nl_handle *â but argument is of type âstruct nl_sock *â >> tuning/iw.c:94:2: error: too many arguments to function >> âgenl_ctrl_alloc_cacheâ >> /usr/include/netlink/genl/ctrl.h:25:26: note: declared here >> tuning/iw.c: In function â__handle_cmdâ: >> tuning/iw.c:242:2: warning: passing argument 1 of >> ânl_send_auto_completeâ from incompatible pointer type [enabled by >> default] >> /usr/include/netlink/netlink.h:48:14: note: expected âstruct nl_handle >> *â but argument is of type âstruct nl_sock *â >> tuning/iw.c:253:3: warning: passing argument 1 of ânl_recvmsgsâ from >> incompatible pointer type [enabled by default] >> /usr/include/netlink/netlink.h:58:14: note: expected âstruct nl_handle >> *â but argument is of type âstruct nl_sock *â >> make[3]: *** [tuning/powertop-iw.o] Error 1 >> >> /MF >> >> > >> > --- >> > >> > configure.ac | 36 +++++++++++++++++------------------- >> > 1 file changed, 17 insertions(+), 19 deletions(-) >> > >> > diff --git a/configure.ac b/configure.ac >> > index 753a374..462e494 100644 >> > --- a/configure.ac >> > +++ b/configure.ac >> > @@ -16,6 +16,7 @@ AC_SUBST(GETTEXT_PACKAGE) >> > AM_GNU_GETTEXT([external]) >> > AM_GNU_GETTEXT_VERSION([0.18]) >> > >> > +AM_PROG_AR >> > # Checks for programs. >> > AC_PROG_CPP >> > AC_PROG_CXX >> > @@ -46,33 +47,30 @@ AC_FUNC_REALLOC >> > AC_FUNC_STRTOD >> > AC_CHECK_FUNCS([fdatasync getpagesize gettimeofday memmove memset >> mkdir munmap pow realpath regcomp select setlocale socket sqrt >> strcasecmp strchr strdup strerror strncasecmp strstr strtoul >> strtoull]) >> > >> > -PKG_CHECK_MODULES([NCURSES], [ncurses],[],[ >> > - AC_CHECK_LIB([ncurses], [main],[AC_SUBST(NCURSES_LIBS, "-lncurses"," >> ")],AC_MSG_ERROR([ncurses is required but was not found])) >> > -]) >> > +AC_SEARCH_LIBS([delwin], [ncursesw ncurses], [], >> AC_MSG_ERROR([ncurses is required but was not found]), []) >> > + >> > PKG_CHECK_MODULES([PCIUTILS], [libpci],[],[ >> > - AC_CHECK_LIB([libpci], [main],[AC_SUBST(PCIUTILS_LIBS, "-lpci"," >> ")],AC_MSG_ERROR([libpci is required but was not found])) >> > + AC_SEARCH_LIBS([pci_get_dev], [pci], [], AC_MSG_ERROR([libpci is >> required but was not found]), []) >> > ]) >> > PKG_CHECK_MODULES([LIBZ], [zlib],[],[ >> > - AC_CHECK_LIB([zlib], [main],[AC_SUBST(LIBZ_LIBS, "-lz"," >> ")],AC_MSG_ERROR([zlib is required but was not found])) >> > + AC_SEARCH_LIBS([deflate], [z], [], AC_MSG_ERROR([zlib is required >> but was not found]), []) >> > ]) >> > >> > -has_libnl=no >> > -PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl=yes],[ >> > - AC_CHECK_LIB([libnl], [main],[has_libnl=yes AC_SUBST(LIBNL_LIBS, >> "-lnl","Update LIBNL_LIBS based on AC_CHECK_LIB")],[ >> > - PKG_CHECK_MODULES([LIBNL], [libnl-2.0 libnl-3.0 libnl-genl-3.0], >> [has_libnl=yes AC_DEFINE([HAVE_LIBNL20],[1],[Define if you have >> libnl-2.0 or higher])],[ >> > - AC_CHECK_LIB([libnl>= 2.0 libnl-genl], >> > [main],[has_libnl=yes >> AC_SUBST(LIBNL_LIBS, "-lnl","Update LIBNL_LIBS based on AC_CHECK_LIB") >> AC_DEFINE([HAVE_LIBNL20],[1],[Define if you have libnl-2.0 or >> higher])],[dummy=no]) >> > - ]) >> > - ]) >> > +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], [], [])]) >> > + ], []) >> > ]) >> > -if (test "${has_libnl}" = "no"); then >> > +if (test "${has_libnl_ver}" = "0"); then >> > AC_MSG_ERROR(libnl is required but not found) >> > fi >> > +if (test "${has_libnl_ver}" > "1"); then >> > + AC_DEFINE([HAVE_LIBNL20],[1],[Define if you have libnl-2.0 or >> higher]) >> > +fi >> > >> > -AC_CHECK_LIB([pthread], [pthread_create],[AC_SUBST(PTHREAD_LIBS, >> "-lpthread"," ")] , AC_MSG_ERROR([libpthread is required but was not >> found])) >> > - >> > -# FIXME: Replace `main' with a function in `-lresolv': >> > -AC_CHECK_LIB([resolv], [main],[AC_SUBST(RESOLV_LIBS, "-lresolv"," >> ")], AC_MSG_ERROR([libresolv is required but was not found])) >> > - >> > - >> > +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]), []) >> > >> > AC_OUTPUT >> > >> > >> >> > _______________________________________________ Power mailing list Power@bughost.org https://bughost.org/mailman/listinfo/power