1# intl.m4 serial 17b 2dnl Copyright (C) 1995-2011 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.53]) 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([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([gl_FCNTL_O_FLAGS])dnl 44 AC_REQUIRE([gt_INTL_MACOSX])dnl 45 46 dnl Support for automake's --enable-silent-rules. 47 case "$enable_silent_rules" in 48 yes) INTL_DEFAULT_VERBOSITY=0;; 49 no) INTL_DEFAULT_VERBOSITY=1;; 50 *) INTL_DEFAULT_VERBOSITY=1;; 51 esac 52 AC_SUBST([INTL_DEFAULT_VERBOSITY]) 53 54 AC_CHECK_TYPE([ptrdiff_t], , 55 [AC_DEFINE([ptrdiff_t], [long], 56 [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) 57 ]) 58 AC_CHECK_HEADERS([stddef.h stdlib.h string.h]) 59 AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \ 60 snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb]) 61 62 dnl Use the _snprintf function only if it is declared (because on NetBSD it 63 dnl is defined as a weak alias of snprintf; we prefer to use the latter). 64 gt_CHECK_DECL(_snprintf, [#include <stdio.h>]) 65 gt_CHECK_DECL(_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 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. 72 gt_CHECK_DECL(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 dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. 240 gt_CHECK_DECL([feof_unlocked], [#include <stdio.h>]) 241 gt_CHECK_DECL([fgets_unlocked], [#include <stdio.h>]) 242 243 AM_ICONV 244 245 dnl intl/plural.c is generated from intl/plural.y. It requires bison, 246 dnl because plural.y uses bison specific features. It requires at least 247 dnl bison-1.26 because earlier versions generate a plural.c that doesn't 248 dnl compile. 249 dnl bison is only needed for the maintainer (who touches plural.y). But in 250 dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put 251 dnl the rule in general Makefile. Now, some people carelessly touch the 252 dnl files or have a broken "make" program, hence the plural.c rule will 253 dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not 254 dnl present or too old. 255 AC_CHECK_PROGS([INTLBISON], [bison]) 256 if test -z "$INTLBISON"; then 257 ac_verc_fail=yes 258 else 259 dnl Found it, now check the version. 260 AC_MSG_CHECKING([version of bison]) 261changequote(<<,>>)dnl 262 ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` 263 case $ac_prog_version in 264 '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; 265 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) 266changequote([,])dnl 267 ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; 268 *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; 269 esac 270 AC_MSG_RESULT([$ac_prog_version]) 271 fi 272 if test $ac_verc_fail = yes; then 273 INTLBISON=: 274 fi 275]) 276 277 278dnl gt_CHECK_DECL(FUNC, INCLUDES) 279dnl Check whether a function is declared. 280AC_DEFUN([gt_CHECK_DECL], 281[ 282 AC_CACHE_CHECK([whether $1 is declared], [ac_cv_have_decl_$1], 283 [AC_COMPILE_IFELSE( 284 [AC_LANG_PROGRAM( 285 [[$2]], 286 [[ 287#ifndef $1 288 char *p = (char *) $1; 289#endif 290 ]])], 291 [ac_cv_have_decl_$1=yes], 292 [ac_cv_have_decl_$1=no])]) 293 if test $ac_cv_have_decl_$1 = yes; then 294 gt_value=1 295 else 296 gt_value=0 297 fi 298 AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], 299 [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) 300]) 301