diff options
-rw-r--r-- | .gitignore | 9 | ||||
-rwxr-xr-x | bootstrap | 18 | ||||
-rw-r--r-- | build-aux/config.rpath | 684 | ||||
-rw-r--r-- | m4/extern-inline.m4 | 114 | ||||
-rw-r--r-- | m4/intl-thread-locale.m4 | 219 |
5 files changed, 1042 insertions, 2 deletions
@@ -14,7 +14,14 @@ config.rpath | |||
14 | /config.log | 14 | /config.log |
15 | /app.info | 15 | /app.info |
16 | /debug | 16 | /debug |
17 | /build-aux | 17 | /build-aux/texinfo.tex |
18 | /build-aux/config.sub | ||
19 | /build-aux/depcomp | ||
20 | /build-aux/install-sh | ||
21 | /build-aux/ltmain.sh | ||
22 | /build-aux/mdate-sh | ||
23 | /build-aux/test-driver | ||
24 | /build-aux/config.guess | ||
18 | /exclude | 25 | /exclude |
19 | /autom4te.cache | 26 | /autom4te.cache |
20 | /scripts | 27 | /scripts |
@@ -27,7 +27,23 @@ else | |||
27 | fi | 27 | fi |
28 | 28 | ||
29 | if existence libtool || existence libtoolize || existence glibtoolize || existence slibtool; then | 29 | if existence libtool || existence libtoolize || existence glibtoolize || existence slibtool; then |
30 | autoreconf -I m4 -i ${1+"$@"} | 30 | echo "Running autotools..." |
31 | aclocal -I m4 --install && \ | ||
32 | libtoolize -c -i -v && \ | ||
33 | autoconf && \ | ||
34 | autoheader && \ | ||
35 | automake -a -c --gnu | ||
36 | if test $? -ne 0 || ! test -x configure || ! test -f Makefile.in ; then | ||
37 | echo "Autotools failed, retrying with autoreconf..." | ||
38 | if ! autoreconf -i ${1+"$@"} ; then | ||
39 | echo "Failed to autoreconf, retrying with force install..." | ||
40 | if ! autoreconf -i -f ${1+"$@"} ; then | ||
41 | echo "*** Failed to create 'configure' and other autotools generated files. ***" >&2 | ||
42 | exit 1 | ||
43 | fi | ||
44 | fi | ||
45 | fi | ||
46 | echo "The ${bs_scrdir-.}/configure is ready to run." | ||
31 | else | 47 | else |
32 | echo "*** No libtoolize (libtool) or libtool found, please install it ***" >&2; | 48 | echo "*** No libtoolize (libtool) or libtool found, please install it ***" >&2; |
33 | exit 1 | 49 | exit 1 |
diff --git a/build-aux/config.rpath b/build-aux/config.rpath new file mode 100644 index 00000000..98183ff2 --- /dev/null +++ b/build-aux/config.rpath | |||
@@ -0,0 +1,684 @@ | |||
1 | #! /bin/sh | ||
2 | # Output a system dependent set of variables, describing how to set the | ||
3 | # run time search path of shared libraries in an executable. | ||
4 | # | ||
5 | # Copyright 1996-2016 Free Software Foundation, Inc. | ||
6 | # Taken from GNU libtool, 2001 | ||
7 | # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 | ||
8 | # | ||
9 | # This file is free software; the Free Software Foundation gives | ||
10 | # unlimited permission to copy and/or distribute it, with or without | ||
11 | # modifications, as long as this notice is preserved. | ||
12 | # | ||
13 | # The first argument passed to this file is the canonical host specification, | ||
14 | # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM | ||
15 | # or | ||
16 | # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM | ||
17 | # The environment variables CC, GCC, LDFLAGS, LD, with_gnu_ld | ||
18 | # should be set by the caller. | ||
19 | # | ||
20 | # The set of defined variables is at the end of this script. | ||
21 | |||
22 | # Known limitations: | ||
23 | # - On IRIX 6.5 with CC="cc", the run time search patch must not be longer | ||
24 | # than 256 bytes, otherwise the compiler driver will dump core. The only | ||
25 | # known workaround is to choose shorter directory names for the build | ||
26 | # directory and/or the installation directory. | ||
27 | |||
28 | # All known linkers require a '.a' archive for static linking (except MSVC, | ||
29 | # which needs '.lib'). | ||
30 | libext=a | ||
31 | shrext=.so | ||
32 | |||
33 | host="$1" | ||
34 | host_cpu=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` | ||
35 | host_vendor=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` | ||
36 | host_os=`echo "$host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` | ||
37 | |||
38 | # Code taken from libtool.m4's _LT_CC_BASENAME. | ||
39 | |||
40 | for cc_temp in $CC""; do | ||
41 | case $cc_temp in | ||
42 | compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; | ||
43 | distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; | ||
44 | \-*) ;; | ||
45 | *) break;; | ||
46 | esac | ||
47 | done | ||
48 | cc_basename=`echo "$cc_temp" | sed -e 's%^.*/%%'` | ||
49 | |||
50 | # Code taken from libtool.m4's _LT_COMPILER_PIC. | ||
51 | |||
52 | wl= | ||
53 | if test "$GCC" = yes; then | ||
54 | wl='-Wl,' | ||
55 | else | ||
56 | case "$host_os" in | ||
57 | aix*) | ||
58 | wl='-Wl,' | ||
59 | ;; | ||
60 | mingw* | cygwin* | pw32* | os2* | cegcc*) | ||
61 | ;; | ||
62 | hpux9* | hpux10* | hpux11*) | ||
63 | wl='-Wl,' | ||
64 | ;; | ||
65 | irix5* | irix6* | nonstopux*) | ||
66 | wl='-Wl,' | ||
67 | ;; | ||
68 | linux* | k*bsd*-gnu | kopensolaris*-gnu) | ||
69 | case $cc_basename in | ||
70 | ecc*) | ||
71 | wl='-Wl,' | ||
72 | ;; | ||
73 | icc* | ifort*) | ||
74 | wl='-Wl,' | ||
75 | ;; | ||
76 | lf95*) | ||
77 | wl='-Wl,' | ||
78 | ;; | ||
79 | nagfor*) | ||
80 | wl='-Wl,-Wl,,' | ||
81 | ;; | ||
82 | pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) | ||
83 | wl='-Wl,' | ||
84 | ;; | ||
85 | ccc*) | ||
86 | wl='-Wl,' | ||
87 | ;; | ||
88 | xl* | bgxl* | bgf* | mpixl*) | ||
89 | wl='-Wl,' | ||
90 | ;; | ||
91 | como) | ||
92 | wl='-lopt=' | ||
93 | ;; | ||
94 | *) | ||
95 | case `$CC -V 2>&1 | sed 5q` in | ||
96 | *Sun\ F* | *Sun*Fortran*) | ||
97 | wl= | ||
98 | ;; | ||
99 | *Sun\ C*) | ||
100 | wl='-Wl,' | ||
101 | ;; | ||
102 | esac | ||
103 | ;; | ||
104 | esac | ||
105 | ;; | ||
106 | newsos6) | ||
107 | ;; | ||
108 | *nto* | *qnx*) | ||
109 | ;; | ||
110 | osf3* | osf4* | osf5*) | ||
111 | wl='-Wl,' | ||
112 | ;; | ||
113 | rdos*) | ||
114 | ;; | ||
115 | solaris*) | ||
116 | case $cc_basename in | ||
117 | f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) | ||
118 | wl='-Qoption ld ' | ||
119 | ;; | ||
120 | *) | ||
121 | wl='-Wl,' | ||
122 | ;; | ||
123 | esac | ||
124 | ;; | ||
125 | sunos4*) | ||
126 | wl='-Qoption ld ' | ||
127 | ;; | ||
128 | sysv4 | sysv4.2uw2* | sysv4.3*) | ||
129 | wl='-Wl,' | ||
130 | ;; | ||
131 | sysv4*MP*) | ||
132 | ;; | ||
133 | sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) | ||
134 | wl='-Wl,' | ||
135 | ;; | ||
136 | unicos*) | ||
137 | wl='-Wl,' | ||
138 | ;; | ||
139 | uts4*) | ||
140 | ;; | ||
141 | esac | ||
142 | fi | ||
143 | |||
144 | # Code taken from libtool.m4's _LT_LINKER_SHLIBS. | ||
145 | |||
146 | hardcode_libdir_flag_spec= | ||
147 | hardcode_libdir_separator= | ||
148 | hardcode_direct=no | ||
149 | hardcode_minus_L=no | ||
150 | |||
151 | case "$host_os" in | ||
152 | cygwin* | mingw* | pw32* | cegcc*) | ||
153 | # FIXME: the MSVC++ port hasn't been tested in a loooong time | ||
154 | # When not using gcc, we currently assume that we are using | ||
155 | # Microsoft Visual C++. | ||
156 | if test "$GCC" != yes; then | ||
157 | with_gnu_ld=no | ||
158 | fi | ||
159 | ;; | ||
160 | interix*) | ||
161 | # we just hope/assume this is gcc and not c89 (= MSVC++) | ||
162 | with_gnu_ld=yes | ||
163 | ;; | ||
164 | openbsd*) | ||
165 | with_gnu_ld=no | ||
166 | ;; | ||
167 | esac | ||
168 | |||
169 | ld_shlibs=yes | ||
170 | if test "$with_gnu_ld" = yes; then | ||
171 | # Set some defaults for GNU ld with shared library support. These | ||
172 | # are reset later if shared libraries are not supported. Putting them | ||
173 | # here allows them to be overridden if necessary. | ||
174 | # Unlike libtool, we use -rpath here, not --rpath, since the documented | ||
175 | # option of GNU ld is called -rpath, not --rpath. | ||
176 | hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' | ||
177 | case "$host_os" in | ||
178 | aix[3-9]*) | ||
179 | # On AIX/PPC, the GNU linker is very broken | ||
180 | if test "$host_cpu" != ia64; then | ||
181 | ld_shlibs=no | ||
182 | fi | ||
183 | ;; | ||
184 | amigaos*) | ||
185 | case "$host_cpu" in | ||
186 | powerpc) | ||
187 | ;; | ||
188 | m68k) | ||
189 | hardcode_libdir_flag_spec='-L$libdir' | ||
190 | hardcode_minus_L=yes | ||
191 | ;; | ||
192 | esac | ||
193 | ;; | ||
194 | beos*) | ||
195 | if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then | ||
196 | : | ||
197 | else | ||
198 | ld_shlibs=no | ||
199 | fi | ||
200 | ;; | ||
201 | cygwin* | mingw* | pw32* | cegcc*) | ||
202 | # hardcode_libdir_flag_spec is actually meaningless, as there is | ||
203 | # no search path for DLLs. | ||
204 | hardcode_libdir_flag_spec='-L$libdir' | ||
205 | if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then | ||
206 | : | ||
207 | else | ||
208 | ld_shlibs=no | ||
209 | fi | ||
210 | ;; | ||
211 | haiku*) | ||
212 | ;; | ||
213 | interix[3-9]*) | ||
214 | hardcode_direct=no | ||
215 | hardcode_libdir_flag_spec='${wl}-rpath,$libdir' | ||
216 | ;; | ||
217 | gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) | ||
218 | if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then | ||
219 | : | ||
220 | else | ||
221 | ld_shlibs=no | ||
222 | fi | ||
223 | ;; | ||
224 | netbsd*) | ||
225 | ;; | ||
226 | solaris*) | ||
227 | if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then | ||
228 | ld_shlibs=no | ||
229 | elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then | ||
230 | : | ||
231 | else | ||
232 | ld_shlibs=no | ||
233 | fi | ||
234 | ;; | ||
235 | sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) | ||
236 | case `$LD -v 2>&1` in | ||
237 | *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) | ||
238 | ld_shlibs=no | ||
239 | ;; | ||
240 | *) | ||
241 | if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then | ||
242 | hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' | ||
243 | else | ||
244 | ld_shlibs=no | ||
245 | fi | ||
246 | ;; | ||
247 | esac | ||
248 | ;; | ||
249 | sunos4*) | ||
250 | hardcode_direct=yes | ||
251 | ;; | ||
252 | *) | ||
253 | if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then | ||
254 | : | ||
255 | else | ||
256 | ld_shlibs=no | ||
257 | fi | ||
258 | ;; | ||
259 | esac | ||
260 | if test "$ld_shlibs" = no; then | ||
261 | hardcode_libdir_flag_spec= | ||
262 | fi | ||
263 | else | ||
264 | case "$host_os" in | ||
265 | aix3*) | ||
266 | # Note: this linker hardcodes the directories in LIBPATH if there | ||
267 | # are no directories specified by -L. | ||
268 | hardcode_minus_L=yes | ||
269 | if test "$GCC" = yes; then | ||
270 | # Neither direct hardcoding nor static linking is supported with a | ||
271 | # broken collect2. | ||
272 | hardcode_direct=unsupported | ||
273 | fi | ||
274 | ;; | ||
275 | aix[4-9]*) | ||
276 | if test "$host_cpu" = ia64; then | ||
277 | # On IA64, the linker does run time linking by default, so we don't | ||
278 | # have to do anything special. | ||
279 | aix_use_runtimelinking=no | ||
280 | else | ||
281 | aix_use_runtimelinking=no | ||
282 | # Test if we are trying to use run time linking or normal | ||
283 | # AIX style linking. If -brtl is somewhere in LDFLAGS, we | ||
284 | # need to do runtime linking. | ||
285 | case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) | ||
286 | for ld_flag in $LDFLAGS; do | ||
287 | if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then | ||
288 | aix_use_runtimelinking=yes | ||
289 | break | ||
290 | fi | ||
291 | done | ||
292 | ;; | ||
293 | esac | ||
294 | fi | ||
295 | hardcode_direct=yes | ||
296 | hardcode_libdir_separator=':' | ||
297 | if test "$GCC" = yes; then | ||
298 | case $host_os in aix4.[012]|aix4.[012].*) | ||
299 | collect2name=`${CC} -print-prog-name=collect2` | ||
300 | if test -f "$collect2name" && \ | ||
301 | strings "$collect2name" | grep resolve_lib_name >/dev/null | ||
302 | then | ||
303 | # We have reworked collect2 | ||
304 | : | ||
305 | else | ||
306 | # We have old collect2 | ||
307 | hardcode_direct=unsupported | ||
308 | hardcode_minus_L=yes | ||
309 | hardcode_libdir_flag_spec='-L$libdir' | ||
310 | hardcode_libdir_separator= | ||
311 | fi | ||
312 | ;; | ||
313 | esac | ||
314 | fi | ||
315 | # Begin _LT_AC_SYS_LIBPATH_AIX. | ||
316 | echo 'int main () { return 0; }' > conftest.c | ||
317 | ${CC} ${LDFLAGS} conftest.c -o conftest | ||
318 | aix_libpath=`dump -H conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } | ||
319 | }'` | ||
320 | if test -z "$aix_libpath"; then | ||
321 | aix_libpath=`dump -HX64 conftest 2>/dev/null | sed -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } | ||
322 | }'` | ||
323 | fi | ||
324 | if test -z "$aix_libpath"; then | ||
325 | aix_libpath="/usr/lib:/lib" | ||
326 | fi | ||
327 | rm -f conftest.c conftest | ||
328 | # End _LT_AC_SYS_LIBPATH_AIX. | ||
329 | if test "$aix_use_runtimelinking" = yes; then | ||
330 | hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" | ||
331 | else | ||
332 | if test "$host_cpu" = ia64; then | ||
333 | hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' | ||
334 | else | ||
335 | hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" | ||
336 | fi | ||
337 | fi | ||
338 | ;; | ||
339 | amigaos*) | ||
340 | case "$host_cpu" in | ||
341 | powerpc) | ||
342 | ;; | ||
343 | m68k) | ||
344 | hardcode_libdir_flag_spec='-L$libdir' | ||
345 | hardcode_minus_L=yes | ||
346 | ;; | ||
347 | esac | ||
348 | ;; | ||
349 | bsdi[45]*) | ||
350 | ;; | ||
351 | cygwin* | mingw* | pw32* | cegcc*) | ||
352 | # When not using gcc, we currently assume that we are using | ||
353 | # Microsoft Visual C++. | ||
354 | # hardcode_libdir_flag_spec is actually meaningless, as there is | ||
355 | # no search path for DLLs. | ||
356 | hardcode_libdir_flag_spec=' ' | ||
357 | libext=lib | ||
358 | ;; | ||
359 | darwin* | rhapsody*) | ||
360 | hardcode_direct=no | ||
361 | if { case $cc_basename in ifort*) true;; *) test "$GCC" = yes;; esac; }; then | ||
362 | : | ||
363 | else | ||
364 | ld_shlibs=no | ||
365 | fi | ||
366 | ;; | ||
367 | dgux*) | ||
368 | hardcode_libdir_flag_spec='-L$libdir' | ||
369 | ;; | ||
370 | freebsd2.[01]*) | ||
371 | hardcode_direct=yes | ||
372 | hardcode_minus_L=yes | ||
373 | ;; | ||
374 | freebsd* | dragonfly*) | ||
375 | hardcode_libdir_flag_spec='-R$libdir' | ||
376 | hardcode_direct=yes | ||
377 | ;; | ||
378 | hpux9*) | ||
379 | hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' | ||
380 | hardcode_libdir_separator=: | ||
381 | hardcode_direct=yes | ||
382 | # hardcode_minus_L: Not really in the search PATH, | ||
383 | # but as the default location of the library. | ||
384 | hardcode_minus_L=yes | ||
385 | ;; | ||
386 | hpux10*) | ||
387 | if test "$with_gnu_ld" = no; then | ||
388 | hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' | ||
389 | hardcode_libdir_separator=: | ||
390 | hardcode_direct=yes | ||
391 | # hardcode_minus_L: Not really in the search PATH, | ||
392 | # but as the default location of the library. | ||
393 | hardcode_minus_L=yes | ||
394 | fi | ||
395 | ;; | ||
396 | hpux11*) | ||
397 | if test "$with_gnu_ld" = no; then | ||
398 | hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' | ||
399 | hardcode_libdir_separator=: | ||
400 | case $host_cpu in | ||
401 | hppa*64*|ia64*) | ||
402 | hardcode_direct=no | ||
403 | ;; | ||
404 | *) | ||
405 | hardcode_direct=yes | ||
406 | # hardcode_minus_L: Not really in the search PATH, | ||
407 | # but as the default location of the library. | ||
408 | hardcode_minus_L=yes | ||
409 | ;; | ||
410 | esac | ||
411 | fi | ||
412 | ;; | ||
413 | irix5* | irix6* | nonstopux*) | ||
414 | hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' | ||
415 | hardcode_libdir_separator=: | ||
416 | ;; | ||
417 | netbsd*) | ||
418 | hardcode_libdir_flag_spec='-R$libdir' | ||
419 | hardcode_direct=yes | ||
420 | ;; | ||
421 | newsos6) | ||
422 | hardcode_direct=yes | ||
423 | hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' | ||
424 | hardcode_libdir_separator=: | ||
425 | ;; | ||
426 | *nto* | *qnx*) | ||
427 | ;; | ||
428 | openbsd*) | ||
429 | if test -f /usr/libexec/ld.so; then | ||
430 | hardcode_direct=yes | ||
431 | if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then | ||
432 | hardcode_libdir_flag_spec='${wl}-rpath,$libdir' | ||
433 | else | ||
434 | case "$host_os" in | ||
435 | openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) | ||
436 | hardcode_libdir_flag_spec='-R$libdir' | ||
437 | ;; | ||
438 | *) | ||
439 | hardcode_libdir_flag_spec='${wl}-rpath,$libdir' | ||
440 | ;; | ||
441 | esac | ||
442 | fi | ||
443 | else | ||
444 | ld_shlibs=no | ||
445 | fi | ||
446 | ;; | ||
447 | os2*) | ||
448 | hardcode_libdir_flag_spec='-L$libdir' | ||
449 | hardcode_minus_L=yes | ||
450 | ;; | ||
451 | osf3*) | ||
452 | hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' | ||
453 | hardcode_libdir_separator=: | ||
454 | ;; | ||
455 | osf4* | osf5*) | ||
456 | if test "$GCC" = yes; then | ||
457 | hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' | ||
458 | else | ||
459 | # Both cc and cxx compiler support -rpath directly | ||
460 | hardcode_libdir_flag_spec='-rpath $libdir' | ||
461 | fi | ||
462 | hardcode_libdir_separator=: | ||
463 | ;; | ||
464 | solaris*) | ||
465 | hardcode_libdir_flag_spec='-R$libdir' | ||
466 | ;; | ||
467 | sunos4*) | ||
468 | hardcode_libdir_flag_spec='-L$libdir' | ||
469 | hardcode_direct=yes | ||
470 | hardcode_minus_L=yes | ||
471 | ;; | ||
472 | sysv4) | ||
473 | case $host_vendor in | ||
474 | sni) | ||
475 | hardcode_direct=yes # is this really true??? | ||
476 | ;; | ||
477 | siemens) | ||
478 | hardcode_direct=no | ||
479 | ;; | ||
480 | motorola) | ||
481 | hardcode_direct=no #Motorola manual says yes, but my tests say they lie | ||
482 | ;; | ||
483 | esac | ||
484 | ;; | ||
485 | sysv4.3*) | ||
486 | ;; | ||
487 | sysv4*MP*) | ||
488 | if test -d /usr/nec; then | ||
489 | ld_shlibs=yes | ||
490 | fi | ||
491 | ;; | ||
492 | sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) | ||
493 | ;; | ||
494 | sysv5* | sco3.2v5* | sco5v6*) | ||
495 | hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' | ||
496 | hardcode_libdir_separator=':' | ||
497 | ;; | ||
498 | uts4*) | ||
499 | hardcode_libdir_flag_spec='-L$libdir' | ||
500 | ;; | ||
501 | *) | ||
502 | ld_shlibs=no | ||
503 | ;; | ||
504 | esac | ||
505 | fi | ||
506 | |||
507 | # Check dynamic linker characteristics | ||
508 | # Code taken from libtool.m4's _LT_SYS_DYNAMIC_LINKER. | ||
509 | # Unlike libtool.m4, here we don't care about _all_ names of the library, but | ||
510 | # only about the one the linker finds when passed -lNAME. This is the last | ||
511 | # element of library_names_spec in libtool.m4, or possibly two of them if the | ||
512 | # linker has special search rules. | ||
513 | library_names_spec= # the last element of library_names_spec in libtool.m4 | ||
514 | libname_spec='lib$name' | ||
515 | case "$host_os" in | ||
516 | aix3*) | ||
517 | library_names_spec='$libname.a' | ||
518 | ;; | ||
519 | aix[4-9]*) | ||
520 | library_names_spec='$libname$shrext' | ||
521 | ;; | ||
522 | amigaos*) | ||
523 | case "$host_cpu" in | ||
524 | powerpc*) | ||
525 | library_names_spec='$libname$shrext' ;; | ||
526 | m68k) | ||
527 | library_names_spec='$libname.a' ;; | ||
528 | esac | ||
529 | ;; | ||
530 | beos*) | ||
531 | library_names_spec='$libname$shrext' | ||
532 | ;; | ||
533 | bsdi[45]*) | ||
534 | library_names_spec='$libname$shrext' | ||
535 | ;; | ||
536 | cygwin* | mingw* | pw32* | cegcc*) | ||
537 | shrext=.dll | ||
538 | library_names_spec='$libname.dll.a $libname.lib' | ||
539 | ;; | ||
540 | darwin* | rhapsody*) | ||
541 | shrext=.dylib | ||
542 | library_names_spec='$libname$shrext' | ||
543 | ;; | ||
544 | dgux*) | ||
545 | library_names_spec='$libname$shrext' | ||
546 | ;; | ||
547 | freebsd[23].*) | ||
548 | library_names_spec='$libname$shrext$versuffix' | ||
549 | ;; | ||
550 | freebsd* | dragonfly*) | ||
551 | library_names_spec='$libname$shrext' | ||
552 | ;; | ||
553 | gnu*) | ||
554 | library_names_spec='$libname$shrext' | ||
555 | ;; | ||
556 | haiku*) | ||
557 | library_names_spec='$libname$shrext' | ||
558 | ;; | ||
559 | hpux9* | hpux10* | hpux11*) | ||
560 | case $host_cpu in | ||
561 | ia64*) | ||
562 | shrext=.so | ||
563 | ;; | ||
564 | hppa*64*) | ||
565 | shrext=.sl | ||
566 | ;; | ||
567 | *) | ||
568 | shrext=.sl | ||
569 | ;; | ||
570 | esac | ||
571 | library_names_spec='$libname$shrext' | ||
572 | ;; | ||
573 | interix[3-9]*) | ||
574 | library_names_spec='$libname$shrext' | ||
575 | ;; | ||
576 | irix5* | irix6* | nonstopux*) | ||
577 | library_names_spec='$libname$shrext' | ||
578 | case "$host_os" in | ||
579 | irix5* | nonstopux*) | ||
580 | libsuff= shlibsuff= | ||
581 | ;; | ||
582 | *) | ||
583 | case $LD in | ||
584 | *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= ;; | ||
585 | *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 ;; | ||
586 | *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 ;; | ||
587 | *) libsuff= shlibsuff= ;; | ||
588 | esac | ||
589 | ;; | ||
590 | esac | ||
591 | ;; | ||
592 | linux*oldld* | linux*aout* | linux*coff*) | ||
593 | ;; | ||
594 | linux* | k*bsd*-gnu | kopensolaris*-gnu) | ||
595 | library_names_spec='$libname$shrext' | ||
596 | ;; | ||
597 | knetbsd*-gnu) | ||
598 | library_names_spec='$libname$shrext' | ||
599 | ;; | ||
600 | netbsd*) | ||
601 | library_names_spec='$libname$shrext' | ||
602 | ;; | ||
603 | newsos6) | ||
604 | library_names_spec='$libname$shrext' | ||
605 | ;; | ||
606 | *nto* | *qnx*) | ||
607 | library_names_spec='$libname$shrext' | ||
608 | ;; | ||
609 | openbsd*) | ||
610 | library_names_spec='$libname$shrext$versuffix' | ||
611 | ;; | ||
612 | os2*) | ||
613 | libname_spec='$name' | ||
614 | shrext=.dll | ||
615 | library_names_spec='$libname.a' | ||
616 | ;; | ||
617 | osf3* | osf4* | osf5*) | ||
618 | library_names_spec='$libname$shrext' | ||
619 | ;; | ||
620 | rdos*) | ||
621 | ;; | ||
622 | solaris*) | ||
623 | library_names_spec='$libname$shrext' | ||
624 | ;; | ||
625 | sunos4*) | ||
626 | library_names_spec='$libname$shrext$versuffix' | ||
627 | ;; | ||
628 | sysv4 | sysv4.3*) | ||
629 | library_names_spec='$libname$shrext' | ||
630 | ;; | ||
631 | sysv4*MP*) | ||
632 | library_names_spec='$libname$shrext' | ||
633 | ;; | ||
634 | sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) | ||
635 | library_names_spec='$libname$shrext' | ||
636 | ;; | ||
637 | tpf*) | ||
638 | library_names_spec='$libname$shrext' | ||
639 | ;; | ||
640 | uts4*) | ||
641 | library_names_spec='$libname$shrext' | ||
642 | ;; | ||
643 | esac | ||
644 | |||
645 | sed_quote_subst='s/\(["`$\\]\)/\\\1/g' | ||
646 | escaped_wl=`echo "X$wl" | sed -e 's/^X//' -e "$sed_quote_subst"` | ||
647 | shlibext=`echo "$shrext" | sed -e 's,^\.,,'` | ||
648 | escaped_libname_spec=`echo "X$libname_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` | ||
649 | escaped_library_names_spec=`echo "X$library_names_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` | ||
650 | escaped_hardcode_libdir_flag_spec=`echo "X$hardcode_libdir_flag_spec" | sed -e 's/^X//' -e "$sed_quote_subst"` | ||
651 | |||
652 | LC_ALL=C sed -e 's/^\([a-zA-Z0-9_]*\)=/acl_cv_\1=/' <<EOF | ||
653 | |||
654 | # How to pass a linker flag through the compiler. | ||
655 | wl="$escaped_wl" | ||
656 | |||
657 | # Static library suffix (normally "a"). | ||
658 | libext="$libext" | ||
659 | |||
660 | # Shared library suffix (normally "so"). | ||
661 | shlibext="$shlibext" | ||
662 | |||
663 | # Format of library name prefix. | ||
664 | libname_spec="$escaped_libname_spec" | ||
665 | |||
666 | # Library names that the linker finds when passed -lNAME. | ||
667 | library_names_spec="$escaped_library_names_spec" | ||
668 | |||
669 | # Flag to hardcode \$libdir into a binary during linking. | ||
670 | # This must work even if \$libdir does not exist. | ||
671 | hardcode_libdir_flag_spec="$escaped_hardcode_libdir_flag_spec" | ||
672 | |||
673 | # Whether we need a single -rpath flag with a separated argument. | ||
674 | hardcode_libdir_separator="$hardcode_libdir_separator" | ||
675 | |||
676 | # Set to yes if using DIR/libNAME.so during linking hardcodes DIR into the | ||
677 | # resulting binary. | ||
678 | hardcode_direct="$hardcode_direct" | ||
679 | |||
680 | # Set to yes if using the -LDIR flag during linking hardcodes DIR into the | ||
681 | # resulting binary. | ||
682 | hardcode_minus_L="$hardcode_minus_L" | ||
683 | |||
684 | EOF | ||
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4 new file mode 100644 index 00000000..a2acf126 --- /dev/null +++ b/m4/extern-inline.m4 | |||
@@ -0,0 +1,114 @@ | |||
1 | dnl 'extern inline' a la ISO C99. | ||
2 | |||
3 | dnl Copyright 2012-2021 Free Software Foundation, Inc. | ||
4 | dnl This file is free software; the Free Software Foundation | ||
5 | dnl gives unlimited permission to copy and/or distribute it, | ||
6 | dnl with or without modifications, as long as this notice is preserved. | ||
7 | |||
8 | AC_DEFUN([gl_EXTERN_INLINE], | ||
9 | [ | ||
10 | AH_VERBATIM([extern_inline], | ||
11 | [/* Please see the Gnulib manual for how to use these macros. | ||
12 | |||
13 | Suppress extern inline with HP-UX cc, as it appears to be broken; see | ||
14 | <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>. | ||
15 | |||
16 | Suppress extern inline with Sun C in standards-conformance mode, as it | ||
17 | mishandles inline functions that call each other. E.g., for 'inline void f | ||
18 | (void) { } inline void g (void) { f (); }', c99 incorrectly complains | ||
19 | 'reference to static identifier "f" in extern inline function'. | ||
20 | This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16. | ||
21 | |||
22 | Suppress extern inline (with or without __attribute__ ((__gnu_inline__))) | ||
23 | on configurations that mistakenly use 'static inline' to implement | ||
24 | functions or macros in standard C headers like <ctype.h>. For example, | ||
25 | if isdigit is mistakenly implemented via a static inline function, | ||
26 | a program containing an extern inline function that calls isdigit | ||
27 | may not work since the C standard prohibits extern inline functions | ||
28 | from calling static functions (ISO C 99 section 6.7.4.(3). | ||
29 | This bug is known to occur on: | ||
30 | |||
31 | OS X 10.8 and earlier; see: | ||
32 | https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html | ||
33 | |||
34 | DragonFly; see | ||
35 | http://muscles.dragonflybsd.org/bulk/clang-master-potential/20141111_102002/logs/ah-tty-0.3.12.log | ||
36 | |||
37 | FreeBSD; see: | ||
38 | https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html | ||
39 | |||
40 | OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and | ||
41 | for clang but remains for g++; see <https://trac.macports.org/ticket/41033>. | ||
42 | Assume DragonFly and FreeBSD will be similar. | ||
43 | |||
44 | GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | ||
45 | inline semantics, unless -fgnu89-inline is used. It defines a macro | ||
46 | __GNUC_STDC_INLINE__ to indicate this situation or a macro | ||
47 | __GNUC_GNU_INLINE__ to indicate the opposite situation. | ||
48 | GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline | ||
49 | semantics but warns, unless -fgnu89-inline is used: | ||
50 | warning: C99 inline functions are not supported; using GNU89 | ||
51 | warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute | ||
52 | It defines a macro __GNUC_GNU_INLINE__ to indicate this situation. | ||
53 | */ | ||
54 | #if (((defined __APPLE__ && defined __MACH__) \ | ||
55 | || defined __DragonFly__ || defined __FreeBSD__) \ | ||
56 | && (defined __header_inline \ | ||
57 | ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \ | ||
58 | && ! defined __clang__) \ | ||
59 | : ((! defined _DONT_USE_CTYPE_INLINE_ \ | ||
60 | && (defined __GNUC__ || defined __cplusplus)) \ | ||
61 | || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \ | ||
62 | && defined __GNUC__ && ! defined __cplusplus)))) | ||
63 | # define _GL_EXTERN_INLINE_STDHEADER_BUG | ||
64 | #endif | ||
65 | #if ((__GNUC__ \ | ||
66 | ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \ | ||
67 | : (199901L <= __STDC_VERSION__ \ | ||
68 | && !defined __HP_cc \ | ||
69 | && !defined __PGI \ | ||
70 | && !(defined __SUNPRO_C && __STDC__))) \ | ||
71 | && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) | ||
72 | # define _GL_INLINE inline | ||
73 | # define _GL_EXTERN_INLINE extern inline | ||
74 | # define _GL_EXTERN_INLINE_IN_USE | ||
75 | #elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \ | ||
76 | && !defined _GL_EXTERN_INLINE_STDHEADER_BUG) | ||
77 | # if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__ | ||
78 | /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */ | ||
79 | # define _GL_INLINE extern inline __attribute__ ((__gnu_inline__)) | ||
80 | # else | ||
81 | # define _GL_INLINE extern inline | ||
82 | # endif | ||
83 | # define _GL_EXTERN_INLINE extern | ||
84 | # define _GL_EXTERN_INLINE_IN_USE | ||
85 | #else | ||
86 | # define _GL_INLINE static _GL_UNUSED | ||
87 | # define _GL_EXTERN_INLINE static _GL_UNUSED | ||
88 | #endif | ||
89 | |||
90 | /* In GCC 4.6 (inclusive) to 5.1 (exclusive), | ||
91 | suppress bogus "no previous prototype for 'FOO'" | ||
92 | and "no previous declaration for 'FOO'" diagnostics, | ||
93 | when FOO is an inline function in the header; see | ||
94 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and | ||
95 | <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */ | ||
96 | #if __GNUC__ == 4 && 6 <= __GNUC_MINOR__ | ||
97 | # if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ | ||
98 | # define _GL_INLINE_HEADER_CONST_PRAGMA | ||
99 | # else | ||
100 | # define _GL_INLINE_HEADER_CONST_PRAGMA \ | ||
101 | _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"") | ||
102 | # endif | ||
103 | # define _GL_INLINE_HEADER_BEGIN \ | ||
104 | _Pragma ("GCC diagnostic push") \ | ||
105 | _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \ | ||
106 | _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \ | ||
107 | _GL_INLINE_HEADER_CONST_PRAGMA | ||
108 | # define _GL_INLINE_HEADER_END \ | ||
109 | _Pragma ("GCC diagnostic pop") | ||
110 | #else | ||
111 | # define _GL_INLINE_HEADER_BEGIN | ||
112 | # define _GL_INLINE_HEADER_END | ||
113 | #endif]) | ||
114 | ]) | ||
diff --git a/m4/intl-thread-locale.m4 b/m4/intl-thread-locale.m4 new file mode 100644 index 00000000..890fec00 --- /dev/null +++ b/m4/intl-thread-locale.m4 | |||
@@ -0,0 +1,219 @@ | |||
1 | # intl-thread-locale.m4 serial 9 | ||
2 | dnl Copyright (C) 2015-2021 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 | ||
7 | dnl This file can be used in projects which are not available under | ||
8 | dnl the GNU General Public License or the GNU Lesser General Public | ||
9 | dnl License but which still want to provide support for the GNU gettext | ||
10 | dnl functionality. | ||
11 | dnl Please note that the actual code of the GNU gettext library is covered | ||
12 | dnl by the GNU Lesser General Public License, and the rest of the GNU | ||
13 | dnl gettext package is covered by the GNU General Public License. | ||
14 | dnl They are *not* in the public domain. | ||
15 | |||
16 | dnl Check how to retrieve the name of a per-thread locale (POSIX locale_t). | ||
17 | dnl Sets gt_nameless_locales. | ||
18 | AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME], | ||
19 | [ | ||
20 | AC_REQUIRE([AC_CANONICAL_HOST]) | ||
21 | |||
22 | dnl Persuade Solaris <locale.h> to define 'locale_t'. | ||
23 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
24 | |||
25 | dnl Test whether uselocale() exists and works at all. | ||
26 | gt_FUNC_USELOCALE | ||
27 | |||
28 | dnl On OpenBSD >= 6.2, the locale_t type and the uselocale(), newlocale(), | ||
29 | dnl duplocale(), freelocale() functions exist but are effectively useless, | ||
30 | dnl because the locale_t value depends only on the LC_CTYPE category of the | ||
31 | dnl locale and furthermore contains only one bit of information (it | ||
32 | dnl distinguishes the "C" locale from the *.UTF-8 locales). See | ||
33 | dnl <https://cvsweb.openbsd.org/src/lib/libc/locale/newlocale.c?rev=1.1&content-type=text/x-cvsweb-markup>. | ||
34 | dnl In the setlocale() implementation they have thought about the programs | ||
35 | dnl that use the API ("Even though only LC_CTYPE has any effect in the | ||
36 | dnl OpenBSD base system, store complete information about the global locale, | ||
37 | dnl such that third-party software can access it"), but for uselocale() | ||
38 | dnl they did not think about the programs. | ||
39 | dnl In this situation, even the HAVE_NAMELESS_LOCALES support does not work. | ||
40 | dnl So, define HAVE_FAKE_LOCALES and disable all locale_t support. | ||
41 | case "$gt_cv_func_uselocale_works" in | ||
42 | *yes) | ||
43 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | ||
44 | AC_CACHE_CHECK([for fake locale system (OpenBSD)], | ||
45 | [gt_cv_locale_fake], | ||
46 | [AC_RUN_IFELSE( | ||
47 | [AC_LANG_SOURCE([[ | ||
48 | #include <locale.h> | ||
49 | #if HAVE_XLOCALE_H | ||
50 | # include <xlocale.h> | ||
51 | #endif | ||
52 | int main () | ||
53 | { | ||
54 | locale_t loc1, loc2; | ||
55 | if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) return 1; | ||
56 | if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL) return 1; | ||
57 | loc1 = newlocale (LC_ALL_MASK, "de_DE.UTF-8", (locale_t)0); | ||
58 | loc2 = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", (locale_t)0); | ||
59 | return !(loc1 == loc2); | ||
60 | }]])], | ||
61 | [gt_cv_locale_fake=yes], | ||
62 | [gt_cv_locale_fake=no], | ||
63 | [dnl Guess the locale system is fake only on OpenBSD. | ||
64 | case "$host_os" in | ||
65 | openbsd*) gt_cv_locale_fake="guessing yes" ;; | ||
66 | *) gt_cv_locale_fake="guessing no" ;; | ||
67 | esac | ||
68 | ]) | ||
69 | ]) | ||
70 | ;; | ||
71 | *) gt_cv_locale_fake=no ;; | ||
72 | esac | ||
73 | case "$gt_cv_locale_fake" in | ||
74 | *yes) | ||
75 | gt_fake_locales=yes | ||
76 | AC_DEFINE([HAVE_FAKE_LOCALES], [1], | ||
77 | [Define if the locale_t type contains insufficient information, as on OpenBSD.]) | ||
78 | ;; | ||
79 | *) | ||
80 | gt_fake_locales=no | ||
81 | ;; | ||
82 | esac | ||
83 | |||
84 | case "$gt_cv_func_uselocale_works" in | ||
85 | *yes) | ||
86 | AC_CACHE_CHECK([for Solaris 11.4 locale system], | ||
87 | [gt_cv_locale_solaris114], | ||
88 | [case "$host_os" in | ||
89 | solaris*) | ||
90 | dnl Test whether <locale.h> defines locale_t as a typedef of | ||
91 | dnl 'struct _LC_locale_t **' (whereas Illumos defines it as a | ||
92 | dnl typedef of 'struct _locale *'). | ||
93 | dnl Another possible test would be to include <sys/localedef.h> | ||
94 | dnl and test whether it defines the _LC_core_data_locale_t type. | ||
95 | dnl This type was added in Solaris 11.4. | ||
96 | AC_COMPILE_IFELSE( | ||
97 | [AC_LANG_PROGRAM([[ | ||
98 | #include <locale.h> | ||
99 | struct _LC_locale_t *x; | ||
100 | locale_t y; | ||
101 | ]], | ||
102 | [[*y = x;]])], | ||
103 | [gt_cv_locale_solaris114=yes], | ||
104 | [gt_cv_locale_solaris114=no]) | ||
105 | ;; | ||
106 | *) gt_cv_locale_solaris114=no ;; | ||
107 | esac | ||
108 | ]) | ||
109 | ;; | ||
110 | *) gt_cv_locale_solaris114=no ;; | ||
111 | esac | ||
112 | if test $gt_cv_locale_solaris114 = yes; then | ||
113 | AC_DEFINE([HAVE_SOLARIS114_LOCALES], [1], | ||
114 | [Define if the locale_t type is as on Solaris 11.4.]) | ||
115 | fi | ||
116 | |||
117 | dnl Solaris 12 will maybe provide getlocalename_l. If it does, it will | ||
118 | dnl improve the implementation of gl_locale_name_thread(), by removing | ||
119 | dnl the use of undocumented structures. | ||
120 | case "$gt_cv_func_uselocale_works" in | ||
121 | *yes) | ||
122 | AC_CHECK_FUNCS([getlocalename_l]) | ||
123 | ;; | ||
124 | esac | ||
125 | |||
126 | dnl This code is for platforms where the locale_t type does not provide access | ||
127 | dnl to the name of each locale category. This code has the drawback that it | ||
128 | dnl requires the gnulib overrides of 'newlocale', 'duplocale', 'freelocale', | ||
129 | dnl which is a problem for GNU libunistring. Therefore try hard to avoid | ||
130 | dnl enabling this code! | ||
131 | gt_nameless_locales=no | ||
132 | case "$host_os" in | ||
133 | dnl It's needed on AIX 7.2. | ||
134 | aix*) | ||
135 | gt_nameless_locales=yes | ||
136 | AC_DEFINE([HAVE_NAMELESS_LOCALES], [1], | ||
137 | [Define if the locale_t type does not contain the name of each locale category.]) | ||
138 | ;; | ||
139 | esac | ||
140 | |||
141 | dnl We cannot support uselocale() on platforms where the locale_t type is | ||
142 | dnl fake. So, set | ||
143 | dnl gt_good_uselocale = gt_working_uselocale && !gt_fake_locales. | ||
144 | if test $gt_working_uselocale = yes && test $gt_fake_locales = no; then | ||
145 | gt_good_uselocale=yes | ||
146 | AC_DEFINE([HAVE_GOOD_USELOCALE], [1], | ||
147 | [Define if the uselocale exists, may be safely called, and returns sufficient information.]) | ||
148 | else | ||
149 | gt_good_uselocale=no | ||
150 | fi | ||
151 | |||
152 | dnl Set gt_localename_enhances_locale_funcs to indicate whether localename.c | ||
153 | dnl overrides newlocale(), duplocale(), freelocale() to keep track of locale | ||
154 | dnl names. | ||
155 | if test $gt_good_uselocale = yes && test $gt_nameless_locales = yes; then | ||
156 | gt_localename_enhances_locale_funcs=yes | ||
157 | LOCALENAME_ENHANCE_LOCALE_FUNCS=1 | ||
158 | AC_DEFINE([LOCALENAME_ENHANCE_LOCALE_FUNCS], [1], | ||
159 | [Define if localename.c overrides newlocale(), duplocale(), freelocale().]) | ||
160 | else | ||
161 | gt_localename_enhances_locale_funcs=no | ||
162 | fi | ||
163 | ]) | ||
164 | |||
165 | dnl Tests whether uselocale() exists and is usable. | ||
166 | dnl Sets gt_working_uselocale and defines HAVE_WORKING_USELOCALE. | ||
167 | AC_DEFUN([gt_FUNC_USELOCALE], | ||
168 | [ | ||
169 | AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles | ||
170 | |||
171 | dnl Persuade glibc and Solaris <locale.h> to define 'locale_t'. | ||
172 | AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS]) | ||
173 | |||
174 | AC_CHECK_FUNCS_ONCE([uselocale]) | ||
175 | |||
176 | dnl On AIX 7.2, the uselocale() function is not documented and leads to | ||
177 | dnl crashes in subsequent setlocale() invocations. | ||
178 | dnl In 2019, some versions of z/OS lack the locale_t type and have a broken | ||
179 | dnl uselocale function. | ||
180 | if test $ac_cv_func_uselocale = yes; then | ||
181 | AC_CHECK_HEADERS_ONCE([xlocale.h]) | ||
182 | AC_CACHE_CHECK([whether uselocale works], | ||
183 | [gt_cv_func_uselocale_works], | ||
184 | [AC_RUN_IFELSE( | ||
185 | [AC_LANG_SOURCE([[ | ||
186 | #include <locale.h> | ||
187 | #if HAVE_XLOCALE_H | ||
188 | # include <xlocale.h> | ||
189 | #endif | ||
190 | locale_t loc1; | ||
191 | int main () | ||
192 | { | ||
193 | uselocale (NULL); | ||
194 | setlocale (LC_ALL, "en_US.UTF-8"); | ||
195 | return 0; | ||
196 | }]])], | ||
197 | [gt_cv_func_uselocale_works=yes], | ||
198 | [gt_cv_func_uselocale_works=no], | ||
199 | [# Guess no on AIX and z/OS, yes otherwise. | ||
200 | case "$host_os" in | ||
201 | aix* | openedition*) gt_cv_func_uselocale_works="guessing no" ;; | ||
202 | *) gt_cv_func_uselocale_works="guessing yes" ;; | ||
203 | esac | ||
204 | ]) | ||
205 | ]) | ||
206 | else | ||
207 | gt_cv_func_uselocale_works=no | ||
208 | fi | ||
209 | case "$gt_cv_func_uselocale_works" in | ||
210 | *yes) | ||
211 | gt_working_uselocale=yes | ||
212 | AC_DEFINE([HAVE_WORKING_USELOCALE], [1], | ||
213 | [Define if the uselocale function exists and may safely be called.]) | ||
214 | ;; | ||
215 | *) | ||
216 | gt_working_uselocale=no | ||
217 | ;; | ||
218 | esac | ||
219 | ]) | ||