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

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

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