Annotation of embedaddon/confuse/m4/gettext.m4, revision 1.1
1.1 ! misho 1: # gettext.m4 serial 59 (gettext-0.16.1)
! 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: dnl Macro to add for using GNU gettext.
! 21:
! 22: dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
! 23: dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
! 24: dnl default (if it is not specified or empty) is 'no-libtool'.
! 25: dnl INTLSYMBOL should be 'external' for packages with no intl directory,
! 26: dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
! 27: dnl If INTLSYMBOL is 'use-libtool', then a libtool library
! 28: dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
! 29: dnl depending on --{enable,disable}-{shared,static} and on the presence of
! 30: dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
! 31: dnl $(top_builddir)/intl/libintl.a will be created.
! 32: dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
! 33: dnl implementations (in libc or libintl) without the ngettext() function
! 34: dnl will be ignored. If NEEDSYMBOL is specified and is
! 35: dnl 'need-formatstring-macros', then GNU gettext implementations that don't
! 36: dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
! 37: dnl INTLDIR is used to find the intl libraries. If empty,
! 38: dnl the value `$(top_builddir)/intl/' is used.
! 39: dnl
! 40: dnl The result of the configuration is one of three cases:
! 41: dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
! 42: dnl and used.
! 43: dnl Catalog format: GNU --> install in $(datadir)
! 44: dnl Catalog extension: .mo after installation, .gmo in source tree
! 45: dnl 2) GNU gettext has been found in the system's C library.
! 46: dnl Catalog format: GNU --> install in $(datadir)
! 47: dnl Catalog extension: .mo after installation, .gmo in source tree
! 48: dnl 3) No internationalization, always use English msgid.
! 49: dnl Catalog format: none
! 50: dnl Catalog extension: none
! 51: dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
! 52: dnl The use of .gmo is historical (it was needed to avoid overwriting the
! 53: dnl GNU format catalogs when building on a platform with an X/Open gettext),
! 54: dnl but we keep it in order not to force irrelevant filename changes on the
! 55: dnl maintainers.
! 56: dnl
! 57: AC_DEFUN([AM_GNU_GETTEXT],
! 58: [
! 59: dnl Argument checking.
! 60: ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
! 61: [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
! 62: ])])])])])
! 63: ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
! 64: [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
! 65: ])])])])
! 66: define([gt_included_intl],
! 67: ifelse([$1], [external],
! 68: ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
! 69: [yes]))
! 70: define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
! 71: gt_NEEDS_INIT
! 72: AM_GNU_GETTEXT_NEED([$2])
! 73:
! 74: AC_REQUIRE([AM_PO_SUBDIRS])dnl
! 75: ifelse(gt_included_intl, yes, [
! 76: AC_REQUIRE([AM_INTL_SUBDIR])dnl
! 77: ])
! 78:
! 79: dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
! 80: AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
! 81: AC_REQUIRE([AC_LIB_RPATH])
! 82:
! 83: dnl Sometimes libintl requires libiconv, so first search for libiconv.
! 84: dnl Ideally we would do this search only after the
! 85: dnl if test "$USE_NLS" = "yes"; then
! 86: dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
! 87: dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
! 88: dnl the configure script would need to contain the same shell code
! 89: dnl again, outside any 'if'. There are two solutions:
! 90: dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
! 91: dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
! 92: dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
! 93: dnl documented, we avoid it.
! 94: ifelse(gt_included_intl, yes, , [
! 95: AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
! 96: ])
! 97:
! 98: dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
! 99: gt_INTL_MACOSX
! 100:
! 101: dnl Set USE_NLS.
! 102: AC_REQUIRE([AM_NLS])
! 103:
! 104: ifelse(gt_included_intl, yes, [
! 105: BUILD_INCLUDED_LIBINTL=no
! 106: USE_INCLUDED_LIBINTL=no
! 107: ])
! 108: LIBINTL=
! 109: LTLIBINTL=
! 110: POSUB=
! 111:
! 112: dnl Add a version number to the cache macros.
! 113: case " $gt_needs " in
! 114: *" need-formatstring-macros "*) gt_api_version=3 ;;
! 115: *" need-ngettext "*) gt_api_version=2 ;;
! 116: *) gt_api_version=1 ;;
! 117: esac
! 118: gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
! 119: gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
! 120:
! 121: dnl If we use NLS figure out what method
! 122: if test "$USE_NLS" = "yes"; then
! 123: gt_use_preinstalled_gnugettext=no
! 124: ifelse(gt_included_intl, yes, [
! 125: AC_MSG_CHECKING([whether included gettext is requested])
! 126: AC_ARG_WITH(included-gettext,
! 127: [ --with-included-gettext use the GNU gettext library included here],
! 128: nls_cv_force_use_gnu_gettext=$withval,
! 129: nls_cv_force_use_gnu_gettext=no)
! 130: AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
! 131:
! 132: nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
! 133: if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
! 134: ])
! 135: dnl User does not insist on using GNU NLS library. Figure out what
! 136: dnl to use. If GNU gettext is available we use this. Else we have
! 137: dnl to fall back to GNU NLS library.
! 138:
! 139: if test $gt_api_version -ge 3; then
! 140: gt_revision_test_code='
! 141: #ifndef __GNU_GETTEXT_SUPPORTED_REVISION
! 142: #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
! 143: #endif
! 144: changequote(,)dnl
! 145: typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
! 146: changequote([,])dnl
! 147: '
! 148: else
! 149: gt_revision_test_code=
! 150: fi
! 151: if test $gt_api_version -ge 2; then
! 152: gt_expression_test_code=' + * ngettext ("", "", 0)'
! 153: else
! 154: gt_expression_test_code=
! 155: fi
! 156:
! 157: AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
! 158: [AC_TRY_LINK([#include <libintl.h>
! 159: $gt_revision_test_code
! 160: extern int _nl_msg_cat_cntr;
! 161: extern int *_nl_domain_bindings;],
! 162: [bindtextdomain ("", "");
! 163: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings],
! 164: [eval "$gt_func_gnugettext_libc=yes"],
! 165: [eval "$gt_func_gnugettext_libc=no"])])
! 166:
! 167: if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
! 168: dnl Sometimes libintl requires libiconv, so first search for libiconv.
! 169: ifelse(gt_included_intl, yes, , [
! 170: AM_ICONV_LINK
! 171: ])
! 172: dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
! 173: dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
! 174: dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
! 175: dnl even if libiconv doesn't exist.
! 176: AC_LIB_LINKFLAGS_BODY([intl])
! 177: AC_CACHE_CHECK([for GNU gettext in libintl],
! 178: [$gt_func_gnugettext_libintl],
! 179: [gt_save_CPPFLAGS="$CPPFLAGS"
! 180: CPPFLAGS="$CPPFLAGS $INCINTL"
! 181: gt_save_LIBS="$LIBS"
! 182: LIBS="$LIBS $LIBINTL"
! 183: dnl Now see whether libintl exists and does not depend on libiconv.
! 184: AC_TRY_LINK([#include <libintl.h>
! 185: $gt_revision_test_code
! 186: extern int _nl_msg_cat_cntr;
! 187: extern
! 188: #ifdef __cplusplus
! 189: "C"
! 190: #endif
! 191: const char *_nl_expand_alias (const char *);],
! 192: [bindtextdomain ("", "");
! 193: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
! 194: [eval "$gt_func_gnugettext_libintl=yes"],
! 195: [eval "$gt_func_gnugettext_libintl=no"])
! 196: dnl Now see whether libintl exists and depends on libiconv.
! 197: if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
! 198: LIBS="$LIBS $LIBICONV"
! 199: AC_TRY_LINK([#include <libintl.h>
! 200: $gt_revision_test_code
! 201: extern int _nl_msg_cat_cntr;
! 202: extern
! 203: #ifdef __cplusplus
! 204: "C"
! 205: #endif
! 206: const char *_nl_expand_alias (const char *);],
! 207: [bindtextdomain ("", "");
! 208: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")],
! 209: [LIBINTL="$LIBINTL $LIBICONV"
! 210: LTLIBINTL="$LTLIBINTL $LTLIBICONV"
! 211: eval "$gt_func_gnugettext_libintl=yes"
! 212: ])
! 213: fi
! 214: CPPFLAGS="$gt_save_CPPFLAGS"
! 215: LIBS="$gt_save_LIBS"])
! 216: fi
! 217:
! 218: dnl If an already present or preinstalled GNU gettext() is found,
! 219: dnl use it. But if this macro is used in GNU gettext, and GNU
! 220: dnl gettext is already preinstalled in libintl, we update this
! 221: dnl libintl. (Cf. the install rule in intl/Makefile.in.)
! 222: if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
! 223: || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
! 224: && test "$PACKAGE" != gettext-runtime \
! 225: && test "$PACKAGE" != gettext-tools; }; then
! 226: gt_use_preinstalled_gnugettext=yes
! 227: else
! 228: dnl Reset the values set by searching for libintl.
! 229: LIBINTL=
! 230: LTLIBINTL=
! 231: INCINTL=
! 232: fi
! 233:
! 234: ifelse(gt_included_intl, yes, [
! 235: if test "$gt_use_preinstalled_gnugettext" != "yes"; then
! 236: dnl GNU gettext is not found in the C library.
! 237: dnl Fall back on included GNU gettext library.
! 238: nls_cv_use_gnu_gettext=yes
! 239: fi
! 240: fi
! 241:
! 242: if test "$nls_cv_use_gnu_gettext" = "yes"; then
! 243: dnl Mark actions used to generate GNU NLS library.
! 244: BUILD_INCLUDED_LIBINTL=yes
! 245: USE_INCLUDED_LIBINTL=yes
! 246: LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
! 247: LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
! 248: LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
! 249: fi
! 250:
! 251: CATOBJEXT=
! 252: if test "$gt_use_preinstalled_gnugettext" = "yes" \
! 253: || test "$nls_cv_use_gnu_gettext" = "yes"; then
! 254: dnl Mark actions to use GNU gettext tools.
! 255: CATOBJEXT=.gmo
! 256: fi
! 257: ])
! 258:
! 259: if test -n "$INTL_MACOSX_LIBS"; then
! 260: if test "$gt_use_preinstalled_gnugettext" = "yes" \
! 261: || test "$nls_cv_use_gnu_gettext" = "yes"; then
! 262: dnl Some extra flags are needed during linking.
! 263: LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
! 264: LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
! 265: fi
! 266: fi
! 267:
! 268: if test "$gt_use_preinstalled_gnugettext" = "yes" \
! 269: || test "$nls_cv_use_gnu_gettext" = "yes"; then
! 270: AC_DEFINE(ENABLE_NLS, 1,
! 271: [Define to 1 if translation of program messages to the user's native language
! 272: is requested.])
! 273: else
! 274: USE_NLS=no
! 275: fi
! 276: fi
! 277:
! 278: AC_MSG_CHECKING([whether to use NLS])
! 279: AC_MSG_RESULT([$USE_NLS])
! 280: if test "$USE_NLS" = "yes"; then
! 281: AC_MSG_CHECKING([where the gettext function comes from])
! 282: if test "$gt_use_preinstalled_gnugettext" = "yes"; then
! 283: if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
! 284: gt_source="external libintl"
! 285: else
! 286: gt_source="libc"
! 287: fi
! 288: else
! 289: gt_source="included intl directory"
! 290: fi
! 291: AC_MSG_RESULT([$gt_source])
! 292: fi
! 293:
! 294: if test "$USE_NLS" = "yes"; then
! 295:
! 296: if test "$gt_use_preinstalled_gnugettext" = "yes"; then
! 297: if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
! 298: AC_MSG_CHECKING([how to link with libintl])
! 299: AC_MSG_RESULT([$LIBINTL])
! 300: AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
! 301: fi
! 302:
! 303: dnl For backward compatibility. Some packages may be using this.
! 304: AC_DEFINE(HAVE_GETTEXT, 1,
! 305: [Define if the GNU gettext() function is already present or preinstalled.])
! 306: AC_DEFINE(HAVE_DCGETTEXT, 1,
! 307: [Define if the GNU dcgettext() function is already present or preinstalled.])
! 308: fi
! 309:
! 310: dnl We need to process the po/ directory.
! 311: POSUB=po
! 312: fi
! 313:
! 314: ifelse(gt_included_intl, yes, [
! 315: dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
! 316: dnl to 'yes' because some of the testsuite requires it.
! 317: if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
! 318: BUILD_INCLUDED_LIBINTL=yes
! 319: fi
! 320:
! 321: dnl Make all variables we use known to autoconf.
! 322: AC_SUBST(BUILD_INCLUDED_LIBINTL)
! 323: AC_SUBST(USE_INCLUDED_LIBINTL)
! 324: AC_SUBST(CATOBJEXT)
! 325:
! 326: dnl For backward compatibility. Some configure.ins may be using this.
! 327: nls_cv_header_intl=
! 328: nls_cv_header_libgt=
! 329:
! 330: dnl For backward compatibility. Some Makefiles may be using this.
! 331: DATADIRNAME=share
! 332: AC_SUBST(DATADIRNAME)
! 333:
! 334: dnl For backward compatibility. Some Makefiles may be using this.
! 335: INSTOBJEXT=.mo
! 336: AC_SUBST(INSTOBJEXT)
! 337:
! 338: dnl For backward compatibility. Some Makefiles may be using this.
! 339: GENCAT=gencat
! 340: AC_SUBST(GENCAT)
! 341:
! 342: dnl For backward compatibility. Some Makefiles may be using this.
! 343: INTLOBJS=
! 344: if test "$USE_INCLUDED_LIBINTL" = yes; then
! 345: INTLOBJS="\$(GETTOBJS)"
! 346: fi
! 347: AC_SUBST(INTLOBJS)
! 348:
! 349: dnl Enable libtool support if the surrounding package wishes it.
! 350: INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
! 351: AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
! 352: ])
! 353:
! 354: dnl For backward compatibility. Some Makefiles may be using this.
! 355: INTLLIBS="$LIBINTL"
! 356: AC_SUBST(INTLLIBS)
! 357:
! 358: dnl Make all documented variables known to autoconf.
! 359: AC_SUBST(LIBINTL)
! 360: AC_SUBST(LTLIBINTL)
! 361: AC_SUBST(POSUB)
! 362: ])
! 363:
! 364:
! 365: dnl Checks for special options needed on MacOS X.
! 366: dnl Defines INTL_MACOSX_LIBS.
! 367: AC_DEFUN([gt_INTL_MACOSX],
! 368: [
! 369: dnl Check for API introduced in MacOS X 10.2.
! 370: AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
! 371: gt_cv_func_CFPreferencesCopyAppValue,
! 372: [gt_save_LIBS="$LIBS"
! 373: LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
! 374: AC_TRY_LINK([#include <CoreFoundation/CFPreferences.h>],
! 375: [CFPreferencesCopyAppValue(NULL, NULL)],
! 376: [gt_cv_func_CFPreferencesCopyAppValue=yes],
! 377: [gt_cv_func_CFPreferencesCopyAppValue=no])
! 378: LIBS="$gt_save_LIBS"])
! 379: if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
! 380: AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], 1,
! 381: [Define to 1 if you have the MacOS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
! 382: fi
! 383: dnl Check for API introduced in MacOS X 10.3.
! 384: AC_CACHE_CHECK([for CFLocaleCopyCurrent], gt_cv_func_CFLocaleCopyCurrent,
! 385: [gt_save_LIBS="$LIBS"
! 386: LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
! 387: AC_TRY_LINK([#include <CoreFoundation/CFLocale.h>], [CFLocaleCopyCurrent();],
! 388: [gt_cv_func_CFLocaleCopyCurrent=yes],
! 389: [gt_cv_func_CFLocaleCopyCurrent=no])
! 390: LIBS="$gt_save_LIBS"])
! 391: if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
! 392: AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], 1,
! 393: [Define to 1 if you have the MacOS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
! 394: fi
! 395: INTL_MACOSX_LIBS=
! 396: if test $gt_cv_func_CFPreferencesCopyAppValue = yes || test $gt_cv_func_CFLocaleCopyCurrent = yes; then
! 397: INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
! 398: fi
! 399: AC_SUBST([INTL_MACOSX_LIBS])
! 400: ])
! 401:
! 402:
! 403: dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
! 404: m4_define([gt_NEEDS_INIT],
! 405: [
! 406: m4_divert_text([DEFAULTS], [gt_needs=])
! 407: m4_define([gt_NEEDS_INIT], [])
! 408: ])
! 409:
! 410:
! 411: dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
! 412: AC_DEFUN([AM_GNU_GETTEXT_NEED],
! 413: [
! 414: m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
! 415: ])
! 416:
! 417:
! 418: dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
! 419: AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>