@ -1,13 +1,14 @@
# Makefile for PO directory in any package using GNU gettext.
# Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
# Copyright (C) 1995-2000 Ulrich Drepper <drepper@gnu.ai.mit.edu>
# Copyright (C) 2000-2020 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved. This file is offered as-is,
# without any warranty.
#
# Origin: gettext-0.19.8
GETTEXT_MACRO_VERSION = 0.19
# Origin: gettext-0.2 1
GETTEXT_MACRO_VERSION = 0.20
PACKAGE = @PACKAGE@
VERSION = @VERSION@
@ -52,16 +53,13 @@ GMSGFMT_ = @GMSGFMT@
GMSGFMT_no = @GMSGFMT@
GMSGFMT_yes = @GMSGFMT_015@
GMSGFMT = $( GMSGFMT_$( USE_MSGCTXT) )
MSGFMT_ = @MSGFMT@
MSGFMT_no = @MSGFMT@
MSGFMT_yes = @MSGFMT_015@
MSGFMT = $( MSGFMT_$( USE_MSGCTXT) )
XGETTEXT_ = @XGETTEXT@
XGETTEXT_no = @XGETTEXT@
XGETTEXT_yes = @XGETTEXT_015@
XGETTEXT = $( XGETTEXT_$( USE_MSGCTXT) )
MSGMERGE = msgmerge
MSGMERGE = @MSGMERGE@
MSGMERGE_UPDATE = @MSGMERGE@ --update
MSGMERGE_FOR_MSGFMT_OPTION = @MSGMERGE_FOR_MSGFMT_OPTION@
MSGINIT = msginit
MSGCONV = msgconv
MSGFILTER = msgfilter
@ -92,27 +90,44 @@ DISTFILESDEPS = $(DISTFILESDEPS_$(DIST_DEPENDS_ON_UPDATE_PO))
# Makevars gets inserted here. (Don't remove this line!)
.SUFFIXES :
.SUFFIXES : .po .gmo .mo .sed .sin .nop .po -create .po -update
all : all -@USE_NLS @
.po.mo :
@echo " $( MSGFMT) -c -o $@ $< " ; \
$( MSGFMT) -c -o t-$@ $< && mv t-$@ $@
.SUFFIXES :
.SUFFIXES : .po .gmo .sed .sin .nop .po -create .po -update
# The .pot file, stamp-po, .po files, and .gmo files appear in release tarballs.
# The GNU Coding Standards say in
# <https://www.gnu.org/prep/standards/html_node/Makefile-Basics.html>:
# "GNU distributions usually contain some files which are not source files
# ... . Since these files normally appear in the source directory, they
# should always appear in the source directory, not in the build directory.
# So Makefile rules to update them should put the updated files in the
# source directory."
# Therefore we put these files in the source directory, not the build directory.
# During .po -> .gmo conversion, take into account the most recent changes to
# the .pot file. This eliminates the need to update the .po files when the
# .pot file has changed, which would be troublesome if the .po files are put
# under version control.
$(GMOFILES) : $( srcdir ) /$( DOMAIN ) .pot
.po.gmo :
@lang= ` echo $* | sed -e 's,.*/,,' ` ; \
test " $( srcdir) " = . && cdcmd = "" || cdcmd = " cd $( srcdir) && " ; \
echo " $$ {cdcmd}rm -f $$ {lang}.gmo && $( GMSGFMT) -c --statistics --verbose -o $$ {lang}.gmo $$ {lang}.po " ; \
cd $( srcdir) && rm -f $$ { lang} .gmo && $( GMSGFMT) -c --statistics --verbose -o t-$$ { lang} .gmo $$ { lang} .po && mv t-$$ { lang} .gmo $$ { lang} .gmo
echo " $$ {cdcmd}rm -f $$ {lang}.gmo && $( MSGMERGE) $( MSGMERGE_FOR_MSGFMT_OPTION) -o $$ {lang}.1po $$ {lang}.po $( DOMAIN) .pot && $( GMSGFMT) -c --statistics --verbose -o $$ {lang}.gmo $$ {lang}.1po && rm -f $$ {lang}.1po " ; \
cd $( srcdir) && \
rm -f $$ { lang} .gmo && \
$( MSGMERGE) $( MSGMERGE_FOR_MSGFMT_OPTION) -o $$ { lang} .1po $$ { lang} .po $( DOMAIN) .pot && \
$( GMSGFMT) -c --statistics --verbose -o t-$$ { lang} .gmo $$ { lang} .1po && \
mv t-$$ { lang} .gmo $$ { lang} .gmo && \
rm -f $$ { lang} .1po
.sin.sed :
sed -e '/^#/d' $< > t-$@
mv t-$@ $@
all : all -@USE_NLS @
all-yes : stamp -po
all-yes : $( srcdir ) /stamp -po
all-no :
# Ensure that the gettext macros and this Makefile.in.in are in sync.
@ -126,24 +141,24 @@ CHECK_MACRO_VERSION = \
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
# we don't want to bother translators with empty POT files). We assume that
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
# In this case, stamp-po is a nop (i.e. a phony target).
# stamp-po is a timestamp denoting the last time at which the CATALOGS have
# been loosely updated. Its purpose is that when a developer or translator
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
# invocations of "make" will do nothing. This timestamp would not be necessary
# if updating the $(CATALOGS) would always touch them; however, the rule for
# $(POFILES) has been designed to not touch files that don't need to be
# changed.
stamp-po : $( srcdir ) /$( DOMAIN ) .pot
# In this case, $(srcdir)/ stamp-po is a nop (i.e. a phony target).
# $(srcdir)/ stamp-po is a timestamp denoting the last time at which the CATALOGS
# have been loosely updated. Its purpose is that when a developer or translator
# checks out the package from a version control system, and the $(DOMAIN).pot
# file is not under version control, "make" will update the $(DOMAIN).pot and
# the $(CATALOGS), but subsequent invocations of "make" will do nothing. This
# timestamp would not be necessary if updating the $(CATALOGS) would always
# touch them; however, the rule for $(POFILES) has been designed to not touch
# files that don't need to be changed.
$(srcdir)/ stamp-po: $( srcdir ) /$( DOMAIN ) .pot
@$( CHECK_MACRO_VERSION)
test ! -f $( srcdir) /$( DOMAIN) .pot || \
test -z " $( GMOFILES) " || $( MAKE) $( GMOFILES)
@test ! -f $( srcdir) /$( DOMAIN) .pot || { \
echo "touch stamp-po" && \
echo timestamp > stamp-poT && \
mv stamp-poT stamp-po; \
echo " touch $( srcdir) / stamp-po " && \
echo timestamp > $( srcdir) / stamp-poT && \
mv $( srcdir) / stamp-poT $( srcdir) / stamp-po; \
}
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
@ -159,11 +174,9 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
package_gnu = " $( PACKAGE_GNU) " ; \
test -n " $$ package_gnu " || { \
if { if ( LC_ALL = C find --version) 2>/dev/null | grep GNU >/dev/null; then \
LC_ALL = C find -L $( top_srcdir) -maxdepth 1 -type f \
-size -10000000c -exec grep 'GNU @PACKAGE@' \
/dev/null '{}' ';' 2>/dev/null; \
LC_ALL = C find -L $( top_srcdir) -maxdepth 1 -type f -size -10000000c -exec grep -i 'GNU @PACKAGE@' /dev/null '{}' ';' 2>/dev/null; \
else \
LC_ALL = C grep 'GNU @PACKAGE@' $( top_srcdir) /* 2>/dev/null; \
LC_ALL = C grep -i 'GNU @PACKAGE@' $( top_srcdir) /* 2>/dev/null; \
fi ; \
} | grep -v 'libtool:' >/dev/null; then \
package_gnu = yes; \
@ -184,26 +197,29 @@ $(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
case ` $( XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,' ` in \
'' | 0.[ 0-9] | 0.[ 0-9] .* | 0.1[ 0-5] | 0.1[ 0-5] .* | 0.16 | 0.16.[ 0-1] *) \
$( XGETTEXT) --default-domain= $( DOMAIN) --directory= $( top_srcdir) \
--add-comments= TRANSLATORS: $( XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
--add-comments= TRANSLATORS: \
--files-from= $( srcdir) /POTFILES.in \
--copyright-holder= '$(COPYRIGHT_HOLDER)' \
--msgid-bugs-address= " $$ msgid_bugs_address " \
$( XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
; ; \
*) \
$( XGETTEXT) --default-domain= $( DOMAIN) --directory= $( top_srcdir) \
--add-comments= TRANSLATORS: $( XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
--add-comments= TRANSLATORS: \
--files-from= $( srcdir) /POTFILES.in \
--copyright-holder= '$(COPYRIGHT_HOLDER)' \
--package-name= " $$ {package_prefix}@PACKAGE@ " \
--package-version= '@VERSION@' \
--msgid-bugs-address= " $$ msgid_bugs_address " \
$( XGETTEXT_OPTIONS) @XGETTEXT_EXTRA_OPTIONS@ \
; ; \
esac
test ! -f $( DOMAIN) .po || { \
if test -f $( srcdir) /$( DOMAIN) .pot-header; then \
sed -e '1,/^#$$/d' < $( DOMAIN) .po > $( DOMAIN) .1po && \
cat $( srcdir) /$( DOMAIN) .pot-header $( DOMAIN) .1po > $( DOMAIN) .po; \
rm -f $( DOMAIN) .1po; \
cat $( srcdir) /$( DOMAIN) .pot-header $( DOMAIN) .1po > $( DOMAIN) .po && \
rm -f $( DOMAIN) .1po \
|| exit 1; \
fi ; \
if test -f $( srcdir) /$( DOMAIN) .pot; then \
sed -f remove-potcdate.sed < $( srcdir) /$( DOMAIN) .pot > $( DOMAIN) .1po && \
@ -228,17 +244,19 @@ $(srcdir)/$(DOMAIN).pot:
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
# Note that a PO file is not touched if it doesn't need to be changed.
$(POFILES) : $( POFILESDEPS )
@test -f $( srcdir) /$( DOMAIN) .pot || $( MAKE) $( srcdir) /$( DOMAIN) .pot
@lang= ` echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//' ` ; \
if test -f " $( srcdir) / $$ {lang}.po " ; then \
test -f $( srcdir) /$( DOMAIN) .pot || $( MAKE) $( srcdir) /$( DOMAIN) .pot; \
test " $( srcdir) " = . && cdcmd = "" || cdcmd = " cd $( srcdir) && " ; \
echo " $$ {cdcmd} $( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) --lang= $$ {lang} $$ {lang}.po $( DOMAIN) .pot " ; \
echo " $$ {cdcmd} $( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) --lang= $$ {lang} --previous $$ {lang}.po $( DOMAIN) .pot " ; \
cd $( srcdir) \
&& { case ` $( MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,' ` in \
'' | 0.[ 0-9] | 0.[ 0-9] .* | 0.1[ 0-7] | 0.1[ 0-7 ] .*) \
&& { case ` $( MSGMERGE_UPDATE ) --version | sed 1q | sed -e 's,^[^0-9]*,,' ` in \
'' | 0.[ 0-9] | 0.[ 0-9] .* | 0.1[ 0-5] | 0.1[ 0-5 ] .*) \
$( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) $$ { lang} .po $( DOMAIN) .pot; ; \
0.1[ 6-7] | 0.1[ 6-7] .*) \
$( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) --previous $$ { lang} .po $( DOMAIN) .pot; ; \
*) \
$( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) --lang= $$ { lang} $$ { lang} .po $( DOMAIN) .pot; ; \
$( MSGMERGE_UPDATE) $( MSGMERGE_OPTIONS) --lang= $$ { lang} --previous $$ { lang} .po $( DOMAIN) .pot; ; \
esac ; \
} ; \
else \
@ -373,34 +391,41 @@ check: all
info dvi ps pdf html tags TAGS ctags CTAGS ID :
install-dvi install-ps install-pdf install-html :
mostlyclean :
rm -f remove-potcdate.sed
rm -f stamp-poT
rm -f $( srcdir) / stamp-poT
rm -f core core.* $( DOMAIN) .po $( DOMAIN) .1po $( DOMAIN) .2po *.new.po
rm -fr *.o
clean : mostlyclean
distclean : clean
rm -f Makefile Makefile.in POTFILES *.mo
rm -f Makefile Makefile.in POTFILES
maintainer-clean : distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
rm -f stamp-po $( GMOFILES)
rm -f $( srcdir) /$( DOMAIN) .pot $( srcdir) / stamp-po $( GMOFILES)
distdir = $( top_builddir) /$( PACKAGE) -$( VERSION) /$( subdir)
dist distdir :
test -z " $( DISTFILESDEPS) " || $( MAKE) $( DISTFILESDEPS)
@$( MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
dist2 : stamp -po $( DISTFILES )
dists = " $( DISTFILES) " ; \
dist2 : $( srcdir ) /stamp -po $( DISTFILES )
@dists = " $( DISTFILES) " ; \
if test " $( PACKAGE) " = "gettext-tools" ; then \
dists = " $$ dists Makevars.template " ; \
fi ; \
if test -f $( srcdir) /$( DOMAIN) .pot; then \
dists = " $$ dists $( DOMAIN) .pot stamp-po " ; \
else \
case $( XGETTEXT) in \
:) echo " Warning: Creating a tarball without ' $( DOMAIN) .pot', because a suitable 'xgettext' program was not found in PATH. " 1>& 2; ; \
*) echo " Warning: Creating a tarball without ' $( DOMAIN) .pot', because 'xgettext' found no strings to extract. Check the contents of the POTFILES.in file and the XGETTEXT_OPTIONS in the Makevars file. " 1>& 2; ; \
esac ; \
fi ; \
if test -f $( srcdir) /ChangeLog; then \
dists = " $$ dists ChangeLog " ; \
@ -439,13 +464,15 @@ update-po: Makefile
tmpdir = ` pwd ` ; \
echo " $$ lang: " ; \
test " $( srcdir) " = . && cdcmd = "" || cdcmd = " cd $( srcdir) && " ; \
echo " $$ {cdcmd} $( MSGMERGE) $( MSGMERGE_OPTIONS) --lang= $$ lang $$ lang.po $( DOMAIN) .pot -o $$ lang.new.po " ; \
echo " $$ {cdcmd} $( MSGMERGE) $( MSGMERGE_OPTIONS) --lang= $$ lang --previous $$ lang.po $( DOMAIN) .pot -o $$ lang.new.po " ; \
cd $( srcdir) ; \
if { case ` $( MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,' ` in \
'' | 0.[ 0-9] | 0.[ 0-9] .* | 0.1[ 0-7] | 0.1[ 0-7 ] .*) \
'' | 0.[ 0-9] | 0.[ 0-9] .* | 0.1[ 0-5] | 0.1[ 0-5 ] .*) \
$( MSGMERGE) $( MSGMERGE_OPTIONS) -o $$ tmpdir/$$ lang.new.po $$ lang.po $( DOMAIN) .pot; ; \
0.1[ 6-7] | 0.1[ 6-7] .*) \
$( MSGMERGE) $( MSGMERGE_OPTIONS) --previous -o $$ tmpdir/$$ lang.new.po $$ lang.po $( DOMAIN) .pot; ; \
*) \
$( MSGMERGE) $( MSGMERGE_OPTIONS) --lang= $$ lang -o $$ tmpdir/$$ lang.new.po $$ lang.po $( DOMAIN) .pot; ; \
$( MSGMERGE) $( MSGMERGE_OPTIONS) --lang= $$ lang --previous - o $$ tmpdir/$$ lang.new.po $$ lang.po $( DOMAIN) .pot; ; \
esac ; \
} ; then \
if cmp $$ lang.po $$ tmpdir/$$ lang.new.po >/dev/null 2>& 1; then \