1 # intl.m4 serial 32 (gettext-0.19.9)
2 dnl Copyright (C) 1995-2014, 2016-2018 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.
7 dnl This file can be used in projects which are not available under
8 dnl the GNU General Public License or the GNU Library General Public
9 dnl License but which still want to provide support for the GNU gettext
11 dnl Please note that the actual code of the GNU gettext library is covered
12 dnl by the GNU Library 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.
17 dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
18 dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
22 dnl Checks for all prerequisites of the intl subdirectory,
23 dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
24 dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
25 AC_DEFUN([AM_INTL_SUBDIR],
27 AC_REQUIRE([AC_PROG_INSTALL])dnl
28 AC_REQUIRE([AC_PROG_MKDIR_P])dnl
29 AC_REQUIRE([AC_PROG_CC])dnl
30 AC_REQUIRE([AC_CANONICAL_HOST])dnl
31 AC_REQUIRE([gt_GLIBC2])dnl
32 AC_REQUIRE([gl_VISIBILITY])dnl
33 AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
34 AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
35 AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
36 AC_REQUIRE([gt_TYPE_WINT_T])dnl
37 AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
38 AC_REQUIRE([gt_TYPE_INTMAX_T])
39 AC_REQUIRE([gt_PRINTF_POSIX])
40 AC_REQUIRE([gl_GLIBC21])dnl
41 AC_REQUIRE([gl_XSIZE])dnl
42 AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
43 AC_REQUIRE([gt_INTL_MACOSX])dnl
44 AC_REQUIRE([gl_EXTERN_INLINE])dnl
45 AC_REQUIRE([gt_GL_ATTRIBUTE])dnl
46 AC_REQUIRE([AC_C_FLEXIBLE_ARRAY_MEMBER])dnl
48 dnl In projects that use gnulib, use gl_PROG_AR_RANLIB.
49 dnl The '][' hides this use from 'aclocal'.
50 m4_ifdef([g][l_PROG_AR_RANLIB],
51 [AC_REQUIRE([g][l_PROG_AR_RANLIB])],
52 [AC_REQUIRE([AC_PROG_RANLIB])
53 dnl Use Automake-documented default values for AR and ARFLAGS, but prefer
54 dnl ${host}-ar over ar (useful for cross-compiling).
55 AC_CHECK_TOOL([AR], [ar], [ar])
56 if test -z "$ARFLAGS"; then
63 dnl Support for automake's --enable-silent-rules.
64 case "$enable_silent_rules" in
65 yes) INTL_DEFAULT_VERBOSITY=0;;
66 no) INTL_DEFAULT_VERBOSITY=1;;
67 *) INTL_DEFAULT_VERBOSITY=1;;
69 AC_SUBST([INTL_DEFAULT_VERBOSITY])
71 AC_CHECK_TYPE([ptrdiff_t], ,
72 [AC_DEFINE([ptrdiff_t], [long],
73 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
75 AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
76 AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
77 snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
79 dnl Use the _snprintf function only if it is declared (because on NetBSD it
80 dnl is defined as a weak alias of snprintf; we prefer to use the latter).
81 AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
83 dnl Use the *_unlocked functions only if they are declared.
84 dnl (because some of them were defined without being declared in Solaris
85 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
86 dnl on Solaris 2.5.1 to run on Solaris 2.6).
87 AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
89 case $gt_cv_func_printf_posix in
90 *yes) HAVE_POSIX_PRINTF=1 ;;
91 *) HAVE_POSIX_PRINTF=0 ;;
93 AC_SUBST([HAVE_POSIX_PRINTF])
94 if test "$ac_cv_func_asprintf" = yes; then
99 AC_SUBST([HAVE_ASPRINTF])
100 if test "$ac_cv_func_snprintf" = yes; then
105 AC_SUBST([HAVE_SNPRINTF])
106 if test "$ac_cv_func_newlocale" = yes; then
111 AC_SUBST([HAVE_NEWLOCALE])
112 if test "$ac_cv_func_wprintf" = yes; then
117 AC_SUBST([HAVE_WPRINTF])
122 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
123 dnl 1. when we install a shared library, we must arrange to export
124 dnl auxiliary pointer variables for every exported variable,
125 dnl 2. when we install a shared library and a static library simultaneously,
126 dnl the include file specifies __declspec(dllimport) and therefore we
127 dnl must arrange to define the auxiliary pointer variables for the
128 dnl exported variables _also_ in the static library.
129 if test "$enable_shared" = yes; then
131 mingw* | cygwin*) is_woe32dll=yes ;;
137 WOE32DLL=$is_woe32dll
140 dnl On mingw and Cygwin, we can activate special Makefile rules which add
141 dnl version information to the shared libraries and executables.
143 mingw* | cygwin*) is_woe32=yes ;;
148 if test $WOE32 = yes; then
149 dnl Check for a program that compiles Windows resource files.
150 AC_CHECK_TOOL([WINDRES], [windres])
153 dnl Rename some macros and functions used for locking.
155 #define __libc_lock_t gl_lock_t
156 #define __libc_lock_define gl_lock_define
157 #define __libc_lock_define_initialized gl_lock_define_initialized
158 #define __libc_lock_init gl_lock_init
159 #define __libc_lock_lock gl_lock_lock
160 #define __libc_lock_unlock gl_lock_unlock
161 #define __libc_lock_recursive_t gl_recursive_lock_t
162 #define __libc_lock_define_recursive gl_recursive_lock_define
163 #define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
164 #define __libc_lock_init_recursive gl_recursive_lock_init
165 #define __libc_lock_lock_recursive gl_recursive_lock_lock
166 #define __libc_lock_unlock_recursive gl_recursive_lock_unlock
167 #define glthread_in_use libintl_thread_in_use
168 #define glthread_lock_init_func libintl_lock_init_func
169 #define glthread_lock_lock_func libintl_lock_lock_func
170 #define glthread_lock_unlock_func libintl_lock_unlock_func
171 #define glthread_lock_destroy_func libintl_lock_destroy_func
172 #define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
173 #define glthread_rwlock_init_func libintl_rwlock_init_func
174 #define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
175 #define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
176 #define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
177 #define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
178 #define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
179 #define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
180 #define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
181 #define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
182 #define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
183 #define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
184 #define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
185 #define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
186 #define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
187 #define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
188 #define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
189 #define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
190 #define glthread_once_func libintl_once_func
191 #define glthread_once_singlethreaded libintl_once_singlethreaded
192 #define glthread_once_multithreaded libintl_once_multithreaded
197 dnl Checks for the core files of the intl subdirectory:
204 dnl hash-string.h hash-string.c
206 dnl libgnuintl.h.in (except the *printf stuff)
211 dnl plural-exp.h plural-exp.c
213 dnl Used by libglocale.
214 AC_DEFUN([gt_INTL_SUBDIR_CORE],
216 AC_REQUIRE([AC_C_INLINE])dnl
217 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
218 AC_REQUIRE([gl_AC_HEADER_STDINT_H])
219 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
220 AC_REQUIRE([AC_FUNC_MMAP])dnl
221 AC_REQUIRE([gt_INTDIV0])dnl
222 AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
223 AC_REQUIRE([gt_INTTYPES_PRI])dnl
224 AC_REQUIRE([gl_LOCK])dnl
228 [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
230 [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
231 [Define to 1 if the compiler understands __builtin_expect.])])
233 AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
234 AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
235 stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
236 argz_stringify argz_next __fsetlocking])
238 dnl Solaris 12 provides getlocalename_l, while Illumos doesn't have
239 dnl it nor the equivalent.
240 if test $ac_cv_func_uselocale = yes; then
241 AC_CHECK_FUNCS([getlocalename_l])
244 dnl Use the *_unlocked functions only if they are declared.
245 dnl (because some of them were defined without being declared in Solaris
246 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
247 dnl on Solaris 2.5.1 to run on Solaris 2.6).
248 AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
252 dnl intl/plural.c is generated from intl/plural.y. It requires bison,
253 dnl because plural.y uses bison specific features. It requires at least
254 dnl bison-2.7 for %define api.pure.
255 dnl bison is only needed for the maintainer (who touches plural.y). But in
256 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
257 dnl the rule in general Makefile. Now, some people carelessly touch the
258 dnl files or have a broken "make" program, hence the plural.c rule will
259 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
260 dnl present or too old.
261 AC_CHECK_PROGS([INTLBISON], [bison])
262 if test -z "$INTLBISON"; then
265 dnl Found it, now check the version.
266 AC_MSG_CHECKING([version of bison])
267 changequote(<<,>>)dnl
268 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
269 case $ac_prog_version in
270 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
273 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
274 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
276 AC_MSG_RESULT([$ac_prog_version])
278 if test $ac_verc_fail = yes; then
283 dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from
284 dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib.
285 AC_DEFUN([gt_GL_ATTRIBUTE], [
286 m4_ifndef([gl_[]COMMON],
287 AH_VERBATIM([gt_gl_attribute],
288 [/* Define as a marker that can be attached to declarations that might not
289 be used. This helps to reduce warnings, such as from
290 GCC -Wunused-parameter. */
292 # if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
293 # define _GL_UNUSED __attribute__ ((__unused__))
299 /* The __pure__ attribute was added in gcc 2.96. */
300 #ifndef _GL_ATTRIBUTE_PURE
301 # if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
302 # define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
304 # define _GL_ATTRIBUTE_PURE /* empty */