From 8bbef8fe2805429a99de29c264c37f177b3132bc Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Sun, 30 Dec 2012 21:10:52 +0000 Subject: [PATCH] efl: refactor EFL_CHECK_LIB() and EFL_CHECK_FUNC() - introduce EFL_CHECK_LIB_CODE() that does the try-link - introduce EFL_FIND_LIB_FOR_CODE() that will use EFL_CHECK_LIB_CODE() into multiple libraries - also fix dladdr() test (was missing .h in #include ) SVN revision: 81909 --- m4/efl_check_funcs.m4 | 534 +++++++++--------------------------------- m4/efl_check_libs.m4 | 40 ++-- 2 files changed, 128 insertions(+), 446 deletions(-) diff --git a/m4/efl_check_funcs.m4 b/m4/efl_check_funcs.m4 index 109ad067d5..f9319535f4 100644 --- a/m4/efl_check_funcs.m4 +++ b/m4/efl_check_funcs.m4 @@ -12,534 +12,224 @@ dnl iconv dnl setxattr (an al.) dnl shm_open +dnl EFL_CHECK_LIB_CODE(EFL, LIB, VARIABLE, HEADER, BODY) +dnl wrapper around AC_LINK_IFELSE(AC_LANG_PROGRAM()) to check +dnl if some code would work with the given lib. +dnl If the code work, EFL_ADD_LIBS(EFL, LIB) will be called +dnl At the end VARIABLE will be "yes" or "no" +AC_DEFUN([EFL_CHECK_LIB_CODE], +[ +LIBS_save="${LIBS}" +LIBS="${LIBS} $2" +AC_LINK_IFELSE([AC_LANG_PROGRAM([$4], [$5])], + [EFL_ADD_LIBS([$1], [$2]) + $3="yes"], [$3="no"]) +LIBS="${LIBS_save}" +]) + +dnl EFL_FIND_LIB_FOR_CODE(EFL, LIBS, VARIABLE, HEADER, BODY) +AC_DEFUN([EFL_FIND_LIB_FOR_CODE], +[ +dnl first try without lib (libc) +EFL_CHECK_LIB_CODE([$1], [], [$3], [$4], [$5]) + +if test "${$3}" = "no" && test "x$2" != "x"; then +dnl loop through given libraries + for trylib in $2; do + EFL_CHECK_LIB_CODE([$1], [${trylib}], [$3], [$4], [$5]) + if test "${$3}" = "yes"; then + break + fi + done +fi +]) dnl _EFL_CHECK_FUNC_DIRFD is for internal use -dnl _EFL_CHECK_FUNC_DIRFD(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +dnl _EFL_CHECK_FUNC_DIRFD(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_DIRFD], -[ -AC_LINK_IFELSE( - [ - AC_LANG_PROGRAM( - [[ +[EFL_CHECK_LIB_CODE([$1], [], [$2], [[ #ifdef HAVE_DIRENT_H # include #endif - ]], - [[ -int main(void) -{ - DIR *dirp; - return dirfd(dirp); -} - ]]) - ], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) -]) - -dnl _EFL_CHECK_FUNC_DLADDR_PRIV is for internal use -dnl _EFL_CHECK_FUNC_DLADDR_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_DLADDR_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#ifndef _GNU_SOURCE -# define _GNU_SOURCE -#endif -#include -#include - ]], - [[ -int res = dladdr(NULL, NULL); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="${m4_defn([UPEFL])[]_LIBS} $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) - -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) +]], [[DIR *dirp; return dirfd(dirp);]]) ]) dnl _EFL_CHECK_FUNC_DLADDR is for internal use -dnl _EFL_CHECK_FUNC_DLADDR(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_DLADDR(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_DLADDR], [ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - case "$host_os" in mingw*) - _efl_have_fct="yes" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} -ldl" + $2="yes" + EFL_ADD_LIBS([$1], [-ldl]) ;; *) - _efl_have_fct="no" - -dnl Check is dladdr is in libc - _EFL_CHECK_FUNC_DLADDR_PRIV([$1], [], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - -dnl Check is dlopen is in libdl - if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_DLADDR_PRIV([$1], [-ldl], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - fi - ;; -esac - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) -]) - -dnl _EFL_CHECK_FUNC_DLOPEN_PRIV is for internal use -dnl _EFL_CHECK_FUNC_DLOPEN_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_DLOPEN_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include - ]], - [[ -void *h = dlopen(0, 0); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="${m4_defn([UPEFL])[]_LIBS} $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) - -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) -]) - -dnl _EFL_CHECK_FUNC_DLOPEN is for internal use -dnl _EFL_CHECK_FUNC_DLOPEN(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_DLOPEN], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -case "$host_os" in - mingw*) - _efl_have_fct="yes" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} -ldl" - ;; - *) - _efl_have_fct="no" - -dnl Check is dlopen is in libc - _EFL_CHECK_FUNC_DLOPEN_PRIV([$1], [], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - -dnl Check is dlopen is in libdl - if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_DLOPEN_PRIV([$1], [-ldl], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - fi - ;; -esac - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) -]) - -dnl _EFL_CHECK_FUNC_DLSYM_PRIV is for internal use -dnl _EFL_CHECK_FUNC_DLSYM_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_DLSYM_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ + EFL_FIND_LIB_FOR_CODE([$1], [-ldl], [$2], [[ #ifndef _GNU_SOURCE # define _GNU_SOURCE #endif #include #include - ]], - [[ -void *res = dlsym(NULL, NULL); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="${m4_defn([UPEFL])[]_LIBS} $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) +]], [[int res = dladdr(NULL, NULL);]]) + ;; +esac +]) -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) +dnl _EFL_CHECK_FUNC_DLOPEN is for internal use +dnl _EFL_CHECK_FUNC_DLOPEN(EFL, VARIABLE) +AC_DEFUN([_EFL_CHECK_FUNC_DLOPEN], +[ +case "$host_os" in + mingw*) + $2="yes" + EFL_ADD_LIBS([$1], [-ldl]) + ;; + *) + EFL_FIND_LIB_FOR_CODE([$1], [-ldl], [$2], [[ +#include +]], [[void *h = dlopen(0, 0);]]) + ;; +esac ]) dnl _EFL_CHECK_FUNC_DLSYM is for internal use -dnl _EFL_CHECK_FUNC_DLSYM(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_DLSYM(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_DLSYM], [ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - case "$host_os" in mingw*) - _efl_have_fct="yes" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} -ldl" + $2="yes" + EFL_ADD_LIBS([$1], [-ldl]) ;; *) - _efl_have_fct="no" - -dnl Check is dlsym is in libc - _EFL_CHECK_FUNC_DLSYM_PRIV([$1], [], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - -dnl Check is dlopen is in libdl - if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_DLSYM_PRIV([$1], [-ldl], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - fi + EFL_FIND_LIB_FOR_CODE([$1], [-ldl], [$2], [[ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif +#include +#include +]], [[void *res = dlsym(NULL, NULL);]]) ;; esac - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) -]) - -dnl _EFL_CHECK_FUNC_FNMATCH_PRIV is for internal use -dnl _EFL_CHECK_FUNC_FNMATCH_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_FNMATCH_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include - ]], - [[ -int g = fnmatch(NULL, NULL, 0); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="${m4_defn([UPEFL])[]_LIBS} $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) - -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) ]) dnl _EFL_CHECK_FUNC_FNMATCH is for internal use -dnl _EFL_CHECK_FUNC_FNMATCH(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_FNMATCH(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_FNMATCH], [ case "$host_os" in mingw*) - _efl_have_fct="yes" + $2="yes" ;; *) -dnl Check is fnmatch is in libc - _EFL_CHECK_FUNC_FNMATCH_PRIV([$1], [], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - -dnl Check is fnmatch is in libfnmatch - if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_FNMATCH_PRIV([$1], [-lfnmatch], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - fi - -dnl Check is fnmatch is in libiberty - if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_FNMATCH_PRIV([$1], [-liberty], [_efl_have_fct="yes"], [_efl_have_fct="no"]) - fi + EFL_FIND_LIB_FOR_CODE([$1], [-lfnmatch -liberty], [$2], [[ +#include +#include +]], [[int g = fnmatch(NULL, NULL, 0);]]) ;; esac - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) ]) dnl _EFL_CHECK_FUNC_GETTIMEOFDAY is for internal use -dnl _EFL_CHECK_FUNC_GETTIMEOFDAY(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_GETTIMEOFDAY(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_GETTIMEOFDAY], [ case "$host_os" in mingw*) - _efl_have_fct="yes" + $2="yes" ;; *) - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[ + EFL_CHECK_LIB_CODE([$1], [], [$2], [[ #include #include - ]], - [[ -int res; -res = gettimeofday(NULL, NULL); - ]])], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) +]], [[int res = gettimeofday(NULL, NULL);]]) - if test "x${_efl_have_fct}" = "xno" && test "x${enable_exotic}" = "xyes"; then - SAVE_LIBS="${LIBS}" + if test "${$2}" = "no" && test "x${enable_exotic}" = "xyes"; then SAVE_CFLAGS="${CFLAGS}" - LIBS="${LIBS} ${EXOTIC_LIBS}" CFLAGS="${CFLAGS} ${EXOTIC_CFLAGS}" - AC_LINK_IFELSE( - [AC_LANG_PROGRAM([[ + EFL_CHECK_LIB_CODE([$1], [${EXOTIC_LIBS}], [$2], [[ #include - ]], - [[ -int res; -res = gettimeofday(NULL, NULL); - ]])], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) - LIBS="${SAVE_LIBS}" +]], [[int res = gettimeofday(NULL, NULL);]]) CFLAGS="${SAVE_CFLAGS}" fi ;; esac - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) -]) - -dnl _EFL_CHECK_FUNC_ICONV_PRIV is for internal use -dnl _EFL_CHECK_FUNC_ICONV_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_ICONV_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include - ]], - [[ -iconv_t ic; -size_t count = iconv(ic, NULL, NULL, NULL, NULL); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="${m4_defn([UPEFL])[]_LIBS} $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) - -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) ]) dnl _EFL_CHECK_FUNC_ICONV is for internal use -dnl _EFL_CHECK_FUNC_ICONV(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_ICONV(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_ICONV], -[ +[dnl AC_ARG_WITH([iconv-link], AC_HELP_STRING([--with-iconv-link=ICONV_LINK], [explicitly specify an iconv link option]), [ - _efl_have_fct="yes" + $2="yes" iconv_libs=${withval} ], - [_efl_have_fct="no"]) + [$2="no"]) -AC_MSG_CHECKING([for explicit iconv link options]) if test "x${iconv_libs}" = "x" ; then - AC_MSG_RESULT([no explicit iconv link option]) -else - AC_MSG_RESULT([${iconv_libs}]) + EFL_FIND_LIB_FOR_CODE([$1], [-liconv -liconv_plug], [$2], [[ +#include +#include +]], [[iconv_t ic; size_t count = iconv(ic, NULL, NULL, NULL, NULL);]]) fi - -dnl Check is iconv is in libc -if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_ICONV_PRIV([$1], [], [_efl_have_fct="yes"], [_efl_have_fct="no"]) -fi - -dnl Check is iconv is in libiconv -if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_ICONV_PRIV([$1], [-liconv], [_efl_have_fct="yes"], [_efl_have_fct="no"]) -fi - -dnl Check is iconv is in libiconv_plug -if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_ICONV_PRIV([$1], [-liconv_plug], [_efl_have_fct="yes"], [_efl_have_fct="no"]) -fi - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) ]) dnl _EFL_CHECK_FUNC_SETXATTR is for internal use -dnl _EFL_CHECK_FUNC_SETXATTR(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_SETXATTR(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_SETXATTR], -[ -AC_COMPILE_IFELSE( - [AC_LANG_PROGRAM( - [[ +[EFL_CHECK_LIB_CODE([$1], [], [$2], [[ #include #include #include - ]], - [[ +]], [[ size_t tmp = listxattr("/", NULL, 0); tmp = getxattr("/", "user.ethumb.md5", NULL, 0); setxattr("/", "user.ethumb.md5", NULL, 0, 0); - ]])], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) +]]) -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) -]) - -dnl _EFL_CHECK_FUNC_SHM_OPEN_PRIV is for internal use -dnl _EFL_CHECK_FUNC_SHM_OPEN_PRIV(EFL, LIB, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - -AC_DEFUN([_EFL_CHECK_FUNC_SHM_OPEN_PRIV], -[ -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl - -LIBS_save="${LIBS}" -LIBS="${LIBS} $2" -AC_LINK_IFELSE( - [AC_LANG_PROGRAM( - [[ -#include -#include /* For mode constants */ -#include /* For O_* constants */ - ]], - [[ -int fd; - -fd = shm_open("/dev/null", O_RDONLY, S_IRWXU | S_IRWXG | S_IRWXO); - ]])], - [ - m4_defn([UPEFL])[]_LIBS="$m4_defn([UPEFL])[]_LIBS $2" - requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} $2" - _efl_have_fct="yes" - ], - [_efl_have_fct="no"]) - -LIBS="${LIBS_save}" - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$3], [$4]) - -m4_popdef([DOWNEFL]) -m4_popdef([UPEFL]) +if test "${$2}" = "yes"; then + AC_DEFINE([HAVE_XATTR], [1], [Define to 1 if you have the `listxattr', `setxattr' and `getxattr' functions.]) +fi ]) dnl _EFL_CHECK_FUNC_SHM_OPEN is for internal use -dnl _EFL_CHECK_FUNC_SHM_OPEN(EFL, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) - +dnl _EFL_CHECK_FUNC_SHM_OPEN(EFL, VARIABLE) AC_DEFUN([_EFL_CHECK_FUNC_SHM_OPEN], -[ -_efl_have_fct="no" - -dnl Check is shm_open is in libc -_EFL_CHECK_FUNC_SHM_OPEN_PRIV([$1], [], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) - -dnl Check is shm_open is in librt -if test "x${_efl_have_fct}" = "xno" ; then - _EFL_CHECK_FUNC_SHM_OPEN_PRIV([$1], [-lrt], - [_efl_have_fct="yes"], - [_efl_have_fct="no"]) -fi - -AS_IF([test "x${_efl_have_fct}" = "xyes"], [$2], [$3]) +[EFL_FIND_LIB_FOR_CODE([$1], [-lrt], [$2], [[ +#include +#include /* For mode constants */ +#include /* For O_* constants */ +]], [[ +int fd = shm_open("/dev/null", O_RDONLY, S_IRWXU | S_IRWXG | S_IRWXO); +]]) ]) dnl Macro that checks function availability dnl dnl EFL_CHECK_FUNC(EFL, FUNCTION) dnl AC_SUBST : EFL_CFLAGS and EFL_LIBS (EFL being replaced by its value) -dnl AC_DEFINE : EFL_HAVE_FUNCTION (FUNCTION being replaced by its value) +dnl AC_DEFINE : HAVE_FUNCTION (FUNCTION being replaced by its value) dnl result in efl_func_function (function being replaced by its value) AC_DEFUN([EFL_CHECK_FUNC], -[ +[dnl m4_pushdef([UP], m4_translit([$2], [-a-z], [_A-Z]))dnl m4_pushdef([DOWN], m4_translit([$2], [-A-Z], [_a-z]))dnl -m4_default([_EFL_CHECK_FUNC_]m4_defn([UP]))($1, [have_fct="yes"], [have_fct="no"]) - -if test "x$2" = "xsetxattr" ; then - AC_MSG_CHECKING([for extended attributes]) -else - AC_MSG_CHECKING([for ]m4_defn([DOWN])) -fi - +m4_default([_EFL_CHECK_FUNC_]m4_defn([UP]))($1, [have_fct]) +AC_MSG_CHECKING([for $2]) AC_MSG_RESULT([${have_fct}]) if test "x${have_fct}" = "xyes" ; then - if test "x$2" = "xsetxattr" ; then - AC_DEFINE([HAVE_XATTR], [1], [Define to 1 if you have the `listxattr', `setxattr' and `getxattr' functions.]) - else - AC_DEFINE([HAVE_]m4_defn([UP]), [1], [Define to 1 if you have the `]m4_defn([DOWN])[' function.]) - fi + AC_DEFINE([HAVE_]m4_defn([UP]), [1], [Define to 1 if you have the `]m4_defn([DOWN])[' function.]) fi efl_func_[]m4_defn([DOWN])="${have_fct}" - -m4_popdef([DOWN]) -m4_popdef([UP]) +m4_popdef([DOWN])dnl +m4_popdef([UP])dnl ]) dnl Macro that iterates over a sequence of space separated functions @@ -548,6 +238,4 @@ dnl dnl EFL_CHECK_FUNCS(EFL, FUNCTIONS) AC_DEFUN([EFL_CHECK_FUNCS], -[ -m4_foreach_w([fct], [$2], [EFL_CHECK_FUNC($1, m4_defn([fct]))]) -]) +[m4_foreach_w([fct], [$2], [EFL_CHECK_FUNC($1, m4_defn([fct]))])]) diff --git a/m4/efl_check_libs.m4 b/m4/efl_check_libs.m4 index 91500db267..c64013bf7c 100644 --- a/m4/efl_check_libs.m4 +++ b/m4/efl_check_libs.m4 @@ -12,18 +12,16 @@ dnl it will abort (AC_MSG_ERROR) if libjpeg is not found. AC_DEFUN([_EFL_CHECK_LIB_LIBJPEG], [dnl -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl -m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl +EFL_CHECK_LIB_CODE([$1], [-ljpeg], [have_fct], [[ +#include +#include +]], [[ +struct jpeg_error_mgr er; void *error = jpeg_std_error(&er); +]]) -AC_CHECK_HEADER([jpeglib.h], [], - [AC_MSG_ERROR([Cannot find jpeglib.h. Make sure your CFLAGS environment variable contains include lines for the location of this file])]) - -AC_CHECK_LIB([jpeg], [jpeg_std_error], - [requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} -ljpeg"], - [AC_MSG_ERROR([Cannot find libjpeg library. Make sure your LDFLAGS environment variable contains include lines for the location of this file])]) - -m4_popdef([DOWNEFL])dnl -m4_popdef([UPEFL])dnl +if test "${have_fct}" = "no"; then + AC_MSG_ERROR([Cannot find libjpeg. Make sure your CFLAGS and LDFLAGS environment variable are set properly.]) +fi ]) dnl _EFL_CHECK_LIB_ZLIB is for internal use @@ -32,25 +30,23 @@ dnl it will abort (AC_MSG_ERROR) if zlib is not found. AC_DEFUN([_EFL_CHECK_LIB_ZLIB], [dnl -m4_pushdef([UPEFL], m4_translit([$1], [-a-z], [_A-Z]))dnl m4_pushdef([DOWNEFL], m4_translit([$1], [-A-Z], [_a-z]))dnl PKG_CHECK_EXISTS([zlib >= 1.2.3], [_efl_have_lib="yes"], [_efl_have_lib="no"]) -if test "x${_efl_have_lib}" = "xyes" ; then +if test "${_efl_have_lib}" = "yes"; then requirements_pc_[]m4_defn([DOWNEFL])="${requirements_pc_[]m4_defn([DOWNEFL])} zlib >= 1.2.3" requirements_pc_deps_[]m4_defn([DOWNEFL])="${requirements_pc_deps_[]m4_defn([DOWNEFL])} zlib >= 1.2.3" else - AC_CHECK_HEADER([zlib.h], [], - [AC_MSG_ERROR([Cannot find zlib.h. Make sure your CFLAGS environment variable contains include lines for the location of this file])]) + EFL_CHECK_LIB_CODE([$1], [-lz], [have_fct], [[ +#include +]], [[const char *v = zlibVersion();]]) - AC_CHECK_LIB([z], [zlibVersion], - [requirements_libs_[]m4_defn([DOWNEFL])="${requirements_libs_[]m4_defn([DOWNEFL])} -lz"], - [AC_MSG_ERROR([Cannot find libjpeg library. Make sure your LDFLAGS environment variable contains include lines for the location of this file])]) + if test "${have_fct}" = "no"; then + AC_MSG_ERROR([Cannot find zlib. Make sure your CFLAGS and LDFLAGS environment variable are set properly.]) + fi fi - m4_popdef([DOWNEFL])dnl -m4_popdef([UPEFL])dnl ]) dnl Macro that checks for a library @@ -61,11 +57,9 @@ dnl it will abort if library is not found AC_DEFUN([EFL_CHECK_LIB], [dnl m4_pushdef([UP], m4_translit([$2], [-a-z], [_A-Z]))dnl - -AC_MSG_CHECKING([for $2]) m4_default([_EFL_CHECK_LIB_]m4_defn([UP]))($1) +AC_MSG_CHECKING([for $2]) AC_MSG_RESULT([yes]) - m4_popdef([UP])dnl ])