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