gnulib-common.m4 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. # gnulib-common.m4 serial 11
  2. dnl Copyright (C) 2007-2009 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. # gl_COMMON
  7. # is expanded unconditionally through gnulib-tool magic.
  8. AC_DEFUN([gl_COMMON], [
  9. dnl Use AC_REQUIRE here, so that the code is expanded once only.
  10. AC_REQUIRE([gl_00GNULIB])
  11. AC_REQUIRE([gl_COMMON_BODY])
  12. ])
  13. AC_DEFUN([gl_COMMON_BODY], [
  14. AH_VERBATIM([isoc99_inline],
  15. [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports
  16. the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of
  17. earlier versions), but does not display it by setting __GNUC_STDC_INLINE__.
  18. __APPLE__ && __MACH__ test for MacOS X.
  19. __APPLE_CC__ tests for the Apple compiler and its version.
  20. __STDC_VERSION__ tests for the C99 mode. */
  21. #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__
  22. # define __GNUC_STDC_INLINE__ 1
  23. #endif])
  24. AH_VERBATIM([unused_parameter],
  25. [/* Define as a marker that can be attached to function parameter declarations
  26. for parameters that are not used. This helps to reduce warnings, such as
  27. from GCC -Wunused-parameter. */
  28. #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
  29. # define _UNUSED_PARAMETER_ __attribute__ ((__unused__))
  30. #else
  31. # define _UNUSED_PARAMETER_
  32. #endif
  33. ])
  34. ])
  35. # gl_MODULE_INDICATOR([modulename])
  36. # defines a C macro indicating the presence of the given module.
  37. AC_DEFUN([gl_MODULE_INDICATOR],
  38. [
  39. AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
  40. [Define to 1 when using the gnulib module ]$1[.])
  41. ])
  42. # m4_foreach_w
  43. # is a backport of autoconf-2.59c's m4_foreach_w.
  44. # Remove this macro when we can assume autoconf >= 2.60.
  45. m4_ifndef([m4_foreach_w],
  46. [m4_define([m4_foreach_w],
  47. [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])])
  48. # AC_PROG_MKDIR_P
  49. # is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
  50. # Remove this macro when we can assume autoconf >= 2.60.
  51. m4_ifdef([AC_PROG_MKDIR_P], [], [
  52. AC_DEFUN_ONCE([AC_PROG_MKDIR_P],
  53. [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
  54. MKDIR_P='$(mkdir_p)'
  55. AC_SUBST([MKDIR_P])])])
  56. # AC_C_RESTRICT
  57. # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
  58. # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
  59. # works.
  60. # This definition can be removed once autoconf >= 2.62 can be assumed.
  61. AC_DEFUN([AC_C_RESTRICT],
  62. [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
  63. [ac_cv_c_restrict=no
  64. # The order here caters to the fact that C++ does not require restrict.
  65. for ac_kw in __restrict __restrict__ _Restrict restrict; do
  66. AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
  67. [[typedef int * int_ptr;
  68. int foo (int_ptr $ac_kw ip) {
  69. return ip[0];
  70. }]],
  71. [[int s[1];
  72. int * $ac_kw t = s;
  73. t[0] = 0;
  74. return foo(t)]])],
  75. [ac_cv_c_restrict=$ac_kw])
  76. test "$ac_cv_c_restrict" != no && break
  77. done
  78. ])
  79. AH_VERBATIM([restrict],
  80. [/* Define to the equivalent of the C99 'restrict' keyword, or to
  81. nothing if this is not supported. Do not define if restrict is
  82. supported directly. */
  83. #undef restrict
  84. /* Work around a bug in Sun C++: it does not support _Restrict, even
  85. though the corresponding Sun C compiler does, which causes
  86. "#define restrict _Restrict" in the previous line. Perhaps some future
  87. version of Sun C++ will work with _Restrict; if so, it'll probably
  88. define __RESTRICT, just as Sun C does. */
  89. #if defined __SUNPRO_CC && !defined __RESTRICT
  90. # define _Restrict
  91. #endif])
  92. case $ac_cv_c_restrict in
  93. restrict) ;;
  94. no) AC_DEFINE([restrict], []) ;;
  95. *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;;
  96. esac
  97. ])
  98. # gl_BIGENDIAN
  99. # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd.
  100. # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some
  101. # macros invoke AC_C_BIGENDIAN with arguments.
  102. AC_DEFUN([gl_BIGENDIAN],
  103. [
  104. AC_C_BIGENDIAN
  105. ])
  106. # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it)
  107. # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not
  108. # output a spurious "(cached)" mark in the midst of other configure output.
  109. # This macro should be used instead of AC_CACHE_VAL when it is not surrounded
  110. # by an AC_MSG_CHECKING/AC_MSG_RESULT pair.
  111. AC_DEFUN([gl_CACHE_VAL_SILENT],
  112. [
  113. saved_as_echo_n="$as_echo_n"
  114. as_echo_n=':'
  115. AC_CACHE_VAL([$1], [$2])
  116. as_echo_n="$saved_as_echo_n"
  117. ])