1# onceonly.m4 serial 3 (gettext-0.12)
2dnl Copyright (C) 2002, 2003 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7dnl This file defines some "once only" variants of standard autoconf macros.
8dnl   AC_CHECK_HEADERS_ONCE         like  AC_CHECK_HEADERS
9dnl   AC_CHECK_FUNCS_ONCE           like  AC_CHECK_FUNCS
10dnl   AC_CHECK_DECLS_ONCE           like  AC_CHECK_DECLS
11dnl   AC_REQUIRE([AC_HEADER_STDC])  like  AC_HEADER_STDC
12dnl The advantage is that the check for each of the headers/functions/decls
13dnl will be put only once into the 'configure' file. It keeps the size of
14dnl the 'configure' file down, and avoids redundant output when 'configure'
15dnl is run.
16dnl The drawback is that the checks cannot be conditionalized. If you write
17dnl   if some_condition; then gl_CHECK_HEADERS(stdlib.h); fi
18dnl inside an AC_DEFUNed function, the gl_CHECK_HEADERS macro call expands to
19dnl empty, and the check will be inserted before the body of the AC_DEFUNed
20dnl function.
21
22dnl Autoconf version 2.57 or newer is recommended.
23AC_PREREQ(2.54)
24
25# AC_CHECK_HEADERS_ONCE(HEADER1 HEADER2 ...) is a once-only variant of
26# AC_CHECK_HEADERS(HEADER1 HEADER2 ...).
27AC_DEFUN([AC_CHECK_HEADERS_ONCE], [
28  :
29  AC_FOREACH([gl_HEADER_NAME], [$1], [
30    AC_DEFUN([gl_CHECK_HEADER_]m4_quote(translit(m4_defn([gl_HEADER_NAME]),
31                                                 [-./], [___])), [
32      AC_CHECK_HEADERS(gl_HEADER_NAME)
33    ])
34    AC_REQUIRE([gl_CHECK_HEADER_]m4_quote(translit(gl_HEADER_NAME,
35                                                   [-./], [___])))
36  ])
37])
38
39# AC_CHECK_FUNCS_ONCE(FUNC1 FUNC2 ...) is a once-only variant of
40# AC_CHECK_FUNCS(FUNC1 FUNC2 ...).
41AC_DEFUN([AC_CHECK_FUNCS_ONCE], [
42  :
43  AC_FOREACH([gl_FUNC_NAME], [$1], [
44    AC_DEFUN([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]), [
45      AC_CHECK_FUNCS(m4_defn([gl_FUNC_NAME]))
46    ])
47    AC_REQUIRE([gl_CHECK_FUNC_]m4_defn([gl_FUNC_NAME]))
48  ])
49])
50
51# AC_CHECK_DECLS_ONCE(DECL1 DECL2 ...) is a once-only variant of
52# AC_CHECK_DECLS(DECL1, DECL2, ...).
53AC_DEFUN([AC_CHECK_DECLS_ONCE], [
54  :
55  AC_FOREACH([gl_DECL_NAME], [$1], [
56    AC_DEFUN([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]), [
57      AC_CHECK_DECLS(m4_defn([gl_DECL_NAME]))
58    ])
59    AC_REQUIRE([gl_CHECK_DECL_]m4_defn([gl_DECL_NAME]))
60  ])
61])
62