Annotation of embedaddon/libiconv/srcm4/gettext.m4, revision 1.1.1.2

1.1.1.2 ! misho       1: # gettext.m4 serial 64 (gettext-0.18.2)
        !             2: dnl Copyright (C) 1995-2011 Free Software Foundation, Inc.
1.1       misho       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.
1.1.1.2 ! misho      18: dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
1.1       misho      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: ])])])])])
1.1.1.2 ! misho      63:   ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
        !            64:     [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
1.1       misho      65:   ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
                     66:     [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
                     67: ])])])])
                     68:   define([gt_included_intl],
                     69:     ifelse([$1], [external],
                     70:       ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
                     71:       [yes]))
                     72:   define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
                     73:   gt_NEEDS_INIT
                     74:   AM_GNU_GETTEXT_NEED([$2])
                     75: 
                     76:   AC_REQUIRE([AM_PO_SUBDIRS])dnl
                     77:   ifelse(gt_included_intl, yes, [
                     78:     AC_REQUIRE([AM_INTL_SUBDIR])dnl
                     79:   ])
                     80: 
                     81:   dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
                     82:   AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
                     83:   AC_REQUIRE([AC_LIB_RPATH])
                     84: 
                     85:   dnl Sometimes libintl requires libiconv, so first search for libiconv.
                     86:   dnl Ideally we would do this search only after the
                     87:   dnl      if test "$USE_NLS" = "yes"; then
                     88:   dnl        if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
                     89:   dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
                     90:   dnl the configure script would need to contain the same shell code
                     91:   dnl again, outside any 'if'. There are two solutions:
                     92:   dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
                     93:   dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
                     94:   dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
                     95:   dnl documented, we avoid it.
                     96:   ifelse(gt_included_intl, yes, , [
                     97:     AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
                     98:   ])
                     99: 
                    100:   dnl Sometimes, on MacOS X, libintl requires linking with CoreFoundation.
                    101:   gt_INTL_MACOSX
                    102: 
                    103:   dnl Set USE_NLS.
                    104:   AC_REQUIRE([AM_NLS])
                    105: 
                    106:   ifelse(gt_included_intl, yes, [
                    107:     BUILD_INCLUDED_LIBINTL=no
                    108:     USE_INCLUDED_LIBINTL=no
                    109:   ])
                    110:   LIBINTL=
                    111:   LTLIBINTL=
                    112:   POSUB=
                    113: 
                    114:   dnl Add a version number to the cache macros.
                    115:   case " $gt_needs " in
                    116:     *" need-formatstring-macros "*) gt_api_version=3 ;;
                    117:     *" need-ngettext "*) gt_api_version=2 ;;
                    118:     *) gt_api_version=1 ;;
                    119:   esac
                    120:   gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
                    121:   gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
                    122: 
                    123:   dnl If we use NLS figure out what method
                    124:   if test "$USE_NLS" = "yes"; then
                    125:     gt_use_preinstalled_gnugettext=no
                    126:     ifelse(gt_included_intl, yes, [
                    127:       AC_MSG_CHECKING([whether included gettext is requested])
                    128:       AC_ARG_WITH([included-gettext],
                    129:         [  --with-included-gettext use the GNU gettext library included here],
                    130:         nls_cv_force_use_gnu_gettext=$withval,
                    131:         nls_cv_force_use_gnu_gettext=no)
                    132:       AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
                    133: 
                    134:       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
                    135:       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
                    136:     ])
                    137:         dnl User does not insist on using GNU NLS library.  Figure out what
                    138:         dnl to use.  If GNU gettext is available we use this.  Else we have
                    139:         dnl to fall back to GNU NLS library.
                    140: 
                    141:         if test $gt_api_version -ge 3; then
                    142:           gt_revision_test_code='
                    143: #ifndef __GNU_GETTEXT_SUPPORTED_REVISION
                    144: #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
                    145: #endif
                    146: changequote(,)dnl
                    147: typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
                    148: changequote([,])dnl
                    149: '
                    150:         else
                    151:           gt_revision_test_code=
                    152:         fi
                    153:         if test $gt_api_version -ge 2; then
                    154:           gt_expression_test_code=' + * ngettext ("", "", 0)'
                    155:         else
                    156:           gt_expression_test_code=
                    157:         fi
                    158: 
                    159:         AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
1.1.1.2 ! misho     160:          [AC_LINK_IFELSE(
        !           161:             [AC_LANG_PROGRAM(
        !           162:                [[
        !           163: #include <libintl.h>
1.1       misho     164: $gt_revision_test_code
                    165: extern int _nl_msg_cat_cntr;
1.1.1.2 ! misho     166: extern int *_nl_domain_bindings;
        !           167:                ]],
        !           168:                [[
        !           169: bindtextdomain ("", "");
        !           170: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_domain_bindings
        !           171:                ]])],
1.1       misho     172:             [eval "$gt_func_gnugettext_libc=yes"],
                    173:             [eval "$gt_func_gnugettext_libc=no"])])
                    174: 
                    175:         if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
                    176:           dnl Sometimes libintl requires libiconv, so first search for libiconv.
                    177:           ifelse(gt_included_intl, yes, , [
                    178:             AM_ICONV_LINK
                    179:           ])
                    180:           dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
                    181:           dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
                    182:           dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
                    183:           dnl even if libiconv doesn't exist.
                    184:           AC_LIB_LINKFLAGS_BODY([intl])
                    185:           AC_CACHE_CHECK([for GNU gettext in libintl],
                    186:             [$gt_func_gnugettext_libintl],
                    187:            [gt_save_CPPFLAGS="$CPPFLAGS"
                    188:             CPPFLAGS="$CPPFLAGS $INCINTL"
                    189:             gt_save_LIBS="$LIBS"
                    190:             LIBS="$LIBS $LIBINTL"
                    191:             dnl Now see whether libintl exists and does not depend on libiconv.
1.1.1.2 ! misho     192:             AC_LINK_IFELSE(
        !           193:               [AC_LANG_PROGRAM(
        !           194:                  [[
        !           195: #include <libintl.h>
1.1       misho     196: $gt_revision_test_code
                    197: extern int _nl_msg_cat_cntr;
                    198: extern
                    199: #ifdef __cplusplus
                    200: "C"
                    201: #endif
1.1.1.2 ! misho     202: const char *_nl_expand_alias (const char *);
        !           203:                  ]],
        !           204:                  [[
        !           205: bindtextdomain ("", "");
        !           206: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
        !           207:                  ]])],
1.1       misho     208:               [eval "$gt_func_gnugettext_libintl=yes"],
                    209:               [eval "$gt_func_gnugettext_libintl=no"])
                    210:             dnl Now see whether libintl exists and depends on libiconv.
                    211:             if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
                    212:               LIBS="$LIBS $LIBICONV"
1.1.1.2 ! misho     213:               AC_LINK_IFELSE(
        !           214:                 [AC_LANG_PROGRAM(
        !           215:                    [[
        !           216: #include <libintl.h>
1.1       misho     217: $gt_revision_test_code
                    218: extern int _nl_msg_cat_cntr;
                    219: extern
                    220: #ifdef __cplusplus
                    221: "C"
                    222: #endif
1.1.1.2 ! misho     223: const char *_nl_expand_alias (const char *);
        !           224:                    ]],
        !           225:                    [[
        !           226: bindtextdomain ("", "");
        !           227: return * gettext ("")$gt_expression_test_code + _nl_msg_cat_cntr + *_nl_expand_alias ("")
        !           228:                    ]])],
        !           229:                 [LIBINTL="$LIBINTL $LIBICONV"
        !           230:                  LTLIBINTL="$LTLIBINTL $LTLIBICONV"
        !           231:                  eval "$gt_func_gnugettext_libintl=yes"
        !           232:                 ])
1.1       misho     233:             fi
                    234:             CPPFLAGS="$gt_save_CPPFLAGS"
                    235:             LIBS="$gt_save_LIBS"])
                    236:         fi
                    237: 
                    238:         dnl If an already present or preinstalled GNU gettext() is found,
                    239:         dnl use it.  But if this macro is used in GNU gettext, and GNU
                    240:         dnl gettext is already preinstalled in libintl, we update this
                    241:         dnl libintl.  (Cf. the install rule in intl/Makefile.in.)
                    242:         if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
                    243:            || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
                    244:                 && test "$PACKAGE" != gettext-runtime \
                    245:                 && test "$PACKAGE" != gettext-tools; }; then
                    246:           gt_use_preinstalled_gnugettext=yes
                    247:         else
                    248:           dnl Reset the values set by searching for libintl.
                    249:           LIBINTL=
                    250:           LTLIBINTL=
                    251:           INCINTL=
                    252:         fi
                    253: 
                    254:     ifelse(gt_included_intl, yes, [
                    255:         if test "$gt_use_preinstalled_gnugettext" != "yes"; then
                    256:           dnl GNU gettext is not found in the C library.
                    257:           dnl Fall back on included GNU gettext library.
                    258:           nls_cv_use_gnu_gettext=yes
                    259:         fi
                    260:       fi
                    261: 
                    262:       if test "$nls_cv_use_gnu_gettext" = "yes"; then
                    263:         dnl Mark actions used to generate GNU NLS library.
                    264:         BUILD_INCLUDED_LIBINTL=yes
                    265:         USE_INCLUDED_LIBINTL=yes
                    266:         LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
                    267:         LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
                    268:         LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
                    269:       fi
                    270: 
                    271:       CATOBJEXT=
                    272:       if test "$gt_use_preinstalled_gnugettext" = "yes" \
                    273:          || test "$nls_cv_use_gnu_gettext" = "yes"; then
                    274:         dnl Mark actions to use GNU gettext tools.
                    275:         CATOBJEXT=.gmo
                    276:       fi
                    277:     ])
                    278: 
                    279:     if test -n "$INTL_MACOSX_LIBS"; then
                    280:       if test "$gt_use_preinstalled_gnugettext" = "yes" \
                    281:          || test "$nls_cv_use_gnu_gettext" = "yes"; then
                    282:         dnl Some extra flags are needed during linking.
                    283:         LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
                    284:         LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
                    285:       fi
                    286:     fi
                    287: 
                    288:     if test "$gt_use_preinstalled_gnugettext" = "yes" \
                    289:        || test "$nls_cv_use_gnu_gettext" = "yes"; then
                    290:       AC_DEFINE([ENABLE_NLS], [1],
                    291:         [Define to 1 if translation of program messages to the user's native language
                    292:    is requested.])
                    293:     else
                    294:       USE_NLS=no
                    295:     fi
                    296:   fi
                    297: 
                    298:   AC_MSG_CHECKING([whether to use NLS])
                    299:   AC_MSG_RESULT([$USE_NLS])
                    300:   if test "$USE_NLS" = "yes"; then
                    301:     AC_MSG_CHECKING([where the gettext function comes from])
                    302:     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
                    303:       if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
                    304:         gt_source="external libintl"
                    305:       else
                    306:         gt_source="libc"
                    307:       fi
                    308:     else
                    309:       gt_source="included intl directory"
                    310:     fi
                    311:     AC_MSG_RESULT([$gt_source])
                    312:   fi
                    313: 
                    314:   if test "$USE_NLS" = "yes"; then
                    315: 
                    316:     if test "$gt_use_preinstalled_gnugettext" = "yes"; then
                    317:       if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
                    318:         AC_MSG_CHECKING([how to link with libintl])
                    319:         AC_MSG_RESULT([$LIBINTL])
                    320:         AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
                    321:       fi
                    322: 
                    323:       dnl For backward compatibility. Some packages may be using this.
                    324:       AC_DEFINE([HAVE_GETTEXT], [1],
                    325:        [Define if the GNU gettext() function is already present or preinstalled.])
                    326:       AC_DEFINE([HAVE_DCGETTEXT], [1],
                    327:        [Define if the GNU dcgettext() function is already present or preinstalled.])
                    328:     fi
                    329: 
                    330:     dnl We need to process the po/ directory.
                    331:     POSUB=po
                    332:   fi
                    333: 
                    334:   ifelse(gt_included_intl, yes, [
                    335:     dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
                    336:     dnl to 'yes' because some of the testsuite requires it.
                    337:     if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
                    338:       BUILD_INCLUDED_LIBINTL=yes
                    339:     fi
                    340: 
                    341:     dnl Make all variables we use known to autoconf.
                    342:     AC_SUBST([BUILD_INCLUDED_LIBINTL])
                    343:     AC_SUBST([USE_INCLUDED_LIBINTL])
                    344:     AC_SUBST([CATOBJEXT])
                    345: 
                    346:     dnl For backward compatibility. Some configure.ins may be using this.
                    347:     nls_cv_header_intl=
                    348:     nls_cv_header_libgt=
                    349: 
                    350:     dnl For backward compatibility. Some Makefiles may be using this.
                    351:     DATADIRNAME=share
                    352:     AC_SUBST([DATADIRNAME])
                    353: 
                    354:     dnl For backward compatibility. Some Makefiles may be using this.
                    355:     INSTOBJEXT=.mo
                    356:     AC_SUBST([INSTOBJEXT])
                    357: 
                    358:     dnl For backward compatibility. Some Makefiles may be using this.
                    359:     GENCAT=gencat
                    360:     AC_SUBST([GENCAT])
                    361: 
                    362:     dnl For backward compatibility. Some Makefiles may be using this.
                    363:     INTLOBJS=
                    364:     if test "$USE_INCLUDED_LIBINTL" = yes; then
                    365:       INTLOBJS="\$(GETTOBJS)"
                    366:     fi
                    367:     AC_SUBST([INTLOBJS])
                    368: 
                    369:     dnl Enable libtool support if the surrounding package wishes it.
                    370:     INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
                    371:     AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
                    372:   ])
                    373: 
                    374:   dnl For backward compatibility. Some Makefiles may be using this.
                    375:   INTLLIBS="$LIBINTL"
                    376:   AC_SUBST([INTLLIBS])
                    377: 
                    378:   dnl Make all documented variables known to autoconf.
                    379:   AC_SUBST([LIBINTL])
                    380:   AC_SUBST([LTLIBINTL])
                    381:   AC_SUBST([POSUB])
                    382: ])
                    383: 
                    384: 
                    385: dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
                    386: m4_define([gt_NEEDS_INIT],
                    387: [
                    388:   m4_divert_text([DEFAULTS], [gt_needs=])
                    389:   m4_define([gt_NEEDS_INIT], [])
                    390: ])
                    391: 
                    392: 
                    393: dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
                    394: AC_DEFUN([AM_GNU_GETTEXT_NEED],
                    395: [
                    396:   m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
                    397: ])
                    398: 
                    399: 
                    400: dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
                    401: AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>