1 # intl.m4 serial 26 (gettext-0.19)
2 dnl Copyright (C) 1995-2014 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 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 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([AC_PROG_RANLIB])dnl
33 AC_REQUIRE([gl_VISIBILITY])dnl
34 AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
35 AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
36 AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
37 AC_REQUIRE([gt_TYPE_WINT_T])dnl
38 AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
39 AC_REQUIRE([gt_TYPE_INTMAX_T])
40 AC_REQUIRE([gt_PRINTF_POSIX])
41 AC_REQUIRE([gl_GLIBC21])dnl
42 AC_REQUIRE([gl_XSIZE])dnl
43 AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
44 AC_REQUIRE([gt_INTL_MACOSX])dnl
45 AC_REQUIRE([gl_EXTERN_INLINE])dnl
47 dnl Support for automake's --enable-silent-rules.
48 case "$enable_silent_rules" in
49 yes) INTL_DEFAULT_VERBOSITY=0;;
50 no) INTL_DEFAULT_VERBOSITY=1;;
51 *) INTL_DEFAULT_VERBOSITY=1;;
53 AC_SUBST([INTL_DEFAULT_VERBOSITY])
55 AC_CHECK_TYPE([ptrdiff_t], ,
56 [AC_DEFINE([ptrdiff_t], [long],
57 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
59 AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
60 AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
61 snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
63 dnl Use the _snprintf function only if it is declared (because on NetBSD it
64 dnl is defined as a weak alias of snprintf; we prefer to use the latter).
65 AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
67 dnl Use the *_unlocked functions only if they are declared.
68 dnl (because some of them were defined without being declared in Solaris
69 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
70 dnl on Solaris 2.5.1 to run on Solaris 2.6).
71 AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
73 case $gt_cv_func_printf_posix in
74 *yes) HAVE_POSIX_PRINTF=1 ;;
75 *) HAVE_POSIX_PRINTF=0 ;;
77 AC_SUBST([HAVE_POSIX_PRINTF])
78 if test "$ac_cv_func_asprintf" = yes; then
83 AC_SUBST([HAVE_ASPRINTF])
84 if test "$ac_cv_func_snprintf" = yes; then
89 AC_SUBST([HAVE_SNPRINTF])
90 if test "$ac_cv_func_newlocale" = yes; then
95 AC_SUBST([HAVE_NEWLOCALE])
96 if test "$ac_cv_func_wprintf" = yes; then
101 AC_SUBST([HAVE_WPRINTF])
106 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
107 dnl 1. when we install a shared library, we must arrange to export
108 dnl auxiliary pointer variables for every exported variable,
109 dnl 2. when we install a shared library and a static library simultaneously,
110 dnl the include file specifies __declspec(dllimport) and therefore we
111 dnl must arrange to define the auxiliary pointer variables for the
112 dnl exported variables _also_ in the static library.
113 if test "$enable_shared" = yes; then
115 mingw* | cygwin*) is_woe32dll=yes ;;
121 WOE32DLL=$is_woe32dll
124 dnl On mingw and Cygwin, we can activate special Makefile rules which add
125 dnl version information to the shared libraries and executables.
127 mingw* | cygwin*) is_woe32=yes ;;
132 if test $WOE32 = yes; then
133 dnl Check for a program that compiles Windows resource files.
134 AC_CHECK_TOOL([WINDRES], [windres])
137 dnl Determine whether when creating a library, "-lc" should be passed to
138 dnl libtool or not. On many platforms, it is required for the libtool option
139 dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
140 dnl in the *.la files - makes it impossible to create multithreaded programs,
141 dnl because libtool also reorders the -lc to come before the -pthread, and
142 dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
149 dnl Rename some macros and functions used for locking.
151 #define __libc_lock_t gl_lock_t
152 #define __libc_lock_define gl_lock_define
153 #define __libc_lock_define_initialized gl_lock_define_initialized
154 #define __libc_lock_init gl_lock_init
155 #define __libc_lock_lock gl_lock_lock
156 #define __libc_lock_unlock gl_lock_unlock
157 #define __libc_lock_recursive_t gl_recursive_lock_t
158 #define __libc_lock_define_recursive gl_recursive_lock_define
159 #define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
160 #define __libc_lock_init_recursive gl_recursive_lock_init
161 #define __libc_lock_lock_recursive gl_recursive_lock_lock
162 #define __libc_lock_unlock_recursive gl_recursive_lock_unlock
163 #define glthread_in_use libintl_thread_in_use
164 #define glthread_lock_init_func libintl_lock_init_func
165 #define glthread_lock_lock_func libintl_lock_lock_func
166 #define glthread_lock_unlock_func libintl_lock_unlock_func
167 #define glthread_lock_destroy_func libintl_lock_destroy_func
168 #define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
169 #define glthread_rwlock_init_func libintl_rwlock_init_func
170 #define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
171 #define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
172 #define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
173 #define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
174 #define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
175 #define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
176 #define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
177 #define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
178 #define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
179 #define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
180 #define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
181 #define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
182 #define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
183 #define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
184 #define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
185 #define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
186 #define glthread_once_func libintl_once_func
187 #define glthread_once_singlethreaded libintl_once_singlethreaded
188 #define glthread_once_multithreaded libintl_once_multithreaded
193 dnl Checks for the core files of the intl subdirectory:
200 dnl hash-string.h hash-string.c
202 dnl libgnuintl.h.in (except the *printf stuff)
207 dnl plural-exp.h plural-exp.c
209 dnl Used by libglocale.
210 AC_DEFUN([gt_INTL_SUBDIR_CORE],
212 AC_REQUIRE([AC_C_INLINE])dnl
213 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
214 AC_REQUIRE([gl_AC_HEADER_STDINT_H])
215 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
216 AC_REQUIRE([AC_FUNC_MMAP])dnl
217 AC_REQUIRE([gt_INTDIV0])dnl
218 AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
219 AC_REQUIRE([gt_INTTYPES_PRI])dnl
220 AC_REQUIRE([gl_LOCK])dnl
224 [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
226 [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
227 [Define to 1 if the compiler understands __builtin_expect.])])
229 AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
230 AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
231 stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
232 argz_stringify argz_next __fsetlocking])
234 dnl Use the *_unlocked functions only if they are declared.
235 dnl (because some of them were defined without being declared in Solaris
236 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
237 dnl on Solaris 2.5.1 to run on Solaris 2.6).
238 AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
242 dnl intl/plural.c is generated from intl/plural.y. It requires bison,
243 dnl because plural.y uses bison specific features. It requires at least
244 dnl bison-2.7 for %define api.pure.
245 dnl bison is only needed for the maintainer (who touches plural.y). But in
246 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
247 dnl the rule in general Makefile. Now, some people carelessly touch the
248 dnl files or have a broken "make" program, hence the plural.c rule will
249 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
250 dnl present or too old.
251 AC_CHECK_PROGS([INTLBISON], [bison])
252 if test -z "$INTLBISON"; then
255 dnl Found it, now check the version.
256 AC_MSG_CHECKING([version of bison])
257 changequote(<<,>>)dnl
258 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
259 case $ac_prog_version in
260 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
263 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
264 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
266 AC_MSG_RESULT([$ac_prog_version])
268 if test $ac_verc_fail = yes; then