From 9992bdcbe6b4071c7d04059955171dec183cacfe Mon Sep 17 00:00:00 2001 From: Quentin Glidic Date: Sat, 23 Apr 2016 12:02:58 +0200 Subject: [PATCH] build: Add (and use) an AC_SEARCH_LIBS wrapper AC_SEARCH_LIBS is the recommended macro for these checks, unfortunately, we use AC_CHECK_LIB instead, and even AC_CHECK_FUNC, when only one AC_SEARCH_LIBS would be enough. This wrapper macro is used much like PKG_CHECK_MODULES, as it defines (and AC_SUBST) the PREFIX_LIBS variable itself. It also avoids adding unnecessary stuff to LIBS. Signed-off-by: Quentin Glidic Tested-by: Gustavo Zacarias Reviewed-by: Pekka Paalanen --- configure.ac | 18 +++++------------- m4/weston.m4 | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 13 deletions(-) create mode 100644 m4/weston.m4 diff --git a/configure.ac b/configure.ac index 670200cf..41996168 100644 --- a/configure.ac +++ b/configure.ac @@ -42,14 +42,10 @@ 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) +WESTON_SEARCH_LIBS([DLOPEN], [dl], [dlopen]) # In old glibc versions (< 2.17) clock_gettime() is in librt -AC_SEARCH_LIBS([clock_gettime], [rt], - [CLOCK_GETTIME_LIBS="-lrt"]) -AC_SUBST([CLOCK_GETTIME_LIBS]) +WESTON_SEARCH_LIBS([CLOCK_GETTIME], [rt], [clock_gettime]) AC_CHECK_DECL(SFD_CLOEXEC,[], [AC_MSG_ERROR("SFD_CLOEXEC is needed to compile weston")], @@ -303,12 +299,10 @@ AC_ARG_WITH([jpeg], AS_HELP_STRING([--without-jpeg], [Use jpeglib for JPEG decoding support [default=auto]])) AS_IF([test "x$with_jpeg" != "xno"], - [AC_CHECK_LIB([jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])], + [WESTON_SEARCH_LIBS([JPEG], [jpeg], [jpeg_CreateDecompress], [have_jpeglib=yes], [have_jpeglib=no])], [have_jpeglib=no]) AS_IF([test "x$have_jpeglib" = "xyes"], - [JPEG_LIBS="-ljpeg" - AC_SUBST([JPEG_LIBS]) - AC_DEFINE([HAVE_JPEG], [1], [Have jpeglib])], + [AC_DEFINE([HAVE_JPEG], [1], [Have jpeglib])], [AS_IF([test "x$with_jpeg" = "xyes"], [AC_MSG_ERROR([JPEG support explicitly requested, but jpeglib couldn't be found])])]) @@ -418,12 +412,10 @@ AS_IF([test "x$enable_resize_optimization" = "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]) + WESTON_SEARCH_LIBS([PAM], [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) fi AM_CONDITIONAL(HAVE_PANGO, test "x$have_pango" = "xyes") diff --git a/m4/weston.m4 b/m4/weston.m4 new file mode 100644 index 00000000..636f9fb0 --- /dev/null +++ b/m4/weston.m4 @@ -0,0 +1,37 @@ +dnl +dnl Copyright © 2016 Quentin “Sardem FF7” Glidic +dnl +dnl Permission is hereby granted, free of charge, to any person obtaining a +dnl copy of this software and associated documentation files (the "Software"), +dnl to deal in the Software without restriction, including without limitation +dnl the rights to use, copy, modify, merge, publish, distribute, sublicense, +dnl and/or sell copies of the Software, and to permit persons to whom the +dnl Software is furnished to do so, subject to the following conditions: +dnl +dnl The above copyright notice and this permission notice (including the next +dnl paragraph) shall be included in all copies or substantial portions of the +dnl Software. +dnl +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +dnl IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +dnl FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +dnl THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +dnl LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +dnl FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +dnl DEALINGS IN THE SOFTWARE. +dnl + +dnl WESTON_SEARCH_LIBS(PREFIX, search-libs, function, [action-if-found], [action-if-not-found], [other-libraries]) +dnl WESTON_SEARCH_LIBS is a wrapper around AC_SEARCH_LIBS with a little difference: +dnl action-if-found is called even if no library is required +AC_DEFUN([WESTON_SEARCH_LIBS], [ + weston_save_LIBS=${LIBS} + AC_SEARCH_LIBS([$3], [$2], [$4], [$5], [$6]) + AS_CASE([${ac_cv_search_][$3][}], + ['none required'], [$4], + [no], [], + [$1][_LIBS=${ac_cv_search_][$3][}] + ) + AC_SUBST([$1][_LIBS]) + LIBS=${weston_save_LIBS} +])