Mercurial > emacs
annotate m4/gnulib-common.m4 @ 112433:7b649f6eac4f
Merge from mainline.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 22 Jan 2011 17:09:09 -0800 |
parents | c81ff7082a9a |
children | 16ddab338c43 |
rev | line source |
---|---|
112403
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
1 # gnulib-common.m4 serial 22 |
112303 | 2 dnl Copyright (C) 2007-2011 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 | |
7 # gl_COMMON | |
8 # is expanded unconditionally through gnulib-tool magic. | |
9 AC_DEFUN([gl_COMMON], [ | |
10 dnl Use AC_REQUIRE here, so that the code is expanded once only. | |
11 AC_REQUIRE([gl_00GNULIB]) | |
12 AC_REQUIRE([gl_COMMON_BODY]) | |
13 ]) | |
14 AC_DEFUN([gl_COMMON_BODY], [ | |
15 AH_VERBATIM([isoc99_inline], | |
16 [/* Work around a bug in Apple GCC 4.0.1 build 5465: In C99 mode, it supports | |
17 the ISO C 99 semantics of 'extern inline' (unlike the GNU C semantics of | |
18 earlier versions), but does not display it by setting __GNUC_STDC_INLINE__. | |
19 __APPLE__ && __MACH__ test for MacOS X. | |
20 __APPLE_CC__ tests for the Apple compiler and its version. | |
21 __STDC_VERSION__ tests for the C99 mode. */ | |
22 #if defined __APPLE__ && defined __MACH__ && __APPLE_CC__ >= 5465 && !defined __cplusplus && __STDC_VERSION__ >= 199901L && !defined __GNUC_STDC_INLINE__ | |
23 # define __GNUC_STDC_INLINE__ 1 | |
24 #endif]) | |
25 AH_VERBATIM([unused_parameter], | |
26 [/* Define as a marker that can be attached to declarations that might not | |
27 be used. This helps to reduce warnings, such as from | |
28 GCC -Wunused-parameter. */ | |
29 #if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7) | |
30 # define _GL_UNUSED __attribute__ ((__unused__)) | |
31 #else | |
32 # define _GL_UNUSED | |
33 #endif | |
34 /* The name _UNUSED_PARAMETER_ is an earlier spelling, although the name | |
35 is a misnomer outside of parameter lists. */ | |
36 #define _UNUSED_PARAMETER_ _GL_UNUSED | |
37 ]) | |
38 dnl Preparation for running test programs: | |
39 dnl Tell glibc to write diagnostics from -D_FORTIFY_SOURCE=2 to stderr, not | |
40 dnl to /dev/tty, so they can be redirected to log files. Such diagnostics | |
41 dnl arise e.g., in the macros gl_PRINTF_DIRECTIVE_N, gl_SNPRINTF_DIRECTIVE_N. | |
42 LIBC_FATAL_STDERR_=1 | |
43 export LIBC_FATAL_STDERR_ | |
44 ]) | |
45 | |
46 # gl_MODULE_INDICATOR_CONDITION | |
47 # expands to a C preprocessor expression that evaluates to 1 or 0, depending | |
48 # whether a gnulib module that has been requested shall be considered present | |
49 # or not. | |
50 AC_DEFUN([gl_MODULE_INDICATOR_CONDITION], [1]) | |
51 | |
52 # gl_MODULE_INDICATOR_SET_VARIABLE([modulename]) | |
53 # sets the shell variable that indicates the presence of the given module to | |
54 # a C preprocessor expression that will evaluate to 1. | |
55 AC_DEFUN([gl_MODULE_INDICATOR_SET_VARIABLE], | |
56 [ | |
57 GNULIB_[]m4_translit([[$1]], | |
58 [abcdefghijklmnopqrstuvwxyz./-], | |
59 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=gl_MODULE_INDICATOR_CONDITION | |
60 ]) | |
61 | |
62 # gl_MODULE_INDICATOR([modulename]) | |
63 # defines a C macro indicating the presence of the given module | |
64 # in a location where it can be used. | |
65 # | Value | Value | | |
66 # | in lib/ | in tests/ | | |
67 # --------------------------------------------+---------+-----------+ | |
68 # Module present among main modules: | 1 | 1 | | |
69 # --------------------------------------------+---------+-----------+ | |
70 # Module present among tests-related modules: | 0 | 1 | | |
71 # --------------------------------------------+---------+-----------+ | |
72 # Module not present at all: | 0 | 0 | | |
73 # --------------------------------------------+---------+-----------+ | |
74 AC_DEFUN([gl_MODULE_INDICATOR], | |
75 [ | |
76 AC_DEFINE_UNQUOTED([GNULIB_]m4_translit([[$1]], | |
77 [abcdefghijklmnopqrstuvwxyz./-], | |
78 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), | |
79 [gl_MODULE_INDICATOR_CONDITION], | |
80 [Define to a C preprocessor expression that evaluates to 1 or 0, | |
81 depending whether the gnulib module $1 shall be considered present.]) | |
82 ]) | |
83 | |
84 # gl_MODULE_INDICATOR_FOR_TESTS([modulename]) | |
85 # defines a C macro indicating the presence of the given module | |
86 # in lib or tests. This is useful to determine whether the module | |
87 # should be tested. | |
88 # | Value | Value | | |
89 # | in lib/ | in tests/ | | |
90 # --------------------------------------------+---------+-----------+ | |
91 # Module present among main modules: | 1 | 1 | | |
92 # --------------------------------------------+---------+-----------+ | |
93 # Module present among tests-related modules: | 1 | 1 | | |
94 # --------------------------------------------+---------+-----------+ | |
95 # Module not present at all: | 0 | 0 | | |
96 # --------------------------------------------+---------+-----------+ | |
97 AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], | |
98 [ | |
99 AC_DEFINE([GNULIB_TEST_]m4_translit([[$1]], | |
100 [abcdefghijklmnopqrstuvwxyz./-], | |
101 [ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1], | |
102 [Define to 1 when the gnulib module $1 should be tested.]) | |
103 ]) | |
104 | |
112403
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
105 # gl_ASSERT_NO_GNULIB_TESTS |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
106 # asserts that there will be no gnulib tests in the scope of the configure.ac |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
107 # and thereby enables an optimization of config.h. |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
108 # Used by Emacs. |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
109 AC_DEFUN([gl_ASSERT_NO_GNULIB_TESTS], |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
110 [ |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
111 dnl Override gl_MODULE_INDICATOR_FOR_TESTS. |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
112 AC_DEFUN([gl_MODULE_INDICATOR_FOR_TESTS], []) |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
113 ]) |
c81ff7082a9a
src/config.in: shrink slightly
Paul Eggert <eggert@cs.ucla.edu>
parents:
112303
diff
changeset
|
114 |
112303 | 115 # Test whether <features.h> exists. |
116 # Set HAVE_FEATURES_H. | |
117 AC_DEFUN([gl_FEATURES_H], | |
118 [ | |
119 AC_CHECK_HEADERS_ONCE([features.h]) | |
120 if test $ac_cv_header_features_h = yes; then | |
121 HAVE_FEATURES_H=1 | |
122 else | |
123 HAVE_FEATURES_H=0 | |
124 fi | |
125 AC_SUBST([HAVE_FEATURES_H]) | |
126 ]) | |
127 | |
128 # m4_foreach_w | |
129 # is a backport of autoconf-2.59c's m4_foreach_w. | |
130 # Remove this macro when we can assume autoconf >= 2.60. | |
131 m4_ifndef([m4_foreach_w], | |
132 [m4_define([m4_foreach_w], | |
133 [m4_foreach([$1], m4_split(m4_normalize([$2]), [ ]), [$3])])]) | |
134 | |
135 # AS_VAR_IF(VAR, VALUE, [IF-MATCH], [IF-NOT-MATCH]) | |
136 # ---------------------------------------------------- | |
137 # Backport of autoconf-2.63b's macro. | |
138 # Remove this macro when we can assume autoconf >= 2.64. | |
139 m4_ifndef([AS_VAR_IF], | |
140 [m4_define([AS_VAR_IF], | |
141 [AS_IF([test x"AS_VAR_GET([$1])" = x""$2], [$3], [$4])])]) | |
142 | |
143 # AC_PROG_MKDIR_P | |
144 # is a backport of autoconf-2.60's AC_PROG_MKDIR_P, with a fix | |
145 # for interoperability with automake-1.9.6 from autoconf-2.62. | |
146 # Remove this macro when we can assume autoconf >= 2.62 or | |
147 # autoconf >= 2.60 && automake >= 1.10. | |
148 m4_ifdef([AC_PROG_MKDIR_P], [ | |
149 dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed. | |
150 m4_define([AC_PROG_MKDIR_P], | |
151 m4_defn([AC_PROG_MKDIR_P])[ | |
152 AC_SUBST([MKDIR_P])])], [ | |
153 dnl For autoconf < 2.60: Backport of AC_PROG_MKDIR_P. | |
154 AC_DEFUN_ONCE([AC_PROG_MKDIR_P], | |
155 [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake | |
156 MKDIR_P='$(mkdir_p)' | |
157 AC_SUBST([MKDIR_P])])]) | |
158 | |
159 # AC_C_RESTRICT | |
160 # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61, | |
161 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++ | |
162 # works. | |
163 # This definition can be removed once autoconf >= 2.62 can be assumed. | |
164 m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[ | |
165 AC_DEFUN([AC_C_RESTRICT], | |
166 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict], | |
167 [ac_cv_c_restrict=no | |
168 # The order here caters to the fact that C++ does not require restrict. | |
169 for ac_kw in __restrict __restrict__ _Restrict restrict; do | |
170 AC_COMPILE_IFELSE([AC_LANG_PROGRAM( | |
171 [[typedef int * int_ptr; | |
172 int foo (int_ptr $ac_kw ip) { | |
173 return ip[0]; | |
174 }]], | |
175 [[int s[1]; | |
176 int * $ac_kw t = s; | |
177 t[0] = 0; | |
178 return foo(t)]])], | |
179 [ac_cv_c_restrict=$ac_kw]) | |
180 test "$ac_cv_c_restrict" != no && break | |
181 done | |
182 ]) | |
183 AH_VERBATIM([restrict], | |
184 [/* Define to the equivalent of the C99 'restrict' keyword, or to | |
185 nothing if this is not supported. Do not define if restrict is | |
186 supported directly. */ | |
187 #undef restrict | |
188 /* Work around a bug in Sun C++: it does not support _Restrict, even | |
189 though the corresponding Sun C compiler does, which causes | |
190 "#define restrict _Restrict" in the previous line. Perhaps some future | |
191 version of Sun C++ will work with _Restrict; if so, it'll probably | |
192 define __RESTRICT, just as Sun C does. */ | |
193 #if defined __SUNPRO_CC && !defined __RESTRICT | |
194 # define _Restrict | |
195 #endif]) | |
196 case $ac_cv_c_restrict in | |
197 restrict) ;; | |
198 no) AC_DEFINE([restrict], []) ;; | |
199 *) AC_DEFINE_UNQUOTED([restrict], [$ac_cv_c_restrict]) ;; | |
200 esac | |
201 ]) | |
202 ]) | |
203 | |
204 # gl_BIGENDIAN | |
205 # is like AC_C_BIGENDIAN, except that it can be AC_REQUIREd. | |
206 # Note that AC_REQUIRE([AC_C_BIGENDIAN]) does not work reliably because some | |
207 # macros invoke AC_C_BIGENDIAN with arguments. | |
208 AC_DEFUN([gl_BIGENDIAN], | |
209 [ | |
210 AC_C_BIGENDIAN | |
211 ]) | |
212 | |
213 # gl_CACHE_VAL_SILENT(cache-id, command-to-set-it) | |
214 # is like AC_CACHE_VAL(cache-id, command-to-set-it), except that it does not | |
215 # output a spurious "(cached)" mark in the midst of other configure output. | |
216 # This macro should be used instead of AC_CACHE_VAL when it is not surrounded | |
217 # by an AC_MSG_CHECKING/AC_MSG_RESULT pair. | |
218 AC_DEFUN([gl_CACHE_VAL_SILENT], | |
219 [ | |
220 saved_as_echo_n="$as_echo_n" | |
221 as_echo_n=':' | |
222 AC_CACHE_VAL([$1], [$2]) | |
223 as_echo_n="$saved_as_echo_n" | |
224 ]) |