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?

---

 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

Reply via email to