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.
12 [AC_MSG_CHECKING([whether NLS is requested])
13 dnl Default is enabled NLS
15 [ --disable-nls do not use Native Language Support],
16 USE_NLS=$enableval, USE_NLS=yes)
17 AC_MSG_RESULT($USE_NLS)
20 USE_INCLUDED_LIBINTL=no
22 dnl If we use NLS figure out what method
23 if test "$USE_NLS" = "yes"; then
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.
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)])])
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],
77 if test "$CATOBJEXT" = "NONE"; then
78 AC_MSG_CHECKING([whether catgets can be used])
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.
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)
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
103 INTLDEPS='$(top_builddir)/intl/libintl.a'
105 LIBS=`echo $LIBS | sed -e 's/-lintl//'`
106 nls_cv_header_intl=intl/libintl.h
107 nls_cv_header_libgt=intl/libgettext.h
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
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)'`"], :)
128 USE_INCLUDED_LIBINTL=yes
132 INTLDEPS='$(top_builddir)/intl/libintl.a'
134 LIBS=`echo $LIBS | sed -e 's/-lintl//'`
135 nls_cv_header_intl=intl/libintl.h
136 nls_cv_header_libgt=intl/libgettext.h
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
147 [found xgettext programs is not GNU xgettext; ignore it])
152 # We need to process the po/ directory.
156 nls_cv_header_intl=intl/libintl.h
157 nls_cv_header_libgt=intl/libgettext.h
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
164 USE_INCLUDED_LIBINTL=yes
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
170 for lang in $ALL_LINGUAS; do
171 GMOFILES="$GMOFILES $lang.gmo"
172 POFILES="$POFILES $lang.po"
175 dnl Make all variables we use known to autoconf.
176 AC_SUBST(USE_INCLUDED_LIBINTL)
179 AC_SUBST(DATADIRNAME)
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)
210 if test "${ac_cv_func_stpcpy}" = "yes"; then
211 AC_DEFINE(HAVE_STPCPY)
217 if test "x$CATOBJEXT" != "x"; then
218 if test "x$ALL_LINGUAS" = "x"; then
221 AC_MSG_CHECKING(for catalogs to be installed)
223 for lang in ${LINGUAS=$ALL_LINGUAS}; do
224 case "$ALL_LINGUAS" in
225 *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;;
229 AC_MSG_RESULT($LINGUAS)
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
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>"
245 /* The system does not provide the header <locale.h>. Take care yourself. */"
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
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
267 if test "$PACKAGE" = "gettext"; then
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.
281 if test -n "$ac_aux_dir"; then
282 MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs"
284 if test -z "$MKINSTALLDIRS"; then
285 MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
287 AC_SUBST(MKINSTALLDIRS)
289 dnl *** For now the libtool support in intl/Makefile is not for real.
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/"
300 posrcprefix="../$srcdir/"
306 sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \
307 < $srcdir/po/POTFILES.in > po/POTFILES
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.
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,
329 ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
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
337 ac_cv_path_$1="$ac_dir/$ac_word"
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"
350 if test -n "[$]$1"; then
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.
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)