add IFCVT_MODIFY macros for the MD file to tweak the conditional execution support.
[official-gcc.git] / texinfo / acinclude.m4
blob2f7869f8fc15893930cae04efc3537bdf1d65345
1 # Macro to add for using GNU gettext.
2 # Ulrich Drepper <drepper@cygnus.com>, 1995.
4 # This file can be copied and used freely without restrictions.  It can
5 # be used in projects which are not available under the GNU Public License
6 # but which still want to provide support for the GNU gettext functionality.
7 # Please note that the actual code is *not* freely available.
9 # serial 3
11 AC_DEFUN(AM_WITH_NLS,
12   [AC_MSG_CHECKING([whether NLS is requested])
13     dnl Default is enabled NLS
14     AC_ARG_ENABLE(nls,
15       [  --disable-nls           do not use Native Language Support],
16       USE_NLS=$enableval, USE_NLS=yes)
17     AC_MSG_RESULT($USE_NLS)
18     AC_SUBST(USE_NLS)
20     USE_INCLUDED_LIBINTL=no
22     dnl If we use NLS figure out what method
23     if test "$USE_NLS" = "yes"; then
24       AC_DEFINE(ENABLE_NLS)
25       AC_MSG_CHECKING([whether included gettext is requested])
26       AC_ARG_WITH(included-gettext,
27         [  --with-included-gettext use the GNU gettext library included here],
28         nls_cv_force_use_gnu_gettext=$withval,
29         nls_cv_force_use_gnu_gettext=no)
30       AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
32       nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
33       if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
34         dnl User does not insist on using GNU NLS library.  Figure out what
35         dnl to use.  If gettext or catgets are available (in this order) we
36         dnl use this.  Else we have to fall back to GNU NLS library.
37         dnl catgets is only used if permitted by option --with-catgets.
38         nls_cv_header_intl=
39         nls_cv_header_libgt=
40         CATOBJEXT=NONE
42         AC_CHECK_HEADER(libintl.h,
43           [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc,
44             [AC_TRY_LINK([#include <libintl.h>], [return (int) gettext ("")],
45                gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)])
47            if test "$gt_cv_func_gettext_libc" != "yes"; then
48              AC_CHECK_LIB(intl, bindtextdomain,
49                [AC_CACHE_CHECK([for gettext in libintl],
50                  gt_cv_func_gettext_libintl,
51                  [AC_TRY_LINK([], [return (int) gettext ("")],
52                  gt_cv_func_gettext_libintl=yes,
53                  gt_cv_func_gettext_libintl=no)])])
54            fi
56            if test "$gt_cv_func_gettext_libc" = "yes" \
57               || test "$gt_cv_func_gettext_libintl" = "yes"; then
58               AC_DEFINE(HAVE_GETTEXT)
59               AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
60                 [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl
61               if test "$MSGFMT" != "no"; then
62                 AC_CHECK_FUNCS(dcgettext)
63                 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
64                 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
65                   [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
66                 AC_TRY_LINK(, [extern int _nl_msg_cat_cntr;
67                                return _nl_msg_cat_cntr],
68                   [CATOBJEXT=.gmo
69                    DATADIRNAME=share],
70                   [CATOBJEXT=.mo
71                    DATADIRNAME=lib])
72                 INSTOBJEXT=.mo
73               fi
74             fi
75         ])
77         if test "$CATOBJEXT" = "NONE"; then
78           AC_MSG_CHECKING([whether catgets can be used])
79           AC_ARG_WITH(catgets,
80             [  --with-catgets          use catgets functions if available],
81             nls_cv_use_catgets=$withval, nls_cv_use_catgets=no)
82           AC_MSG_RESULT($nls_cv_use_catgets)
84           if test "$nls_cv_use_catgets" = "yes"; then
85             dnl No gettext in C library.  Try catgets next.
86             AC_CHECK_LIB(i, main)
87             AC_CHECK_FUNC(catgets,
88               [AC_DEFINE(HAVE_CATGETS)
89                INTLOBJS="\$(CATOBJS)"
90                AC_PATH_PROG(GENCAT, gencat, no)dnl
91                if test "$GENCAT" != "no"; then
92                  AC_PATH_PROG(GMSGFMT, gmsgfmt, no)
93                  if test "$GMSGFMT" = "no"; then
94                    AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt,
95                     [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)
96                  fi
97                  AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
98                    [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
99                  USE_INCLUDED_LIBINTL=yes
100                  CATOBJEXT=.cat
101                  INSTOBJEXT=.cat
102                  DATADIRNAME=lib
103                  INTLDEPS='$(top_builddir)/intl/libintl.a'
104                  INTLLIBS=$INTLDEPS
105                  LIBS=`echo $LIBS | sed -e 's/-lintl//'`
106                  nls_cv_header_intl=intl/libintl.h
107                  nls_cv_header_libgt=intl/libgettext.h
108                fi])
109           fi
110         fi
112         if test "$CATOBJEXT" = "NONE"; then
113           dnl Neither gettext nor catgets in included in the C library.
114           dnl Fall back on GNU gettext library.
115           nls_cv_use_gnu_gettext=yes
116         fi
117       fi
119       if test "$nls_cv_use_gnu_gettext" = "yes"; then
120         dnl Mark actions used to generate GNU NLS library.
121         INTLOBJS="\$(GETTOBJS)"
122         AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
123           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt)
124         AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
125         AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
126           [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :)
127         AC_SUBST(MSGFMT)
128         USE_INCLUDED_LIBINTL=yes
129         CATOBJEXT=.gmo
130         INSTOBJEXT=.mo
131         DATADIRNAME=share
132         INTLDEPS='$(top_builddir)/intl/libintl.a'
133         INTLLIBS=$INTLDEPS
134         LIBS=`echo $LIBS | sed -e 's/-lintl//'`
135         nls_cv_header_intl=intl/libintl.h
136         nls_cv_header_libgt=intl/libgettext.h
137       fi
139       dnl Test whether we really found GNU xgettext.
140       if test "$XGETTEXT" != ":"; then
141         dnl If it is no GNU xgettext we define it as : so that the
142         dnl Makefiles still can work.
143         if $XGETTEXT --omit-header /dev/null 2> /dev/null; then
144           : ;
145         else
146           AC_MSG_RESULT(
147             [found xgettext programs is not GNU xgettext; ignore it])
148           XGETTEXT=":"
149         fi
150       fi
152       # We need to process the po/ directory.
153       POSUB=po
154     else
155       DATADIRNAME=share
156       nls_cv_header_intl=intl/libintl.h
157       nls_cv_header_libgt=intl/libgettext.h
158     fi
160     # If this is used in GNU gettext we have to set USE_NLS to `yes'
161     # because some of the sources are only built for this goal.
162     if test "$PACKAGE" = gettext; then
163       USE_NLS=yes
164       USE_INCLUDED_LIBINTL=yes
165     fi
167     dnl These rules are solely for the distribution goal.  While doing this
168     dnl we only have to keep exactly one list of the available catalogs
169     dnl in configure.in.
170     for lang in $ALL_LINGUAS; do
171       GMOFILES="$GMOFILES $lang.gmo"
172       POFILES="$POFILES $lang.po"
173     done
175     dnl Make all variables we use known to autoconf.
176     AC_SUBST(USE_INCLUDED_LIBINTL)
177     AC_SUBST(CATALOGS)
178     AC_SUBST(CATOBJEXT)
179     AC_SUBST(DATADIRNAME)
180     AC_SUBST(GMOFILES)
181     AC_SUBST(INSTOBJEXT)
182     AC_SUBST(INTLDEPS)
183     AC_SUBST(INTLLIBS)
184     AC_SUBST(INTLOBJS)
185     AC_SUBST(POFILES)
186     AC_SUBST(POSUB)
187   ])
189 AC_DEFUN(AM_GNU_GETTEXT,
190   [AC_REQUIRE([AC_PROG_MAKE_SET])dnl
191    AC_REQUIRE([AC_PROG_CC])dnl
192    AC_REQUIRE([AC_PROG_RANLIB])dnl
193    AC_REQUIRE([AC_ISC_POSIX])dnl
194    AC_REQUIRE([AC_HEADER_STDC])dnl
195    AC_REQUIRE([AC_C_CONST])dnl
196    AC_REQUIRE([AC_C_INLINE])dnl
197    AC_REQUIRE([AC_TYPE_OFF_T])dnl
198    AC_REQUIRE([AC_TYPE_SIZE_T])dnl
199    AC_REQUIRE([AC_FUNC_ALLOCA])dnl
200    AC_REQUIRE([AC_FUNC_MMAP])dnl
202    AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \
203 unistd.h values.h sys/param.h])
204    AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \
205 __argz_count __argz_stringify __argz_next])
207    if test "${ac_cv_func_stpcpy+set}" != "set"; then
208      AC_CHECK_FUNCS(stpcpy)
209    fi
210    if test "${ac_cv_func_stpcpy}" = "yes"; then
211      AC_DEFINE(HAVE_STPCPY)
212    fi
214    AM_LC_MESSAGES
215    AM_WITH_NLS
217    if test "x$CATOBJEXT" != "x"; then
218      if test "x$ALL_LINGUAS" = "x"; then
219        LINGUAS=
220      else
221        AC_MSG_CHECKING(for catalogs to be installed)
222        NEW_LINGUAS=
223        for lang in ${LINGUAS=$ALL_LINGUAS}; do
224          case "$ALL_LINGUAS" in
225           *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
226          esac
227        done
228        LINGUAS=$NEW_LINGUAS
229        AC_MSG_RESULT($LINGUAS)
230      fi
232      dnl Construct list of names of catalog files to be constructed.
233      if test -n "$LINGUAS"; then
234        for lang in $LINGUAS; do CATALOGS="$CATALOGS $lang$CATOBJEXT"; done
235      fi
236    fi
238    dnl The reference to <locale.h> in the installed <libintl.h> file
239    dnl must be resolved because we cannot expect the users of this
240    dnl to define HAVE_LOCALE_H.
241    if test $ac_cv_header_locale_h = yes; then
242      INCLUDE_LOCALE_H="#include <locale.h>"
243    else
244      INCLUDE_LOCALE_H="\
245 /* The system does not provide the header <locale.h>.  Take care yourself.  */"
246    fi
247    AC_SUBST(INCLUDE_LOCALE_H)
249    dnl Determine which catalog format we have (if any is needed)
250    dnl For now we know about two different formats:
251    dnl   Linux libc-5 and the normal X/Open format
252    test -d intl || mkdir intl
253    if test "$CATOBJEXT" = ".cat"; then
254      AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen)
256      dnl Transform the SED scripts while copying because some dumb SEDs
257      dnl cannot handle comments.
258      sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed
259    fi
260    dnl po2tbl.sed is always needed.
261    sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \
262      $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed
264    dnl In the intl/Makefile.in we have a special dependency which makes
265    dnl only sense for gettext.  We comment this out for non-gettext
266    dnl packages.
267    if test "$PACKAGE" = "gettext"; then
268      GT_NO="#NO#"
269      GT_YES=
270    else
271      GT_NO=
272      GT_YES="#YES#"
273    fi
274    AC_SUBST(GT_NO)
275    AC_SUBST(GT_YES)
277    dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
278    dnl find the mkinstalldirs script in another subdir but ($top_srcdir).
279    dnl Try to locate is.
280    MKINSTALLDIRS=
281    if test -n "$ac_aux_dir"; then
282      MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
283    fi
284    if test -z "$MKINSTALLDIRS"; then
285      MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
286    fi
287    AC_SUBST(MKINSTALLDIRS)
289    dnl *** For now the libtool support in intl/Makefile is not for real.
290    l=
291    AC_SUBST(l)
293    dnl Generate list of files to be processed by xgettext which will
294    dnl be included in po/Makefile.
295    test -d po || mkdir po
296    if test "x$srcdir" != "x."; then
297      if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then
298        posrcprefix="$srcdir/"
299      else
300        posrcprefix="../$srcdir/"
301      fi
302    else
303      posrcprefix="../"
304    fi
305    rm -f po/POTFILES
306    sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
307         < $srcdir/po/POTFILES.in > po/POTFILES
308   ])
310 # Search path for a program which passes the given test.
311 # Ulrich Drepper <drepper@cygnus.com>, 1996.
313 # This file can be copied and used freely without restrictions.  It can
314 # be used in projects which are not available under the GNU Public License
315 # but which still want to provide support for the GNU gettext functionality.
316 # Please note that the actual code is *not* freely available.
318 # serial 1
320 dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
321 dnl   TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
322 AC_DEFUN(AM_PATH_PROG_WITH_TEST,
323 [# Extract the first word of "$2", so it can be a program name with args.
324 set dummy $2; ac_word=[$]2
325 AC_MSG_CHECKING([for $ac_word])
326 AC_CACHE_VAL(ac_cv_path_$1,
327 [case "[$]$1" in
328   /*)
329   ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
330   ;;
331   *)
332   IFS="${IFS=   }"; ac_save_ifs="$IFS"; IFS="${IFS}:"
333   for ac_dir in ifelse([$5], , $PATH, [$5]); do
334     test -z "$ac_dir" && ac_dir=.
335     if test -f $ac_dir/$ac_word; then
336       if [$3]; then
337         ac_cv_path_$1="$ac_dir/$ac_word"
338         break
339       fi
340     fi
341   done
342   IFS="$ac_save_ifs"
343 dnl If no 4th arg is given, leave the cache variable unset,
344 dnl so AC_PATH_PROGS will keep looking.
345 ifelse([$4], , , [  test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
346 ])dnl
347   ;;
348 esac])dnl
349 $1="$ac_cv_path_$1"
350 if test -n "[$]$1"; then
351   AC_MSG_RESULT([$]$1)
352 else
353   AC_MSG_RESULT(no)
355 AC_SUBST($1)dnl
358 # Check whether LC_MESSAGES is available in <locale.h>.
359 # Ulrich Drepper <drepper@cygnus.com>, 1995.
361 # This file can be copied and used freely without restrictions.  It can
362 # be used in projects which are not available under the GNU Public License
363 # but which still want to provide support for the GNU gettext functionality.
364 # Please note that the actual code is *not* freely available.
366 # serial 1
368 AC_DEFUN(AM_LC_MESSAGES,
369   [if test $ac_cv_header_locale_h = yes; then
370     AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
371       [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
372        am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
373     if test $am_cv_val_LC_MESSAGES = yes; then
374       AC_DEFINE(HAVE_LC_MESSAGES)
375     fi
376   fi])