source: trunk/essentials/sys-apps/texinfo/m4/po.m4

Last change on this file was 2634, checked in by bird, 19 years ago

drive specs.

File size: 17.5 KB
Line 
1# po.m4 serial 3 (gettext-0.14)
2dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
3dnl This file is free software, distributed under the terms of the GNU
4dnl General Public License. As a special exception to the GNU General
5dnl Public License, this file may be distributed as part of a program
6dnl that contains a configuration script generated by Autoconf, under
7dnl the same distribution terms as the rest of that program.
8dnl
9dnl This file can can be used in projects which are not available under
10dnl the GNU General Public License or the GNU Library General Public
11dnl License but which still want to provide support for the GNU gettext
12dnl functionality.
13dnl Please note that the actual code of the GNU gettext library is covered
14dnl by the GNU Library General Public License, and the rest of the GNU
15dnl gettext package package is covered by the GNU General Public License.
16dnl They are *not* in the public domain.
17
18dnl Authors:
19dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
20dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
21
22dnl Checks for all prerequisites of the po subdirectory.
23AC_DEFUN([AM_PO_SUBDIRS],
24[
25 AC_REQUIRE([AC_PROG_MAKE_SET])dnl
26 AC_REQUIRE([AC_PROG_INSTALL])dnl
27 AC_REQUIRE([AM_MKINSTALLDIRS])dnl
28 AC_REQUIRE([AM_NLS])dnl
29
30 dnl Perform the following tests also if --disable-nls has been given,
31 dnl because they are needed for "make dist" to work.
32
33 dnl Search for GNU msgfmt in the PATH.
34 dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
35 dnl The second test excludes FreeBSD msgfmt.
36 AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
37 [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
38 (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
39 :)
40 AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
41
42 dnl Search for GNU xgettext 0.12 or newer in the PATH.
43 dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
44 dnl The second test excludes FreeBSD xgettext.
45 AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
46 [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
47 (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
48 :)
49 dnl Remove leftover from FreeBSD xgettext call.
50 rm -f messages.po
51
52 dnl Search for GNU msgmerge 0.11 or newer in the PATH.
53 AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
54 [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
55
56 dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
57 dnl Test whether we really found GNU msgfmt.
58 if test "$GMSGFMT" != ":"; then
59 dnl If it is no GNU msgfmt we define it as : so that the
60 dnl Makefiles still can work.
61 if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
62 (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
63 : ;
64 else
65 GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
66 AC_MSG_RESULT(
67 [found $GMSGFMT program is not GNU msgfmt; ignore it])
68 GMSGFMT=":"
69 fi
70 fi
71
72 dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
73 dnl Test whether we really found GNU xgettext.
74 if test "$XGETTEXT" != ":"; then
75 dnl If it is no GNU xgettext we define it as : so that the
76 dnl Makefiles still can work.
77 if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
78 (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
79 : ;
80 else
81 AC_MSG_RESULT(
82 [found xgettext program is not GNU xgettext; ignore it])
83 XGETTEXT=":"
84 fi
85 dnl Remove leftover from FreeBSD xgettext call.
86 rm -f messages.po
87 fi
88
89 AC_OUTPUT_COMMANDS([
90 for ac_file in $CONFIG_FILES; do
91 # Support "outfile[:infile[:infile...]]"
92 case "$ac_file" in
93 *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
94 esac
95 # PO directories have a Makefile.in generated from Makefile.in.in.
96 case "$ac_file" in */Makefile.in)
97 # Adjust a relative srcdir.
98 ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
99 ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
100 ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
101 # In autoconf-2.13 it is called $ac_given_srcdir.
102 # In autoconf-2.50 it is called $srcdir.
103 test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
104 case "$ac_given_srcdir" in
105 .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
106 # bird: [[/\\]]* | [[a-zA-Z]]:*) - this was passed right thru...
107 [/\\]* | [a-zA-Z]:*)
108 top_srcdir="$ac_given_srcdir" ;;
109 *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
110 esac
111 if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
112 rm -f "$ac_dir/POTFILES"
113 test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
114 cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
115 POMAKEFILEDEPS="POTFILES.in"
116 # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
117 # on $ac_dir but don't depend on user-specified configuration
118 # parameters.
119 if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
120 # The LINGUAS file contains the set of available languages.
121 if test -n "$OBSOLETE_ALL_LINGUAS"; then
122 test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
123 fi
124 ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
125 # Hide the ALL_LINGUAS assigment from automake.
126 eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
127 POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
128 else
129 # The set of available languages was given in configure.in.
130 eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
131 fi
132 # Compute POFILES
133 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
134 # Compute UPDATEPOFILES
135 # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
136 # Compute DUMMYPOFILES
137 # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
138 # Compute GMOFILES
139 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
140 case "$ac_given_srcdir" in
141 .) srcdirpre= ;;
142 *) srcdirpre='$(srcdir)/' ;;
143 esac
144 POFILES=
145 UPDATEPOFILES=
146 DUMMYPOFILES=
147 GMOFILES=
148 for lang in $ALL_LINGUAS; do
149 POFILES="$POFILES $srcdirpre$lang.po"
150 UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
151 DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
152 GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
153 done
154 # CATALOGS depends on both $ac_dir and the user's LINGUAS
155 # environment variable.
156 INST_LINGUAS=
157 if test -n "$ALL_LINGUAS"; then
158 for presentlang in $ALL_LINGUAS; do
159 useit=no
160 if test "%UNSET%" != "$LINGUAS"; then
161 desiredlanguages="$LINGUAS"
162 else
163 desiredlanguages="$ALL_LINGUAS"
164 fi
165 for desiredlang in $desiredlanguages; do
166 # Use the presentlang catalog if desiredlang is
167 # a. equal to presentlang, or
168 # b. a variant of presentlang (because in this case,
169 # presentlang can be used as a fallback for messages
170 # which are not translated in the desiredlang catalog).
171 case "$desiredlang" in
172 "$presentlang"*) useit=yes;;
173 esac
174 done
175 if test $useit = yes; then
176 INST_LINGUAS="$INST_LINGUAS $presentlang"
177 fi
178 done
179 fi
180 CATALOGS=
181 if test -n "$INST_LINGUAS"; then
182 for lang in $INST_LINGUAS; do
183 CATALOGS="$CATALOGS $lang.gmo"
184 done
185 fi
186 test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
187 sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
188 for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
189 if test -f "$f"; then
190 case "$f" in
191 *.orig | *.bak | *~) ;;
192 *) cat "$f" >> "$ac_dir/Makefile" ;;
193 esac
194 fi
195 done
196 fi
197 ;;
198 esac
199 done],
200 [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
201 # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it
202 # from automake.
203 eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
204 # Capture the value of LINGUAS because we need it to compute CATALOGS.
205 LINGUAS="${LINGUAS-%UNSET%}"
206 ])
207])
208
209dnl Postprocesses a Makefile in a directory containing PO files.
210AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
211[
212 # When this code is run, in config.status, two variables have already been
213 # set:
214 # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
215 # - LINGUAS is the value of the environment variable LINGUAS at configure
216 # time.
217
218changequote(,)dnl
219 # Adjust a relative srcdir.
220 ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
221 ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
222 ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
223 # In autoconf-2.13 it is called $ac_given_srcdir.
224 # In autoconf-2.50 it is called $srcdir.
225 test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
226 case "$ac_given_srcdir" in
227 .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
228 [[/\\]]* | [[a-zA-Z]]:*)
229 top_srcdir="$ac_given_srcdir" ;;
230 *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
231 esac
232
233 # Find a way to echo strings without interpreting backslash.
234 if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
235 gt_echo='echo'
236 else
237 if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
238 gt_echo='printf %s\n'
239 else
240 echo_func () {
241 cat <<EOT
242$*
243EOT
244 }
245 gt_echo='echo_func'
246 fi
247 fi
248
249 # A sed script that extracts the value of VARIABLE from a Makefile.
250 sed_x_variable='
251# Test if the hold space is empty.
252x
253s/P/P/
254x
255ta
256# Yes it was empty. Look if we have the expected variable definition.
257/^[ ]*VARIABLE[ ]*=/{
258 # Seen the first line of the variable definition.
259 s/^[ ]*VARIABLE[ ]*=//
260 ba
261}
262bd
263:a
264# Here we are processing a line from the variable definition.
265# Remove comment, more precisely replace it with a space.
266s/#.*$/ /
267# See if the line ends in a backslash.
268tb
269:b
270s/\\$//
271# Print the line, without the trailing backslash.
272p
273tc
274# There was no trailing backslash. The end of the variable definition is
275# reached. Clear the hold space.
276s/^.*$//
277x
278bd
279:c
280# A trailing backslash means that the variable definition continues in the
281# next line. Put a nonempty string into the hold space to indicate this.
282s/^.*$/P/
283x
284:d
285'
286changequote([,])dnl
287
288 # Set POTFILES to the value of the Makefile variable POTFILES.
289 sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`"
290 POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
291 # Compute POTFILES_DEPS as
292 # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
293 POTFILES_DEPS=
294 for file in $POTFILES; do
295 POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
296 done
297 POMAKEFILEDEPS=""
298
299 if test -n "$OBSOLETE_ALL_LINGUAS"; then
300 test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
301 fi
302 if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
303 # The LINGUAS file contains the set of available languages.
304 ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
305 POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
306 else
307 # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
308 sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`"
309 ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
310 fi
311 # Hide the ALL_LINGUAS assigment from automake.
312 eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
313 # Compute POFILES
314 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
315 # Compute UPDATEPOFILES
316 # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
317 # Compute DUMMYPOFILES
318 # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
319 # Compute GMOFILES
320 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
321 # Compute PROPERTIESFILES
322 # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
323 # Compute CLASSFILES
324 # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
325 # Compute QMFILES
326 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
327 # Compute MSGFILES
328 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
329 # Compute RESOURCESDLLFILES
330 # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
331 case "$ac_given_srcdir" in
332 .) srcdirpre= ;;
333 *) srcdirpre='$(srcdir)/' ;;
334 esac
335 POFILES=
336 UPDATEPOFILES=
337 DUMMYPOFILES=
338 GMOFILES=
339 PROPERTIESFILES=
340 CLASSFILES=
341 QMFILES=
342 MSGFILES=
343 RESOURCESDLLFILES=
344 for lang in $ALL_LINGUAS; do
345 POFILES="$POFILES $srcdirpre$lang.po"
346 UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
347 DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
348 GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
349 PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
350 CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
351 QMFILES="$QMFILES $srcdirpre$lang.qm"
352 frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
353 MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
354 frobbedlang=`echo $lang | sed -e 's/_/-/g'`
355 RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
356 done
357 # CATALOGS depends on both $ac_dir and the user's LINGUAS
358 # environment variable.
359 INST_LINGUAS=
360 if test -n "$ALL_LINGUAS"; then
361 for presentlang in $ALL_LINGUAS; do
362 useit=no
363 if test "%UNSET%" != "$LINGUAS"; then
364 desiredlanguages="$LINGUAS"
365 else
366 desiredlanguages="$ALL_LINGUAS"
367 fi
368 for desiredlang in $desiredlanguages; do
369 # Use the presentlang catalog if desiredlang is
370 # a. equal to presentlang, or
371 # b. a variant of presentlang (because in this case,
372 # presentlang can be used as a fallback for messages
373 # which are not translated in the desiredlang catalog).
374 case "$desiredlang" in
375 "$presentlang"*) useit=yes;;
376 esac
377 done
378 if test $useit = yes; then
379 INST_LINGUAS="$INST_LINGUAS $presentlang"
380 fi
381 done
382 fi
383 CATALOGS=
384 JAVACATALOGS=
385 QTCATALOGS=
386 TCLCATALOGS=
387 CSHARPCATALOGS=
388 if test -n "$INST_LINGUAS"; then
389 for lang in $INST_LINGUAS; do
390 CATALOGS="$CATALOGS $lang.gmo"
391 JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
392 QTCATALOGS="$QTCATALOGS $lang.qm"
393 frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
394 TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
395 frobbedlang=`echo $lang | sed -e 's/_/-/g'`
396 CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
397 done
398 fi
399
400 sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
401 if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
402 # Add dependencies that cannot be formulated as a simple suffix rule.
403 for lang in $ALL_LINGUAS; do
404 frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
405 cat >> "$ac_file.tmp" <<EOF
406$frobbedlang.msg: $lang.po
407 @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
408 \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
409EOF
410 done
411 fi
412 if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
413 # Add dependencies that cannot be formulated as a simple suffix rule.
414 for lang in $ALL_LINGUAS; do
415 frobbedlang=`echo $lang | sed -e 's/_/-/g'`
416 cat >> "$ac_file.tmp" <<EOF
417$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
418 @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
419 \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
420EOF
421 done
422 fi
423 if test -n "$POMAKEFILEDEPS"; then
424 cat >> "$ac_file.tmp" <<EOF
425Makefile: $POMAKEFILEDEPS
426EOF
427 fi
428 mv "$ac_file.tmp" "$ac_file"
429])
Note: See TracBrowser for help on using the repository browser.