Annotation of embedaddon/confuse/m4/gettext.m4, revision 1.1.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>