On 09/12/2013 11:28, Ander Conselvan de Oliveira wrote:
On 12/08/2013 08:45 PM, Quentin Glidic wrote:
From: Quentin Glidic <sardemff7+...@sardemff7.net>

AC_SEARCH_LIBS is preferred over AC_CHECK_FUNC and AC_CHECK_LIB

Why is it preferred?

I am trusting the Autoconf manual[1] on this one. Basically, the double-check we are doing for dlopen is exactly what AC_SEARCH_LIBS is done for: checking in both a library and in libC.


Signed-off-by: Quentin Glidic <sardemff7+...@sardemff7.net>
---
  configure.ac | 37 +++++++++++++++++++++----------------
  1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/configure.ac b/configure.ac
index 40ae145..c169311 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,9 +41,13 @@ AC_ARG_VAR([WESTON_SHELL_CLIENT],

  PKG_PROG_PKG_CONFIG()

-AC_CHECK_FUNC([dlopen], [],
-              AC_CHECK_LIB([dl], [dlopen], DLOPEN_LIBS="-ldl"))
-AC_SUBST(DLOPEN_LIBS)
+AC_SEARCH_LIBS([dlopen], [dl])
+case "$ac_cv_search_dlopen" in
+    no) AC_MSG_ERROR([dlopen support required for Weston]) ;;
+    "none required") ;;
+    *) DLOPEN_LIBS="$ac_cv_search_dlopen" ;;
+esac
+AC_SUBST([DLOPEN_LIBS])

  AC_CHECK_DECL(SFD_CLOEXEC,[],
            [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile weston")],
@@ -258,13 +262,13 @@ fi
  AM_CONDITIONAL(ENABLE_VAAPI_RECORDER, test "x$have_libva" = xyes)


-AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], have_jpeglib=yes)
-if test x$have_jpeglib = xyes; then
-  JPEG_LIBS="-ljpeg"
-else
-  AC_ERROR([libjpeg not found])
-fi
-AC_SUBST(JPEG_LIBS)
+AC_SEARCH_LIBS([jpeg_CreateDecompress], [jpeg])
+case "$ac_cv_search_pam_open_session" in

Copy & paste error, you got pam_open_session instead of
jpeg_CreateDecompress.

Oops, fixed locally.


+    no) AC_MSG_ERROR([libjpeg required but not found]) ;;
+    "none required") ;;
+    *) JPEG_LIBS="$ac_cv_search_jpeg_CreateDecompress" ;;
+esac
+AC_SUBST([JPEG_LIBS])

Anyway, this seems like a change for the worse IMO.

Following Autotools best practices/manual is *never* worse.


> Now you're typing jpeg_CreateDecompress three times instead of just one.

8 lines for the new version vs 7 lines for the old one…


> Ideally this could be just a one-liner, since this construct has to be
repeated a few times.

It is easy enough to create a macro to do the check. If so, do we want the error message to be accurate (e.g. Weston vs clients vs weston-launch)?


Cheers,
Ander


  PKG_CHECK_MODULES(CAIRO, [cairo])

@@ -334,12 +338,13 @@ AS_IF([test "x$have_systemd_login_209" = "xyes"],
  AC_ARG_ENABLE(weston-launch, [  --enable-weston-launch],,
enable_weston_launch=yes)
  AM_CONDITIONAL(BUILD_WESTON_LAUNCH, test x$enable_weston_launch ==
xyes)
  if test x$enable_weston_launch == xyes; then
-  AC_CHECK_LIB([pam], [pam_open_session], [have_pam=yes], [have_pam=no])
-  if test x$have_pam == xno; then
-    AC_ERROR([weston-launch requires pam])
-  fi
-  PAM_LIBS=-lpam
-  AC_SUBST(PAM_LIBS)
+    AC_SEARCH_LIBS([pam_open_session], [pam])
+    case "$ac_cv_search_pam_open_session" in
+        no) AC_MSG_ERROR([pam support required for weston-launch]) ;;
+        "none required") ;;
+        *) PAM_LIBS="$ac_cv_search_pam_open_session" ;;
+    esac
+    AC_SUBST([PAM_LIBS])
  fi

  if test x$enable_egl = xyes; then



[1] http://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf.html#Libraries

--

Quentin “Sardem FF7” Glidic
_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to