From e64a66e620aad51c1fada6138362c5a186af178a Mon Sep 17 00:00:00 2001 From: Lukas Slebodnik Date: Sat, 31 Aug 2013 12:17:38 +0200 Subject: AUTOTOOLS: Use pkg-config to detect libraries. We used pkg-config only as a fallback if header files was not found, but detection of library failed in case of available header file and linking problem (missing -Ldir). This patch prefers pkg-config. --- src/external/libcares.m4 | 19 +++++++++++++------ src/external/libpcre.m4 | 14 +++++++++++--- src/external/libpopt.m4 | 14 +++++++++++--- src/external/libtalloc.m4 | 15 ++++++++++++--- src/external/libtdb.m4 | 14 +++++++++++--- src/external/libtevent.m4 | 21 ++++++++++++--------- 6 files changed, 70 insertions(+), 27 deletions(-) diff --git a/src/external/libcares.m4 b/src/external/libcares.m4 index 5b8a35875..e2a56f157 100644 --- a/src/external/libcares.m4 +++ b/src/external/libcares.m4 @@ -2,9 +2,17 @@ AC_SUBST(CARES_OBJ) AC_SUBST(CARES_LIBS) AC_SUBST(CARES_CFLAGS) -AC_CHECK_HEADERS(ares.h, - [AC_CHECK_LIB([cares], [ares_init], [ CARES_LIBS="-lcares" ], [AC_MSG_ERROR([No usable c-ares library found])])], - [AC_MSG_ERROR([c-ares header files are not installed])] +PKG_CHECK_MODULES([CARES], [libcares], [found_libcares=yes], [found_libcares=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_libcares" != xyes], + [AC_CHECK_HEADERS([ares.h], + [AC_CHECK_LIB([cares], + [ares_init], + [CARES_LIBS="-L$sss_extra_libdir -lcares"], + [AC_MSG_ERROR([No usable c-ares library found])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([c-ares header files are not installed])])] ) dnl Check if this particular version of c-ares supports the generic ares_free_data function @@ -12,9 +20,8 @@ AC_CHECK_LIB([cares], [ares_free_data], [AC_DEFINE([HAVE_ARES_DATA], 1, [Does c-ares have ares_free_data()?]) ], - [ - ares_data=1 - ] + [ares_data=1], + [$CARES_LIBS] ) AM_CONDITIONAL(BUILD_ARES_DATA, test x$ares_data = x1) diff --git a/src/external/libpcre.m4 b/src/external/libpcre.m4 index 5917c8cfd..8df860904 100644 --- a/src/external/libpcre.m4 +++ b/src/external/libpcre.m4 @@ -3,7 +3,7 @@ AC_SUBST(PCRE_OBJ) AC_SUBST(PCRE_LIBS) AC_SUBST(PCRE_CFLAGS) -PKG_CHECK_MODULES(PCRE, libpcre) +PKG_CHECK_MODULES([PCRE], [libpcre], [found_libpcre=yes], [found_libpcre=no]) PKG_CHECK_EXISTS(libpcre >= 7, [AC_MSG_NOTICE([PCRE version is 7 or higher])], [AC_MSG_NOTICE([PCRE version is below 7]) @@ -11,5 +11,13 @@ PKG_CHECK_EXISTS(libpcre >= 7, 1, [Define if libpcre version is less than 7])]) -AC_CHECK_HEADERS(pcre.h) -AC_CHECK_LIB(pcre, pcre_compile, [ PCRE_LIBS="-lpcre" ], [AC_MSG_ERROR([PCRE is required])]) +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_libpcre" != xyes], + [AC_CHECK_HEADERS([pcre.h], + [AC_CHECK_LIB([pcre], + [pcre_compile], + [PCRE_LIBS="-L$sss_extra_libdir -lpcre"], + [AC_MSG_ERROR([No usable PCRE library found])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([pcre header files are not installed])])] +) diff --git a/src/external/libpopt.m4 b/src/external/libpopt.m4 index e59b2610e..a3681ead6 100644 --- a/src/external/libpopt.m4 +++ b/src/external/libpopt.m4 @@ -3,7 +3,15 @@ AC_SUBST(POPT_OBJ) AC_SUBST(POPT_LIBS) AC_SUBST(POPT_CFLAGS) -AC_CHECK_HEADERS([popt.h], - [AC_CHECK_LIB(popt, poptGetContext, [ POPT_LIBS="-lpopt" ], [AC_MSG_ERROR([POPT must support poptGetContext])])], - [AC_MSG_ERROR([POPT development libraries not installed])] +PKG_CHECK_MODULES([POPT], [popt], [found_popt=yes], [found_popt=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_popt" != xyes], + [AC_CHECK_HEADERS([popt.h], + [AC_CHECK_LIB([popt], + [poptGetContext], + [POPT_LIBS="-L$sss_extra_libdir -lpopt"], + [AC_MSG_ERROR([POPT library must support poptGetContext])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([POPT header files are not installed])])] ) diff --git a/src/external/libtalloc.m4 b/src/external/libtalloc.m4 index a4c5b8a9d..a26cb8853 100644 --- a/src/external/libtalloc.m4 +++ b/src/external/libtalloc.m4 @@ -2,6 +2,15 @@ AC_SUBST(TALLOC_OBJ) AC_SUBST(TALLOC_CFLAGS) AC_SUBST(TALLOC_LIBS) -AC_CHECK_HEADER(talloc.h, - [AC_CHECK_LIB(talloc, talloc_init, [TALLOC_LIBS="-ltalloc"]) ], - [PKG_CHECK_MODULES(TALLOC, talloc)]) +PKG_CHECK_MODULES([TALLOC], [talloc], [found_talloc=yes], [found_talloc=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_talloc" != xyes], + [AC_CHECK_HEADER([talloc.h], + [AC_CHECK_LIB([talloc], + [talloc_init], + [TALLOC_LIBS="-L$sss_extra_libdir -ltalloc"], + [AC_MSG_ERROR([libtalloc missing talloc_init])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([libtalloc header files are not installed])])] +) diff --git a/src/external/libtdb.m4 b/src/external/libtdb.m4 index 196bc5ccb..04ac71d6b 100644 --- a/src/external/libtdb.m4 +++ b/src/external/libtdb.m4 @@ -2,7 +2,15 @@ AC_SUBST(TDB_OBJ) AC_SUBST(TDB_CFLAGS) AC_SUBST(TDB_LIBS) -AC_CHECK_HEADERS([tdb.h], - [AC_CHECK_LIB(tdb, tdb_repack, [TDB_LIBS="-ltdb"], [AC_MSG_ERROR([TDB must support tdb_repack])]) ], - [PKG_CHECK_MODULES(TDB, tdb >= 1.1.3)] +PKG_CHECK_MODULES([TDB], [tdb >= 1.1.3], [found_tdb=yes], [found_tdb=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_tdb" != xyes], + [AC_CHECK_HEADERS([tdb.h], + [AC_CHECK_LIB([tdb], + [tdb_repack], + [TDB_LIBS="-L$sss_extra_libdir -ltdb"], + [AC_MSG_ERROR([library TDB must support tdb_repack])], + [-L$sss_extra_libdir])], + [AC_MSG_ERROR([tdb header files are not installed])])] ) diff --git a/src/external/libtevent.m4 b/src/external/libtevent.m4 index f19f27bf2..d40b9d423 100644 --- a/src/external/libtevent.m4 +++ b/src/external/libtevent.m4 @@ -2,12 +2,15 @@ AC_SUBST(TEVENT_OBJ) AC_SUBST(TEVENT_CFLAGS) AC_SUBST(TEVENT_LIBS) -AC_CHECK_HEADER(tevent.h, - [AC_CHECK_LIB( - tevent, - tevent_context_init, - [TEVENT_LIBS="-ltevent -ltalloc"], - [AC_MSG_ERROR([libtevent missing tevent_context_init])], - [-ltalloc]) ], - [PKG_CHECK_MODULES(TEVENT, tevent)], - ) +PKG_CHECK_MODULES([TEVENT], [tevent], [found_tevent=yes], [found_tevent=no]) + +SSS_AC_EXPAND_LIB_DIR() +AS_IF([test x"$found_tevent" != xyes], + [AC_CHECK_HEADER([tevent.h], + [AC_CHECK_LIB([tevent], + [tevent_context_init], + [TEVENT_LIBS="-L$sss_extra_libdir -ltevent -ltalloc"], + [AC_MSG_ERROR([libtevent missing tevent_context_init])], + [-L$sss_extra_libdir -ltalloc])], + [AC_MSG_ERROR([tevent header files are not installed])])] +) -- cgit