########################################################################### # # This makefile fragment deals with generation and installation of message # catalogs. It is a modified version of the Makefile.in.in distributed with # GNU gettext (taken from version 0.10.35). It was modified to be used when # distributing a package that contains several sub-packages and libraries, # each with their own message catalogs, and each with support for different # languages. # # Packages can have different directories or share the same one. This # fragment assumes that the catalogs are in a `po' subdirectory of the # source directory, but if this is not the case, set the `SOURCEDIR' # directory to point to the sources. # # To use this, create a Makefile that looks like the following: # # --cut-here-- # include /config/config.mk # # LINGUAS = # # # These are optional (see below) # PACKAGE = # # POT_SOURCES = # POT_OTHER = # # include /config/nls.mk # --cut-here-- # # That's it. You may omit the PACKAGE variable if you have a file # `package-info' in the source directory # ########################################################################### ifndef SOURCEDIR SOURCEDIR = .. endif ifndef PACKAGE include $(SOURCEDIR)/package-info endif ifndef LOCALEDIR ifeq "@LOCALEDIR@" "" LOCALEDIR = $(prefix)/locale else LOCALEDIR = @LOCALEDIR@ endif endif GNU_LOCALEDIR = $(prefix)/share/locale srcdir = @srcdir@ top_srcdir = @TOPSRCDIR@ # Programs GENCAT = @GENCAT@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ MSGMERGE = msgmerge SOURCES = cat-id-tbl.c POFILES = @POFILES@ GMOFILES = @GMOFILES@ # Files for distribution # DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ # stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) POTFILES = $(addprefix $(SOURCEDIR)/, $(POT_SOURCES)) $(POT_OTHER) CATOBJEXT = @CATOBJEXT@ INSTOBJEXT = @INSTOBJEXT@ CLEANABLE += core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp *.o DISTCLEANABLE += *.mo *.msg *.cat *.cat.m MAINCLEANABLE += $(GMOFILES) CATALOGS := $(addsuffix $(CATOBJEXT), $(LINGUAS)) .SUFFIXES: .po .pox .gmo .mo .msg .cat .po.pox: $(PACKAGE).pot # $(MAKE) $(PACKAGE).pot $(MSGMERGE) $< $(PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f $(top_srcdir)/intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && $(GENCAT) $@ $*.msg .PHONY: all all-yes all-no all: all-@USE_NLS@ all-yes: cat-id-tbl.c $(CATALOGS) all-no: $(PACKAGE).pot: $(POTFILES) @echo "Extracting messages from sources" @$(XGETTEXT) --default-domain=$(PACKAGE) \ --add-comments --keyword=_ --keyword=_G $(POTFILES) \ && test ! -f $(PACKAGE).po \ || ( rm -f $(srcdir)/$(PACKAGE).pot \ && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) $(srcdir)/cat-id-tbl.c: stamp-cat-id; @: $(srcdir)/stamp-cat-id: $(PACKAGE).pot @rm -f cat-id-tbl.tmp @sed -f $(top_srcdir)/intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp @if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ rm cat-id-tbl.tmp; \ else \ echo cat-id-tbl.c changed; \ rm -f $(srcdir)/cat-id-tbl.c; \ mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ fi @cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id .PHONY: install install-exec install-data install-data-yes install-data-no install: install-exec install-data install-exec: install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all @catalogs="$(CATALOGS)"; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ case "$$cat" in \ *.gmo) destdir=$(GNU_LOCALEDIR);; \ *) destdir=$(LOCALEDIR);; \ esac; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ dir=$$destdir/$$lang/LC_MESSAGES; \ $(MKINSTALLDIRS) $$dir; \ if test -r $$cat; then \ $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ else \ $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ fi; \ if test -r $$cat.m; then \ $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ else \ if test -r $(srcdir)/$$cat.m ; then \ $(INSTALL_DATA) $(srcdir)/$$cat.m \ $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ echo "installing $(srcdir)/$$cat as" \ "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ else \ true; \ fi; \ fi; \ done .PHONY: uninstall uninstall: catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ rm -f $(LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ rm -f $(GNU_LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ rm -f $(GNU_LOCALEDIR)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ done .PHONY: check check: all cat-id-tbl.o: $(top_srcdir)/intl/libgettext.h .PHONY: update-po update-po: Makefile $(PACKAGE).pot cd $(srcdir); \ catalogs='$(CATALOGS)'; \ for cat in $$catalogs; do \ cat=`basename $$cat`; \ lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ mv $$lang.po $$lang.old.po; \ echo "$$lang:"; \ if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ rm -f $$lang.old.po; \ else \ echo "msgmerge for $$cat failed!"; \ rm -f $$lang.po; \ mv $$lang.old.po $$lang.po; \ fi; \ done ifdef SUBDIR Makefile: Makefile.in @cd $(TOPSRCDIR) && \ CONFIG_FILES=$(SUBDIR)/po/$@ CONFIG_HEADERS= \ ./config.status endif # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: include $(FRAGDIR)/targets.mk