1
# intl.m4 serial 8 (gettext-0.17)
2
dnl Copyright (C) 1995-2007 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([AM_PROG_MKDIR_P])dnl defined by automake
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([gt_INTL_MACOSX])dnl
45
AC_CHECK_TYPE([ptrdiff_t], ,
46
[AC_DEFINE([ptrdiff_t], [long],
47
[Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
49
AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
50
AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen])
52
dnl Use the _snprintf function only if it is declared (because on NetBSD it
53
dnl is defined as a weak alias of snprintf; we prefer to use the latter).
54
gt_CHECK_DECL(_snprintf, [#include <stdio.h>])
55
gt_CHECK_DECL(_snwprintf, [#include <stdio.h>])
57
dnl Use the *_unlocked functions only if they are declared.
58
dnl (because some of them were defined without being declared in Solaris
59
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
60
dnl on Solaris 2.5.1 to run on Solaris 2.6).
61
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
62
gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>])
64
case $gt_cv_func_printf_posix in
65
*yes) HAVE_POSIX_PRINTF=1 ;;
66
*) HAVE_POSIX_PRINTF=0 ;;
68
AC_SUBST([HAVE_POSIX_PRINTF])
69
if test "$ac_cv_func_asprintf" = yes; then
74
AC_SUBST([HAVE_ASPRINTF])
75
if test "$ac_cv_func_snprintf" = yes; then
80
AC_SUBST([HAVE_SNPRINTF])
81
if test "$ac_cv_func_wprintf" = yes; then
86
AC_SUBST([HAVE_WPRINTF])
91
dnl Compilation on mingw and Cygwin needs special Makefile rules, because
92
dnl 1. when we install a shared library, we must arrange to export
93
dnl auxiliary pointer variables for every exported variable,
94
dnl 2. when we install a shared library and a static library simultaneously,
95
dnl the include file specifies __declspec(dllimport) and therefore we
96
dnl must arrange to define the auxiliary pointer variables for the
97
dnl exported variables _also_ in the static library.
98
if test "$enable_shared" = yes; then
100
mingw* | cygwin*) is_woe32dll=yes ;;
106
WOE32DLL=$is_woe32dll
109
dnl On mingw and Cygwin, we can activate special Makefile rules which add
110
dnl version information to the shared libraries and executables.
112
mingw* | cygwin*) is_woe32=yes ;;
117
if test $WOE32 = yes; then
118
dnl Check for a program that compiles Windows resource files.
119
AC_CHECK_TOOL([WINDRES], [windres])
122
dnl Determine whether when creating a library, "-lc" should be passed to
123
dnl libtool or not. On many platforms, it is required for the libtool option
124
dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
125
dnl in the *.la files - makes it impossible to create multithreaded programs,
126
dnl because libtool also reorders the -lc to come before the -pthread, and
127
dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
134
dnl Rename some macros and functions used for locking.
136
#define __libc_lock_t gl_lock_t
137
#define __libc_lock_define gl_lock_define
138
#define __libc_lock_define_initialized gl_lock_define_initialized
139
#define __libc_lock_init gl_lock_init
140
#define __libc_lock_lock gl_lock_lock
141
#define __libc_lock_unlock gl_lock_unlock
142
#define __libc_lock_recursive_t gl_recursive_lock_t
143
#define __libc_lock_define_recursive gl_recursive_lock_define
144
#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
145
#define __libc_lock_init_recursive gl_recursive_lock_init
146
#define __libc_lock_lock_recursive gl_recursive_lock_lock
147
#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
148
#define glthread_in_use libintl_thread_in_use
149
#define glthread_lock_init libintl_lock_init
150
#define glthread_lock_lock libintl_lock_lock
151
#define glthread_lock_unlock libintl_lock_unlock
152
#define glthread_lock_destroy libintl_lock_destroy
153
#define glthread_rwlock_init libintl_rwlock_init
154
#define glthread_rwlock_rdlock libintl_rwlock_rdlock
155
#define glthread_rwlock_wrlock libintl_rwlock_wrlock
156
#define glthread_rwlock_unlock libintl_rwlock_unlock
157
#define glthread_rwlock_destroy libintl_rwlock_destroy
158
#define glthread_recursive_lock_init libintl_recursive_lock_init
159
#define glthread_recursive_lock_lock libintl_recursive_lock_lock
160
#define glthread_recursive_lock_unlock libintl_recursive_lock_unlock
161
#define glthread_recursive_lock_destroy libintl_recursive_lock_destroy
162
#define glthread_once libintl_once
163
#define glthread_once_call libintl_once_call
164
#define glthread_once_singlethreaded libintl_once_singlethreaded
169
dnl Checks for the core files of the intl subdirectory:
176
dnl hash-string.h hash-string.c
178
dnl libgnuintl.h.in (except the *printf stuff)
183
dnl plural-exp.h plural-exp.c
185
dnl Used by libglocale.
186
AC_DEFUN([gt_INTL_SUBDIR_CORE],
188
AC_REQUIRE([AC_C_INLINE])dnl
189
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
190
AC_REQUIRE([gl_AC_HEADER_STDINT_H])
191
AC_REQUIRE([AC_FUNC_ALLOCA])dnl
192
AC_REQUIRE([AC_FUNC_MMAP])dnl
193
AC_REQUIRE([gt_INTDIV0])dnl
194
AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
195
AC_REQUIRE([gt_INTTYPES_PRI])dnl
196
AC_REQUIRE([gl_LOCK])dnl
199
[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
201
[AC_DEFINE([HAVE_BUILTIN_EXPECT], 1,
202
[Define to 1 if the compiler understands __builtin_expect.])])
204
AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
205
AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
206
stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
207
argz_next __fsetlocking])
209
dnl Use the *_unlocked functions only if they are declared.
210
dnl (because some of them were defined without being declared in Solaris
211
dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
212
dnl on Solaris 2.5.1 to run on Solaris 2.6).
213
dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13.
214
gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>])
215
gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>])
219
dnl glibc >= 2.4 has a NL_LOCALE_NAME macro when _GNU_SOURCE is defined,
220
dnl and a _NL_LOCALE_NAME macro always.
221
AC_CACHE_CHECK([for NL_LOCALE_NAME macro], gt_cv_nl_locale_name,
222
[AC_TRY_LINK([#include <langinfo.h>
223
#include <locale.h>],
224
[char* cs = nl_langinfo(_NL_LOCALE_NAME(LC_MESSAGES));
227
gt_cv_nl_locale_name=yes,
228
gt_cv_nl_locale_name=no)
230
if test $gt_cv_nl_locale_name = yes; then
231
AC_DEFINE(HAVE_NL_LOCALE_NAME, 1,
232
[Define if you have <langinfo.h> and it defines the NL_LOCALE_NAME macro if _GNU_SOURCE is defined.])
235
dnl intl/plural.c is generated from intl/plural.y. It requires bison,
236
dnl because plural.y uses bison specific features. It requires at least
237
dnl bison-1.26 because earlier versions generate a plural.c that doesn't
239
dnl bison is only needed for the maintainer (who touches plural.y). But in
240
dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
241
dnl the rule in general Makefile. Now, some people carelessly touch the
242
dnl files or have a broken "make" program, hence the plural.c rule will
243
dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
244
dnl present or too old.
245
AC_CHECK_PROGS([INTLBISON], [bison])
246
if test -z "$INTLBISON"; then
249
dnl Found it, now check the version.
250
AC_MSG_CHECKING([version of bison])
251
changequote(<<,>>)dnl
252
ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
253
case $ac_prog_version in
254
'') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
255
1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
257
ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
258
*) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
260
AC_MSG_RESULT([$ac_prog_version])
262
if test $ac_verc_fail = yes; then
268
dnl gt_CHECK_DECL(FUNC, INCLUDES)
269
dnl Check whether a function is declared.
270
AC_DEFUN([gt_CHECK_DECL],
272
AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
273
[AC_TRY_COMPILE([$2], [
275
char *p = (char *) $1;
277
], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
278
if test $ac_cv_have_decl_$1 = yes; then
283
AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value],
284
[Define to 1 if you have the declaration of `$1', and to 0 if you don't.])