]> git.lyx.org Git - lyx.git/blob - m4/intl.m4
Natbib authoryear uses (Ref1; Ref2) by default.
[lyx.git] / m4 / intl.m4
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.
6 dnl
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
10 dnl functionality.
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.
15
16 dnl Authors:
17 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
18 dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006.
19
20 AC_PREREQ(2.52)
21
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],
26 [
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
46
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.])
50     ])
51   AC_CHECK_HEADERS([stddef.h stdlib.h string.h])
52   AC_CHECK_FUNCS([asprintf fwprintf putenv setenv setlocale snprintf wcslen])
53
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>])
58
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>])
65
66   case $gt_cv_func_printf_posix in
67     *yes) HAVE_POSIX_PRINTF=1 ;;
68     *) HAVE_POSIX_PRINTF=0 ;;
69   esac
70   AC_SUBST([HAVE_POSIX_PRINTF])
71   if test "$ac_cv_func_asprintf" = yes; then
72     HAVE_ASPRINTF=1
73   else
74     HAVE_ASPRINTF=0
75   fi
76   AC_SUBST([HAVE_ASPRINTF])
77   if test "$ac_cv_func_snprintf" = yes; then
78     HAVE_SNPRINTF=1
79   else
80     HAVE_SNPRINTF=0
81   fi
82   AC_SUBST([HAVE_SNPRINTF])
83   if test "$ac_cv_func_wprintf" = yes; then
84     HAVE_WPRINTF=1
85   else
86     HAVE_WPRINTF=0
87   fi
88   AC_SUBST([HAVE_WPRINTF])
89
90   AM_LANGINFO_CODESET
91   gt_LC_MESSAGES
92
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
101     case "$host_os" in
102       cygwin*) is_woe32dll=yes ;;
103       *) is_woe32dll=no ;;
104     esac
105   else
106     is_woe32dll=no
107   fi
108   WOE32DLL=$is_woe32dll
109   AC_SUBST([WOE32DLL])
110
111   dnl Rename some macros and functions used for locking.
112   AH_BOTTOM([
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
142 ])
143 ])
144
145
146 dnl Checks for the core files of the intl subdirectory:
147 dnl   dcigettext.c
148 dnl   eval-plural.h
149 dnl   explodename.c
150 dnl   finddomain.c
151 dnl   gettextP.h
152 dnl   gmo.h
153 dnl   hash-string.h hash-string.c
154 dnl   l10nflist.c
155 dnl   libgnuintl.h.in (except the *printf stuff)
156 dnl   loadinfo.h
157 dnl   loadmsgcat.c
158 dnl   localealias.c
159 dnl   log.c
160 dnl   plural-exp.h plural-exp.c
161 dnl   plural.y
162 dnl Used by libglocale.
163 AC_DEFUN([gt_INTL_SUBDIR_CORE],
164 [
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
174
175   AC_TRY_LINK(
176     [int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }],
177     [],
178     [AC_DEFINE([HAVE_BUILTIN_EXPECT], 1,
179        [Define to 1 if the compiler understands __builtin_expect.])])
180
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])
185
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>])
193
194   AM_ICONV
195
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)
204     ])
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.])
208   fi
209
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
213   dnl compile.
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
222     ac_verc_fail=yes
223   else
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].*)
231 changequote([,])dnl
232          ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
233       *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
234     esac
235     AC_MSG_RESULT([$ac_prog_version])
236   fi
237   if test $ac_verc_fail = yes; then
238     INTLBISON=:
239   fi
240 ])
241
242
243 dnl gt_CHECK_DECL(FUNC, INCLUDES)
244 dnl Check whether a function is declared.
245 AC_DEFUN([gt_CHECK_DECL],
246 [
247   AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1,
248     [AC_TRY_COMPILE([$2], [
249 #ifndef $1
250   char *p = (char *) $1;
251 #endif
252 ], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)])
253   if test $ac_cv_have_decl_$1 = yes; then
254     gt_value=1
255   else
256     gt_value=0
257   fi
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.])
260 ])