1 # intl.m4 serial 3 (gettext-0.16)
2 dnl Copyright (C) 1995-2006 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-2006.
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 defined by autoconf
29 dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake (obsolete)
30 AC_REQUIRE([AC_PROG_CC])dnl
31 AC_REQUIRE([AC_CANONICAL_HOST])dnl
32 AC_REQUIRE([gt_GLIBC2])dnl
33 AC_REQUIRE([AC_PROG_RANLIB])dnl
34 AC_REQUIRE([gl_VISIBILITY])dnl
35 AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
36 AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
37 AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl
38 AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
39 AC_REQUIRE([gt_TYPE_WINT_T])dnl
40 AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
41 AC_REQUIRE([gt_TYPE_INTMAX_T])
42 AC_REQUIRE([gt_PRINTF_POSIX])
43 AC_REQUIRE([gl_GLIBC21])dnl
44 AC_REQUIRE([gl_XSIZE])dnl
45 AC_REQUIRE([gt_INTL_MACOSX])dnl
47 AC_CHECK_TYPE([ptrdiff_t], ,
48 [AC_DEFINE([ptrdiff_t], [long],
49 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
51 AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
52 AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen])
54 dnl Use the _snprintf function only if it is declared (because on NetBSD it
55 dnl is defined as a weak alias of snprintf; we prefer to use the latter).
56 gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
57 gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
59 dnl Use the *_unlocked functions only if they are declared.
60 dnl (because some of them were defined without being declared in Solaris
61 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
62 dnl on Solaris 2.5.1 to run on Solaris 2.6).
63 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
64 gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
66 case $gt_cv_func_printf_posix in
67 *yes) HAVE_POSIX_PRINTF=1 ;;
68 *) HAVE_POSIX_PRINTF=0 ;;
70 AC_SUBST([HAVE_POSIX_PRINTF])
71 if test "$ac_cv_func_asprintf" = yes; then
76 AC_SUBST([HAVE_ASPRINTF])
77 if test "$ac_cv_func_snprintf" = yes; then
82 AC_SUBST([HAVE_SNPRINTF])
83 if test "$ac_cv_func_wprintf" = yes; then
88 AC_SUBST([HAVE_WPRINTF])
93 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
94 dnl 1. when we install a shared library, we must arrange to export
95 dnl auxiliary pointer variables for every exported variable,
96 dnl 2. when we install a shared library and a static library simultaneously,
97 dnl the include file specifies __declspec(dllimport) and therefore we
98 dnl must arrange to define the auxiliary pointer variables for the
99 dnl exported variables _also_ in the static library.
100 if test "$enable_shared" = yes; then
102 cygwin*) is_woe32dll=yes ;;
108 WOE32DLL=$is_woe32dll
111 dnl Rename some macros and functions used for locking.
113 #define __libc_lock_t gl_lock_t
114 #define __libc_lock_define gl_lock_define
115 #define __libc_lock_define_initialized gl_lock_define_initialized
116 #define __libc_lock_init gl_lock_init
117 #define __libc_lock_lock gl_lock_lock
118 #define __libc_lock_unlock gl_lock_unlock
119 #define __libc_lock_recursive_t gl_recursive_lock_t
120 #define __libc_lock_define_recursive gl_recursive_lock_define
121 #define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
122 #define __libc_lock_init_recursive gl_recursive_lock_init
123 #define __libc_lock_lock_recursive gl_recursive_lock_lock
124 #define __libc_lock_unlock_recursive gl_recursive_lock_unlock
125 #define glthread_in_use libintl_thread_in_use
126 #define glthread_lock_init libintl_lock_init
127 #define glthread_lock_lock libintl_lock_lock
128 #define glthread_lock_unlock libintl_lock_unlock
129 #define glthread_lock_destroy libintl_lock_destroy
130 #define glthread_rwlock_init libintl_rwlock_init
131 #define glthread_rwlock_rdlock libintl_rwlock_rdlock
132 #define glthread_rwlock_wrlock libintl_rwlock_wrlock
133 #define glthread_rwlock_unlock libintl_rwlock_unlock
134 #define glthread_rwlock_destroy libintl_rwlock_destroy
135 #define glthread_recursive_lock_init libintl_recursive_lock_init
136 #define glthread_recursive_lock_lock libintl_recursive_lock_lock
137 #define glthread_recursive_lock_unlock libintl_recursive_lock_unlock
138 #define glthread_recursive_lock_destroy libintl_recursive_lock_destroy
139 #define glthread_once libintl_once
140 #define glthread_once_call libintl_once_call
141 #define glthread_once_singlethreaded libintl_once_singlethreaded
146 dnl Checks for the core files of the intl subdirectory:
153 dnl hash-string.h hash-string.c
155 dnl libgnuintl.h.in (except the *printf stuff)
160 dnl plural-exp.h plural-exp.c
162 dnl Used by libglocale.
163 AC_DEFUN([gt_INTL_SUBDIR_CORE],
165 AC_REQUIRE([AC_C_INLINE])dnl
166 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
167 AC_REQUIRE([gl_AC_HEADER_STDINT_H])
168 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
169 AC_REQUIRE([AC_FUNC_MMAP])dnl
170 AC_REQUIRE([gt_INTDIV0])dnl
171 AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
172 AC_REQUIRE([gt_INTTYPES_PRI])dnl
173 AC_REQUIRE([gl_LOCK])dnl
176 [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
178 [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1,
179 [Define to 1 if the compiler understands __builtin_expect.])])
181 AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
182 AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
183 stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
184 argz_next __fsetlocking])
186 dnl Use the *_unlocked functions only if they are declared.
187 dnl (because some of them were defined without being declared in Solaris
188 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
189 dnl on Solaris 2.5.1 to run on Solaris 2.6).
190 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
191 gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
192 gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
196 dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined,
197 dnl and a _NL_LOCALE_NAME macro always.
198 AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name,
199 [AC_TRY_LINK([#include <langinfo.h>
200 #include <locale.h>],
201 [char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES));],
202 gt_cv_nl_locale_name=yes,
203 gt_cv_nl_locale_name=no)
205 if test $gt_cv_nl_locale_name = yes; then
206 AC_DEFINE(HAVE_NL_LOCALE_NAME, 1,
207 [Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.])
210 dnl intl/plural.c is generated from intl/plural.y. It requires bison,
211 dnl because plural.y uses bison specific features. It requires at least
212 dnl bison-1.26 because earlier versions generate a plural.c that doesn't
214 dnl bison is only needed for the maintainer (who touches plural.y). But in
215 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
216 dnl the rule in general Makefile. Now, some people carelessly touch the
217 dnl files or have a broken "make" program, hence the plural.c rule will
218 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
219 dnl present or too old.
220 AC_CHECK_PROGS([INTLBISON], [bison])
221 if test -z "$INTLBISON"; then
224 dnl Found it, now check the version.
225 AC_MSG_CHECKING([version of bison])
226 changequote(<<,>>)dnl
227 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
228 case $ac_prog_version in
229 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
230 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
232 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
233 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
235 AC_MSG_RESULT([$ac_prog_version])
237 if test $ac_verc_fail = yes; then
243 dnl gt_CHECK_DECL(FUNC, INCLUDES)
244 dnl Check whether a function is declared.
245 AC_DEFUN([gt_CHECK_DECL],
247 AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
248 [AC_TRY_COMPILE([$2], [
250 char *p = (char *) $1;
252 ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
253 if test $ac_cv_have_decl_$1 = yes; then
258 AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
259 [Define to 1 if you have the declaration of `$1', and to 0 if you don't.])