1
0
mirror of https://github.com/rkd77/elinks.git synced 2024-12-04 14:46:47 -05:00
elinks/po/Makefile
Jonas Fonseca db99a74777 Add support for out-of-tree builds
Involves prefixing with $(srcdir) to some of the build rule variables. For
the builddir we create Makefiles which simply include the srcdir Makefile.
Add list make rule to get list of Makefiles to generate (find will get it
wrong for builddirs nested in srcdir).

There are still a few minor issues like the file paths echoed during make
install ...
2005-10-20 03:49:40 +02:00

114 lines
3.4 KiB
Makefile

path_to_top=..
include $(path_to_top)/Makefile.config
# Where to install the catalog files.
localedir = $(datadir)/locale
# These are for some reason not added magically to the Makefile.
MSGMERGE = msgmerge
# Name of the file containing the list of files to translate (used by
# xgettext)
POTFILES_ABS_LIST = potfiles.list
SUFFIXES = .po .gmo .mo
.SUFFIXES: .gmo .mo .po
%.gmo: $(srcdir)/%.po
@file=`echo $* | sed 's,.*/,,'`.gmo \
&& rm -f $$file && echo -n $*": " \
&& $(GMSGFMT) --statistics -o $$file $<
### The default rule
#
# Note: Target `all-local' must not depend on target '$(srcdir)/$(PACKAGE).pot',
# otherwise packages like GCC can not be built if only parts of the source have
# been downloaded.
#
# Note 2: We aren't gcc, we are ELinks. And I want that dependency ;-). --pasky
#
# Note 3: I changed my mind, it is really annoying if you just insert one line
# and suddenly you have tons of changes in all the .po files updating the line
# informations. --pasky
#
# $(CATALOGS) is empty if --disable-nls. Beats using *-(yes|no) targets.
all-local: $(CATALOGS)
### Creating the template po template file
#
# This pulls in _all_ .c and .h files in the src directory. Even files that has
# not been added to the git repo. Beware of junk entries!
$(srcdir)/$(POTFILES_ABS_LIST):
@( cd $(top_srcdir); \
find src/ -type f -name '*.[ch]' -o -name options.inc -o -name 'actions-*.inc' | sort ) \
> $(srcdir)/$(POTFILES_ABS_LIST)
$(srcdir)/$(PACKAGE).pot: $(srcdir)/$(POTFILES_ABS_LIST)
$(XGETTEXT) --default-domain=$(PACKAGE) \
--directory=$(top_srcdir) \
--add-comments --language=C \
--keyword=_ --keyword=N_ --keyword=n_:1,2 --keyword=N__ -f $(srcdir)/$(POTFILES_ABS_LIST) \
&& test -f $(PACKAGE).po \
&& mv -f $(PACKAGE).po $(srcdir)/$(PACKAGE).pot
### Updating po and gmo files
#
# Update by merging all .po files with the .po template master file.
#
# It is possible to update only a single .po file by setting the PO variable to
# either <lang> or <lang>.po when calling make. Example: make update-po PO=is
update-po: Makefile $(srcdir)/$(PACKAGE).pot
@cd $(srcdir)
@$(foreach lang,$(basename $(if $(strip $(PO)),$(PO),$(GMOFILES))), \
echo -n "$(lang): "; \
if $(MSGMERGE) $(lang).po $(PACKAGE).pot -o $(lang).new.po; then \
mv -f $(lang).new.po $(lang).po; \
else \
echo "msgmerge failed!"; \
rm -f $(lang).new.po; \
fi; \
)
$(MAKE) update-gmo
update-gmo: Makefile $(GMOFILES)
@:
### Check single or all po files
#
check-po:
@$(foreach lang,$(basename $(if $(strip $(PO)),$(PO),$(GMOFILES))), \
echo -n "$(lang): "; \
$(GMSGFMT) --check --check-accelerators=~ --verbose --statistics -o /dev/null $(lang).po; \
)
### Installation and distribution
#
# Use *-local targets to place and remove .gmo files.
install-local: install-local-$(CONFIG_NLS)
install-local-no:
install-local-yes: all-local
$(MKINSTALLDIRS) $(DESTDIR)$(localedir)
@$(foreach lang,$(basename $(if $(strip $(PO)),$(PO),$(CATALOGS))), \
$(MKINSTALLDIRS) $(DESTDIR)$(localedir)/$(lang)/LC_MESSAGES; \
$(call ncmd,installdata,$(lang).gmo,$(DESTDIR)$(localedir)/$(lang)/LC_MESSAGES/$(PACKAGE).mo); \
)
# Steal the `dist' target so that .po and .gmo files will be properly updated
# then the dependence on `distdir' will take care of copying.
dist: update-po distdir
clean-local:
rm -f $(PACKAGE).po *.new.po $(srcdir)/$(POTFILES_ABS_LIST)
include $(top_srcdir)/Makefile.lib