ac_onceonly.m4 2.6 KB

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