.
[gnulib.git] / m4 / decl.m4
1 AC_DEFUN(jm_CHECK_DECLARATION,
2 [
3 test -z "$ac_cv_header_strings_h" && AC_CHECK_HEADERS(strings.h)
4 test -z "$ac_cv_header_stdlib_h" && AC_CHECK_HEADERS(stdlib.h)
5 test -z "$ac_cv_header_unistd_h" && AC_CHECK_HEADERS(unistd.h)
6 AC_MSG_CHECKING([whether $1 is declared])
7 AC_CACHE_VAL(jm_cv_func_decl_$1,
8 [AC_TRY_COMPILE([
9 #include <stdio.h>
10 #ifdef HAVE_STRING_H
11 # include <string.h>
12 #else
13 # ifdef HAVE_STRINGS_H
14 #  include <strings.h>
15 # endif
16 #endif
17 #ifdef HAVE_STDLIB_H
18 # include <stdlib.h>
19 #endif
20 #ifdef HAVE_UNISTD_H
21 # include <unistd.h>
22 #endif],
23 [
24 #ifndef $1
25 char *(*pfn) = (char *(*)) $1
26 #endif
27 ],
28   eval "jm_cv_func_decl_$1=yes",
29   eval "jm_cv_func_decl_$1=no")])
30
31 if eval "test \"`echo '$jm_cv_func_decl_'$1`\" = yes"; then
32   AC_MSG_RESULT(yes)
33   ifelse([$2], , :, [$2])
34 else
35   AC_MSG_RESULT(no)
36   ifelse([$3], , , [$3
37 ])dnl
38 fi
39 ])dnl
40
41 dnl jm_CHECK_DECLARATIONS(FUNCTION... [, ACTION-IF-DECLARED
42 dnl                       [, ACTION-IF-NOT-DECLARED]])
43 AC_DEFUN(jm_CHECK_DECLARATIONS,
44 [
45   for jm_func in $1
46   do
47     jm_CHECK_DECLARATION($jm_func,
48     [
49       lower=abcdefghijklmnopqrstuvwxyz
50       upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
51       jm_tr_func=HAVE_DECLARATION_`echo $jm_func | tr $lower $upper`
52       AC_DEFINE_UNQUOTED($jm_tr_func) $2], $3)dnl
53   done
54 ])