aboutsummaryrefslogtreecommitdiff
path: root/m4/intl.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/intl.m4')
-rw-r--r--m4/intl.m4298
1 files changed, 298 insertions, 0 deletions
diff --git a/m4/intl.m4 b/m4/intl.m4
new file mode 100644
index 0000000..1747af9
--- /dev/null
+++ b/m4/intl.m4
@@ -0,0 +1,298 @@
1# intl.m4 serial 27 (gettext-0.19)
2dnl Copyright (C) 1995-2014 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6dnl
7dnl This file can can be used in projects which are not available under
8dnl the GNU General Public License or the GNU Library General Public
9dnl License but which still want to provide support for the GNU gettext
10dnl functionality.
11dnl Please note that the actual code of the GNU gettext library is covered
12dnl by the GNU Library General Public License, and the rest of the GNU
13dnl gettext package package is covered by the GNU General Public License.
14dnl They are *not* in the public domain.
15
16dnl Authors:
17dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
18dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
19
20AC_PREREQ([2.60])
21
22dnl Checks for all prerequisites of the intl subdirectory,
23dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
24dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
25AC_DEFUN([AM_INTL_SUBDIR],
26[
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
46 AC_REQUIRE([gt_GL_ATTRIBUTE])dnl
47
48 dnl Support for automake's --enable-silent-rules.
49 case "$enable_silent_rules" in
50 yes) INTL_DEFAULT_VERBOSITY=0;;
51 no) INTL_DEFAULT_VERBOSITY=1;;
52 *) INTL_DEFAULT_VERBOSITY=1;;
53 esac
54 AC_SUBST([INTL_DEFAULT_VERBOSITY])
55
56 AC_CHECK_TYPE([ptrdiff_t], ,
57 [AC_DEFINE([ptrdiff_t], [long],
58 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
59 ])
60 AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
61 AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
62 snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb])
63
64 dnl Use the _snprintf function only if it is declared (because on NetBSD it
65 dnl is defined as a weak alias of snprintf; we prefer to use the latter).
66 AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
67
68 dnl Use the *_unlocked functions only if they are declared.
69 dnl (because some of them were defined without being declared in Solaris
70 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
71 dnl on Solaris 2.5.1 to run on Solaris 2.6).
72 AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
73
74 case $gt_cv_func_printf_posix in
75 *yes) HAVE_POSIX_PRINTF=1 ;;
76 *) HAVE_POSIX_PRINTF=0 ;;
77 esac
78 AC_SUBST([HAVE_POSIX_PRINTF])
79 if test "$ac_cv_func_asprintf" = yes; then
80 HAVE_ASPRINTF=1
81 else
82 HAVE_ASPRINTF=0
83 fi
84 AC_SUBST([HAVE_ASPRINTF])
85 if test "$ac_cv_func_snprintf" = yes; then
86 HAVE_SNPRINTF=1
87 else
88 HAVE_SNPRINTF=0
89 fi
90 AC_SUBST([HAVE_SNPRINTF])
91 if test "$ac_cv_func_newlocale" = yes; then
92 HAVE_NEWLOCALE=1
93 else
94 HAVE_NEWLOCALE=0
95 fi
96 AC_SUBST([HAVE_NEWLOCALE])
97 if test "$ac_cv_func_wprintf" = yes; then
98 HAVE_WPRINTF=1
99 else
100 HAVE_WPRINTF=0
101 fi
102 AC_SUBST([HAVE_WPRINTF])
103
104 AM_LANGINFO_CODESET
105 gt_LC_MESSAGES
106
107 dnl Compilation on mingw and Cygwin needs special Makefile rules, because
108 dnl 1. when we install a shared library, we must arrange to export
109 dnl auxiliary pointer variables for every exported variable,
110 dnl 2. when we install a shared library and a static library simultaneously,
111 dnl the include file specifies __declspec(dllimport) and therefore we
112 dnl must arrange to define the auxiliary pointer variables for the
113 dnl exported variables _also_ in the static library.
114 if test "$enable_shared" = yes; then
115 case "$host_os" in
116 mingw* | cygwin*) is_woe32dll=yes ;;
117 *) is_woe32dll=no ;;
118 esac
119 else
120 is_woe32dll=no
121 fi
122 WOE32DLL=$is_woe32dll
123 AC_SUBST([WOE32DLL])
124
125 dnl On mingw and Cygwin, we can activate special Makefile rules which add
126 dnl version information to the shared libraries and executables.
127 case "$host_os" in
128 mingw* | cygwin*) is_woe32=yes ;;
129 *) is_woe32=no ;;
130 esac
131 WOE32=$is_woe32
132 AC_SUBST([WOE32])
133 if test $WOE32 = yes; then
134 dnl Check for a program that compiles Windows resource files.
135 AC_CHECK_TOOL([WINDRES], [windres])
136 fi
137
138 dnl Determine whether when creating a library, "-lc" should be passed to
139 dnl libtool or not. On many platforms, it is required for the libtool option
140 dnl -no-undefined to work. On HP-UX, however, the -lc - stored by libtool
141 dnl in the *.la files - makes it impossible to create multithreaded programs,
142 dnl because libtool also reorders the -lc to come before the -pthread, and
143 dnl this disables pthread_create() <http://docs.hp.com/en/1896/pthreads.html>.
144 case "$host_os" in
145 hpux*) LTLIBC="" ;;
146 *) LTLIBC="-lc" ;;
147 esac
148 AC_SUBST([LTLIBC])
149
150 dnl Rename some macros and functions used for locking.
151 AH_BOTTOM([
152#define __libc_lock_t gl_lock_t
153#define __libc_lock_define gl_lock_define
154#define __libc_lock_define_initialized gl_lock_define_initialized
155#define __libc_lock_init gl_lock_init
156#define __libc_lock_lock gl_lock_lock
157#define __libc_lock_unlock gl_lock_unlock
158#define __libc_lock_recursive_t gl_recursive_lock_t
159#define __libc_lock_define_recursive gl_recursive_lock_define
160#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
161#define __libc_lock_init_recursive gl_recursive_lock_init
162#define __libc_lock_lock_recursive gl_recursive_lock_lock
163#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
164#define glthread_in_use libintl_thread_in_use
165#define glthread_lock_init_func libintl_lock_init_func
166#define glthread_lock_lock_func libintl_lock_lock_func
167#define glthread_lock_unlock_func libintl_lock_unlock_func
168#define glthread_lock_destroy_func libintl_lock_destroy_func
169#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
170#define glthread_rwlock_init_func libintl_rwlock_init_func
171#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
172#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
173#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
174#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
175#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
176#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
177#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
178#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
179#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
180#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
181#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
182#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
183#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
184#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
185#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
186#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
187#define glthread_once_func libintl_once_func
188#define glthread_once_singlethreaded libintl_once_singlethreaded
189#define glthread_once_multithreaded libintl_once_multithreaded
190])
191])
192
193
194dnl Checks for the core files of the intl subdirectory:
195dnl dcigettext.c
196dnl eval-plural.h
197dnl explodename.c
198dnl finddomain.c
199dnl gettextP.h
200dnl gmo.h
201dnl hash-string.h hash-string.c
202dnl l10nflist.c
203dnl libgnuintl.h.in (except the *printf stuff)
204dnl loadinfo.h
205dnl loadmsgcat.c
206dnl localealias.c
207dnl log.c
208dnl plural-exp.h plural-exp.c
209dnl plural.y
210dnl Used by libglocale.
211AC_DEFUN([gt_INTL_SUBDIR_CORE],
212[
213 AC_REQUIRE([AC_C_INLINE])dnl
214 AC_REQUIRE([AC_TYPE_SIZE_T])dnl
215 AC_REQUIRE([gl_AC_HEADER_STDINT_H])
216 AC_REQUIRE([AC_FUNC_ALLOCA])dnl
217 AC_REQUIRE([AC_FUNC_MMAP])dnl
218 AC_REQUIRE([gt_INTDIV0])dnl
219 AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
220 AC_REQUIRE([gt_INTTYPES_PRI])dnl
221 AC_REQUIRE([gl_LOCK])dnl
222
223 AC_LINK_IFELSE(
224 [AC_LANG_PROGRAM(
225 [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
226 [[]])],
227 [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
228 [Define to 1 if the compiler understands __builtin_expect.])])
229
230 AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
231 AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
232 stpcpy strcasecmp strdup strtoul tsearch uselocale argz_count \
233 argz_stringify argz_next __fsetlocking])
234
235 dnl Use the *_unlocked functions only if they are declared.
236 dnl (because some of them were defined without being declared in Solaris
237 dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
238 dnl on Solaris 2.5.1 to run on Solaris 2.6).
239 AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
240
241 AM_ICONV
242
243 dnl intl/plural.c is generated from intl/plural.y. It requires bison,
244 dnl because plural.y uses bison specific features. It requires at least
245 dnl bison-2.7 for %define api.pure.
246 dnl bison is only needed for the maintainer (who touches plural.y). But in
247 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
248 dnl the rule in general Makefile. Now, some people carelessly touch the
249 dnl files or have a broken "make" program, hence the plural.c rule will
250 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
251 dnl present or too old.
252 AC_CHECK_PROGS([INTLBISON], [bison])
253 if test -z "$INTLBISON"; then
254 ac_verc_fail=yes
255 else
256 dnl Found it, now check the version.
257 AC_MSG_CHECKING([version of bison])
258changequote(<<,>>)dnl
259 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
260 case $ac_prog_version in
261 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
262 2.[7-9]* | [3-9].*)
263changequote([,])dnl
264 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
265 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
266 esac
267 AC_MSG_RESULT([$ac_prog_version])
268 fi
269 if test $ac_verc_fail = yes; then
270 INTLBISON=:
271 fi
272])
273
274dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from
275dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib.
276AC_DEFUN([gt_GL_ATTRIBUTE], [
277 m4_ifndef([gl_[]COMMON],
278 AH_VERBATIM([gt_gl_attribute],
279[/* Define as a marker that can be attached to declarations that might not
280 be used. This helps to reduce warnings, such as from
281 GCC -Wunused-parameter. */
282#ifndef _GL_UNUSED
283# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
284# define _GL_UNUSED __attribute__ ((__unused__))
285# else
286# define _GL_UNUSED
287# endif
288#endif
289
290/* The __pure__ attribute was added in gcc 2.96. */
291#ifndef _GL_ATTRIBUTE_PURE
292# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
293# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
294# else
295# define _GL_ATTRIBUTE_PURE /* empty */
296# endif
297#endif
298]))])