67feb5862fc30cfa38bc3c1b1905dcb82e0214c4
[vlc.git] / m4 / intl.m4
1 # intl.m4 serial 25 (gettext-0.18.3)
2 dnl Copyright (C) 1995-2013 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-2009.
19
20 AC_PREREQ([2.60])
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
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
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;;
52   esac
53   AC_SUBST([INTL_DEFAULT_VERBOSITY])
54
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.])
58     ])
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])
62
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>])
66
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>])
72
73   case $gt_cv_func_printf_posix in
74     *yes) HAVE_POSIX_PRINTF=1 ;;
75     *) HAVE_POSIX_PRINTF=0 ;;
76   esac
77   AC_SUBST([HAVE_POSIX_PRINTF])
78   if test "$ac_cv_func_asprintf" = yes; then
79     HAVE_ASPRINTF=1
80   else
81     HAVE_ASPRINTF=0
82   fi
83   AC_SUBST([HAVE_ASPRINTF])
84   if test "$ac_cv_func_snprintf" = yes; then
85     HAVE_SNPRINTF=1
86   else
87     HAVE_SNPRINTF=0
88   fi
89   AC_SUBST([HAVE_SNPRINTF])
90   if test "$ac_cv_func_newlocale" = yes; then
91     HAVE_NEWLOCALE=1
92   else
93     HAVE_NEWLOCALE=0
94   fi
95   AC_SUBST([HAVE_NEWLOCALE])
96   if test "$ac_cv_func_wprintf" = yes; then
97     HAVE_WPRINTF=1
98   else
99     HAVE_WPRINTF=0
100   fi
101   AC_SUBST([HAVE_WPRINTF])
102
103   AM_LANGINFO_CODESET
104   gt_LC_MESSAGES
105
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
114     case "$host_os" in
115       mingw* | cygwin*) is_woe32dll=yes ;;
116       *) is_woe32dll=no ;;
117     esac
118   else
119     is_woe32dll=no
120   fi
121   WOE32DLL=$is_woe32dll
122   AC_SUBST([WOE32DLL])
123
124   dnl On mingw and Cygwin, we can activate special Makefile rules which add
125   dnl version information to the shared libraries and executables.
126   case "$host_os" in
127     mingw* | cygwin*) is_woe32=yes ;;
128     *) is_woe32=no ;;
129   esac
130   WOE32=$is_woe32
131   AC_SUBST([WOE32])
132   if test $WOE32 = yes; then
133     dnl Check for a program that compiles Windows resource files.
134     AC_CHECK_TOOL([WINDRES], [windres])
135   fi
136
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>.
143   case "$host_os" in
144     hpux*) LTLIBC="" ;;
145     *)     LTLIBC="-lc" ;;
146   esac
147   AC_SUBST([LTLIBC])
148
149   dnl Rename some macros and functions used for locking.
150   AH_BOTTOM([
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
189 ])
190 ])
191
192
193 dnl Checks for the core files of the intl subdirectory:
194 dnl   dcigettext.c
195 dnl   eval-plural.h
196 dnl   explodename.c
197 dnl   finddomain.c
198 dnl   gettextP.h
199 dnl   gmo.h
200 dnl   hash-string.h hash-string.c
201 dnl   l10nflist.c
202 dnl   libgnuintl.h.in (except the *printf stuff)
203 dnl   loadinfo.h
204 dnl   loadmsgcat.c
205 dnl   localealias.c
206 dnl   log.c
207 dnl   plural-exp.h plural-exp.c
208 dnl   plural.y
209 dnl Used by libglocale.
210 AC_DEFUN([gt_INTL_SUBDIR_CORE],
211 [
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
221
222   AC_LINK_IFELSE(
223     [AC_LANG_PROGRAM(
224        [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
225        [[]])],
226     [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
227        [Define to 1 if the compiler understands __builtin_expect.])])
228
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])
233
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>])
239
240   AM_ICONV
241
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-1.26 because earlier versions generate a plural.c that doesn't
245   dnl compile.
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])
258 changequote(<<,>>)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       1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
263 changequote([,])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 ])