VirtualBox

source: kBuild/trunk/src/grep/m4/wchar_h.m4

Last change on this file was 3529, checked in by bird, 3 years ago

Imported grep 3.7 from grep-3.7.tar.gz (sha256: c22b0cf2d4f6bbe599c902387e8058990e1eee99aef333a203829e5fd3dbb342), applying minimal auto-props.

  • Property svn:eol-style set to LF
File size: 10.8 KB
Line 
1dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
2
3dnl Copyright (C) 2007-2021 Free Software Foundation, Inc.
4dnl This file is free software; the Free Software Foundation
5dnl gives unlimited permission to copy and/or distribute it,
6dnl with or without modifications, as long as this notice is preserved.
7
8dnl Written by Eric Blake.
9
10# wchar_h.m4 serial 53
11
12AC_DEFUN_ONCE([gl_WCHAR_H],
13[
14 AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
15 AC_REQUIRE([gl_WCHAR_H_INLINE_OK])
16 dnl Prepare for creating substitute <wchar.h>.
17 dnl Check for <wchar.h> (missing in Linux uClibc when built without wide
18 dnl character support).
19 dnl <wchar.h> is always overridden, because of GNULIB_POSIXCHECK.
20 gl_CHECK_NEXT_HEADERS([wchar.h])
21 if test $ac_cv_header_wchar_h = yes; then
22 HAVE_WCHAR_H=1
23 else
24 HAVE_WCHAR_H=0
25 fi
26 AC_SUBST([HAVE_WCHAR_H])
27
28 AC_REQUIRE([gl_FEATURES_H])
29
30 AC_REQUIRE([gt_TYPE_WINT_T])
31 if test $gt_cv_c_wint_t = yes; then
32 HAVE_WINT_T=1
33 else
34 HAVE_WINT_T=0
35 fi
36 AC_SUBST([HAVE_WINT_T])
37
38 AC_REQUIRE([gl_TYPE_WINT_T_PREREQ])
39
40 dnl Check for declarations of anything we want to poison if the
41 dnl corresponding gnulib module is not in use.
42 gl_WARN_ON_USE_PREPARE([[
43 #include <wchar.h>
44 ]],
45 [btowc wctob mbsinit mbrtowc mbrlen mbsrtowcs mbsnrtowcs wcrtomb
46 wcsrtombs wcsnrtombs wcwidth
47 wmemchr wmemcmp wmemcpy wmemmove wmempcpy wmemset
48 wcslen wcsnlen wcscpy wcpcpy wcsncpy wcpncpy wcscat wcsncat wcscmp
49 wcsncmp wcscasecmp wcsncasecmp wcscoll wcsxfrm wcsdup wcschr wcsrchr
50 wcscspn wcsspn wcspbrk wcsstr wcstok wcswidth wcsftime
51 ])
52
53 AC_REQUIRE([AC_C_RESTRICT])
54
55 AC_CHECK_DECLS([wcsdup], [], [], [[
56 #include <wchar.h>
57 ]])
58 if test $ac_cv_have_decl_wcsdup = no; then
59 HAVE_DECL_WCSDUP=0
60 fi
61])
62
63dnl Check whether <wchar.h> is usable at all.
64AC_DEFUN([gl_WCHAR_H_INLINE_OK],
65[
66 dnl Test whether <wchar.h> suffers due to the transition from '__inline' to
67 dnl 'gnu_inline'. See <https://sourceware.org/bugzilla/show_bug.cgi?id=4022>
68 dnl and <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=42440>. In summary,
69 dnl glibc version 2.5 or older, together with gcc version 4.3 or newer and
70 dnl the option -std=c99 or -std=gnu99, leads to a broken <wchar.h>.
71 AC_REQUIRE([AC_CANONICAL_HOST])
72 AC_CACHE_CHECK([whether <wchar.h> uses 'inline' correctly],
73 [gl_cv_header_wchar_h_correct_inline],
74 [gl_cv_header_wchar_h_correct_inline=yes
75 case "$host_os" in
76 *-gnu* | gnu*)
77 AC_LANG_CONFTEST([
78 AC_LANG_SOURCE([[
79 #define wcstod renamed_wcstod
80 #include <wchar.h>
81 extern int zero (void);
82 int main () { return zero(); }
83 ]])])
84 dnl Do not rename the object file from conftest.$ac_objext to
85 dnl conftest1.$ac_objext, as this will cause the link to fail on
86 dnl z/OS when using the XPLINK object format (due to duplicate
87 dnl CSECT names). Instead, temporarily redefine $ac_compile so
88 dnl that the object file has the latter name from the start.
89 save_ac_compile="$ac_compile"
90 ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest1/`
91 if echo '#include "conftest.c"' >conftest1.c \
92 && AC_TRY_EVAL([ac_compile]); then
93 AC_LANG_CONFTEST([
94 AC_LANG_SOURCE([[
95 #define wcstod renamed_wcstod
96 #include <wchar.h>
97 int zero (void) { return 0; }
98 ]])])
99 dnl See note above about renaming object files.
100 ac_compile=`echo "$save_ac_compile" | sed s/conftest/conftest2/`
101 if echo '#include "conftest.c"' >conftest2.c \
102 && AC_TRY_EVAL([ac_compile]); then
103 if $CC -o conftest$ac_exeext $CFLAGS $LDFLAGS conftest1.$ac_objext conftest2.$ac_objext $LIBS >&AS_MESSAGE_LOG_FD 2>&1; then
104 :
105 else
106 gl_cv_header_wchar_h_correct_inline=no
107 fi
108 fi
109 fi
110 ac_compile="$save_ac_compile"
111 rm -f conftest[12].c conftest[12].$ac_objext conftest$ac_exeext
112 ;;
113 esac
114 ])
115 if test $gl_cv_header_wchar_h_correct_inline = no; then
116 AC_MSG_ERROR([<wchar.h> cannot be used with this compiler ($CC $CFLAGS $CPPFLAGS).
117This is a known interoperability problem of glibc <= 2.5 with gcc >= 4.3 in
118C99 mode. You have four options:
119 - Add the flag -fgnu89-inline to CC and reconfigure, or
120 - Fix your include files, using parts of
121 <https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=b037a293a48718af30d706c2e18c929d0e69a621>, or
122 - Use a gcc version older than 4.3, or
123 - Don't use the flags -std=c99 or -std=gnu99.
124Configuration aborted.])
125 fi
126])
127
128# gl_WCHAR_MODULE_INDICATOR([modulename])
129# sets the shell variable that indicates the presence of the given module
130# to a C preprocessor expression that will evaluate to 1.
131# This macro invocation must not occur in macros that are AC_REQUIREd.
132AC_DEFUN([gl_WCHAR_MODULE_INDICATOR],
133[
134 dnl Ensure to expand the default settings once only.
135 gl_WCHAR_H_REQUIRE_DEFAULTS
136 gl_MODULE_INDICATOR_SET_VARIABLE([$1])
137 dnl Define it also as a C macro, for the benefit of the unit tests.
138 gl_MODULE_INDICATOR_FOR_TESTS([$1])
139])
140
141# Initializes the default values for AC_SUBSTed shell variables.
142# This macro must not be AC_REQUIREd. It must only be invoked, and only
143# outside of macros or in macros that are not AC_REQUIREd.
144AC_DEFUN([gl_WCHAR_H_REQUIRE_DEFAULTS],
145[
146 m4_defun(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS], [
147 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_BTOWC])
148 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCTOB])
149 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSINIT])
150 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRTOWC])
151 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBRLEN])
152 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSRTOWCS])
153 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MBSNRTOWCS])
154 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCRTOMB])
155 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRTOMBS])
156 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNRTOMBS])
157 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCWIDTH])
158 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCHR])
159 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCMP])
160 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMCPY])
161 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMMOVE])
162 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMPCPY])
163 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WMEMSET])
164 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSLEN])
165 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNLEN])
166 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCPY])
167 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPCPY])
168 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCPY])
169 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCPNCPY])
170 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCAT])
171 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCAT])
172 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCMP])
173 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCMP])
174 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCASECMP])
175 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSNCASECMP])
176 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCOLL])
177 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSXFRM])
178 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSDUP])
179 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCHR])
180 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSRCHR])
181 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSCSPN])
182 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSPN])
183 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSPBRK])
184 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSSTR])
185 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSTOK])
186 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSWIDTH])
187 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_WCSFTIME])
188 dnl Support Microsoft deprecated alias function names by default.
189 gl_MODULE_INDICATOR_INIT_VARIABLE([GNULIB_MDA_WCSDUP], [1])
190 ])
191 m4_require(GL_MODULE_INDICATOR_PREFIX[_WCHAR_H_MODULE_INDICATOR_DEFAULTS])
192 AC_REQUIRE([gl_WCHAR_H_DEFAULTS])
193])
194
195AC_DEFUN([gl_WCHAR_H_DEFAULTS],
196[
197 dnl Assume proper GNU behavior unless another module says otherwise.
198 HAVE_BTOWC=1; AC_SUBST([HAVE_BTOWC])
199 HAVE_MBSINIT=1; AC_SUBST([HAVE_MBSINIT])
200 HAVE_MBRTOWC=1; AC_SUBST([HAVE_MBRTOWC])
201 HAVE_MBRLEN=1; AC_SUBST([HAVE_MBRLEN])
202 HAVE_MBSRTOWCS=1; AC_SUBST([HAVE_MBSRTOWCS])
203 HAVE_MBSNRTOWCS=1; AC_SUBST([HAVE_MBSNRTOWCS])
204 HAVE_WCRTOMB=1; AC_SUBST([HAVE_WCRTOMB])
205 HAVE_WCSRTOMBS=1; AC_SUBST([HAVE_WCSRTOMBS])
206 HAVE_WCSNRTOMBS=1; AC_SUBST([HAVE_WCSNRTOMBS])
207 HAVE_WMEMCHR=1; AC_SUBST([HAVE_WMEMCHR])
208 HAVE_WMEMCMP=1; AC_SUBST([HAVE_WMEMCMP])
209 HAVE_WMEMCPY=1; AC_SUBST([HAVE_WMEMCPY])
210 HAVE_WMEMMOVE=1; AC_SUBST([HAVE_WMEMMOVE])
211 HAVE_WMEMPCPY=1; AC_SUBST([HAVE_WMEMPCPY])
212 HAVE_WMEMSET=1; AC_SUBST([HAVE_WMEMSET])
213 HAVE_WCSLEN=1; AC_SUBST([HAVE_WCSLEN])
214 HAVE_WCSNLEN=1; AC_SUBST([HAVE_WCSNLEN])
215 HAVE_WCSCPY=1; AC_SUBST([HAVE_WCSCPY])
216 HAVE_WCPCPY=1; AC_SUBST([HAVE_WCPCPY])
217 HAVE_WCSNCPY=1; AC_SUBST([HAVE_WCSNCPY])
218 HAVE_WCPNCPY=1; AC_SUBST([HAVE_WCPNCPY])
219 HAVE_WCSCAT=1; AC_SUBST([HAVE_WCSCAT])
220 HAVE_WCSNCAT=1; AC_SUBST([HAVE_WCSNCAT])
221 HAVE_WCSCMP=1; AC_SUBST([HAVE_WCSCMP])
222 HAVE_WCSNCMP=1; AC_SUBST([HAVE_WCSNCMP])
223 HAVE_WCSCASECMP=1; AC_SUBST([HAVE_WCSCASECMP])
224 HAVE_WCSNCASECMP=1; AC_SUBST([HAVE_WCSNCASECMP])
225 HAVE_WCSCOLL=1; AC_SUBST([HAVE_WCSCOLL])
226 HAVE_WCSXFRM=1; AC_SUBST([HAVE_WCSXFRM])
227 HAVE_WCSDUP=1; AC_SUBST([HAVE_WCSDUP])
228 HAVE_WCSCHR=1; AC_SUBST([HAVE_WCSCHR])
229 HAVE_WCSRCHR=1; AC_SUBST([HAVE_WCSRCHR])
230 HAVE_WCSCSPN=1; AC_SUBST([HAVE_WCSCSPN])
231 HAVE_WCSSPN=1; AC_SUBST([HAVE_WCSSPN])
232 HAVE_WCSPBRK=1; AC_SUBST([HAVE_WCSPBRK])
233 HAVE_WCSSTR=1; AC_SUBST([HAVE_WCSSTR])
234 HAVE_WCSTOK=1; AC_SUBST([HAVE_WCSTOK])
235 HAVE_WCSWIDTH=1; AC_SUBST([HAVE_WCSWIDTH])
236 HAVE_WCSFTIME=1; AC_SUBST([HAVE_WCSFTIME])
237 HAVE_DECL_WCTOB=1; AC_SUBST([HAVE_DECL_WCTOB])
238 HAVE_DECL_WCSDUP=1; AC_SUBST([HAVE_DECL_WCSDUP])
239 HAVE_DECL_WCWIDTH=1; AC_SUBST([HAVE_DECL_WCWIDTH])
240 REPLACE_MBSTATE_T=0; AC_SUBST([REPLACE_MBSTATE_T])
241 REPLACE_BTOWC=0; AC_SUBST([REPLACE_BTOWC])
242 REPLACE_WCTOB=0; AC_SUBST([REPLACE_WCTOB])
243 REPLACE_MBSINIT=0; AC_SUBST([REPLACE_MBSINIT])
244 REPLACE_MBRTOWC=0; AC_SUBST([REPLACE_MBRTOWC])
245 REPLACE_MBRLEN=0; AC_SUBST([REPLACE_MBRLEN])
246 REPLACE_MBSRTOWCS=0; AC_SUBST([REPLACE_MBSRTOWCS])
247 REPLACE_MBSNRTOWCS=0; AC_SUBST([REPLACE_MBSNRTOWCS])
248 REPLACE_WCRTOMB=0; AC_SUBST([REPLACE_WCRTOMB])
249 REPLACE_WCSRTOMBS=0; AC_SUBST([REPLACE_WCSRTOMBS])
250 REPLACE_WCSNRTOMBS=0; AC_SUBST([REPLACE_WCSNRTOMBS])
251 REPLACE_WCWIDTH=0; AC_SUBST([REPLACE_WCWIDTH])
252 REPLACE_WCSWIDTH=0; AC_SUBST([REPLACE_WCSWIDTH])
253 REPLACE_WCSFTIME=0; AC_SUBST([REPLACE_WCSFTIME])
254 REPLACE_WCSTOK=0; AC_SUBST([REPLACE_WCSTOK])
255])
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette