1 # Makefile for help2man
3 # Copyright (C) 2012, 2014 Free Software Foundation, Inc.
5 # Copying and distribution of this file, with or without modification,
6 # are permitted in any medium without royalty provided the copyright
7 # notice and this notice are preserved. This file is offered as-is,
8 # without any warranty.
10 # Written by Brendan O'Dea <bod@debian.org>
15 exec_prefix = @exec_prefix@
19 pkglibdir = $(libdir)/help2man
20 datarootdir = @datarootdir@
24 localedir = $(datadir)/locale
26 export SHELL = @SHELL@
27 export VPATH = .:$(srcdir)
30 LINGUAS = $(basename $(notdir $(wildcard $(srcdir)/po/*.po)))
31 LINGUAS_TEXI = $(basename $(notdir $(wildcard $(srcdir)/po-texi/*.po)))
36 FIND_VPATH = $(auxdir)/find-vpath # locate a file in $VPATH
37 MKINSTALLDIRS = $(auxdir)/mkinstalldirs
39 INSTALL_PROGRAM = @INSTALL_PROGRAM@
40 INSTALL_SCRIPT = @INSTALL_SCRIPT@
41 INSTALL_DATA = @INSTALL_DATA@
42 INSTALL_INFO = @INSTALL_INFO@
43 LOOKUP_LOCALE = $(auxdir)/lookup-locale # get full locale from extension
48 PO4A_UPDATEPO = @PO4A_UPDATEPO@
49 PO4A_TRANSLATE = @PO4A_TRANSLATE@
51 # Tweaks to extracted texinfo catalog, and generated output.
52 FIXUP_TEXI_POT = @PERL@ $(auxdir)/fixup-texi-pot
53 FIXUP_TEXI_TRANS = @PERL@ $(auxdir)/fixup-texi-trans
56 preload = bindtextdomain
58 all: $(target) man info @extra_make_all@
60 install: all install_base @extra_make_install@
62 $(MKINSTALLDIRS) $(DESTDIR)$(bindir)
63 $(MKINSTALLDIRS) $(DESTDIR)$(pkglibdir)
64 $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man1
65 $(MKINSTALLDIRS) $(DESTDIR)$(infodir)
67 install_base: install_dirs
68 $(INSTALL_SCRIPT) $(target) $(DESTDIR)$(bindir)
69 $(INSTALL_DATA) $$($(FIND_VPATH) $(target).1) $(DESTDIR)$(mandir)/man1
70 $(INSTALL_DATA) $$($(FIND_VPATH) $(target).info) \
71 $(DESTDIR)$(infodir)/$(target).info
73 if test -f $(DESTDIR)$(infodir)/dir; \
75 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) \
76 $(DESTDIR)$(infodir)/$(target).info; \
79 install_preload: install_dirs preload
80 $(INSTALL_PROGRAM) $(preload).so $(DESTDIR)$(pkglibdir)
82 install_l10n: install_dirs msg_l10n man_l10n info_l10n
84 for lang in $(LINGUAS); \
86 $(MKINSTALLDIRS) $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES; \
87 $(INSTALL_DATA) $$($(FIND_VPATH) po/$$lang.gmo) \
88 $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(target).mo; \
89 $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/$$lang/man1; \
90 $(INSTALL_DATA) $$($(FIND_VPATH) $(target).$$lang.1) \
91 $(DESTDIR)$(mandir)/$$lang/man1/$(target).1; \
93 for lang in $(LINGUAS_TEXI); \
95 $(INSTALL_DATA) $$($(FIND_VPATH) $(target)-$$lang.info) \
96 $(DESTDIR)$(infodir)/$(target)-$$lang.info; \
97 if test -f $(DESTDIR)$(infodir)/dir; \
99 $(INSTALL_INFO) --info-dir=$(DESTDIR)$(infodir) \
100 $(DESTDIR)$(infodir)/$(target)-$$lang.info; \
105 if test -f $(DESTDIR)$(infodir)/dir; \
107 for file in $(DESTDIR)$(infodir)/$(target).info \
108 $(DESTDIR)$(infodir)/$(target)-*.info; \
109 test -f $$file || continue; \
110 $(INSTALL_INFO) --delete --info-dir=$(DESTDIR)$(infodir) $$file; \
113 rm -f $(DESTDIR)$(bindir)/$(target) \
114 $(DESTDIR)$(pkglibdir)/$(preload).so \
115 $(DESTDIR)$(mandir)/man1/$(target).1 \
116 $(DESTDIR)$(mandir)/*/man1/$(target).1 \
117 $(DESTDIR)$(localedir)/*/LC_MESSAGES/$(target).mo \
118 $(DESTDIR)$(infodir)/$(target).info
119 $(DESTDIR)$(infodir)/$(target)-*.info
122 -rm -f $(target) $(target).h2m $(target).*.h2m $(preload).so *.tmp*
126 rm -f $(target).dvi $(target).aux $(target).cp $(target).cps \
127 $(target).fn $(target).ky $(target).log $(target).pg $(target).toc \
128 $(target).tp $(target).vr po/*.po~ po-texi/*.po~ po-texi/*.pot~
130 distclean: mostlyclean
131 -rm -rf config.cache config.log config.status Makefile autom4te.cache
134 rm -f $(target)-*.texi $(target).info $(target)-*.info $(target).1 \
135 $(target).*.1 po/*.gmo
137 maintainer-clean: realclean
138 rm -f $(srcdir)/configure
140 $(target): $(srcdir)/$(target).PL
141 $(PERL) $? @extra_extract_args@
143 $(target).h2m: $(srcdir)/$(target).h2m.PL
146 preload: $(preload).so
147 $(preload).so: $(srcdir)/$(preload).c
148 $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ -fPIC -shared $? $(LIBS)
151 $(target).1: $(srcdir)/$(target).PL $(srcdir)/$(target).h2m.PL
152 $(MAKE) $(target) $(target).h2m
153 ./$(target) --include=$(target).h2m --output=$@ ./$(target)
155 msg_l10n: $(addprefix po/,$(addsuffix .gmo,$(LINGUAS)))
156 po/%.gmo: $(srcdir)/po/%.po
157 test -d po || mkdir po
160 localetmp/%/LC_MESSAGES/$(target).mo: po/%.gmo
161 lang=$(patsubst localetmp/%/LC_MESSAGES/$(target).mo,%,$@); \
162 $(MKINSTALLDIRS) localetmp/$$lang/LC_MESSAGES && \
163 $(INSTALL_DATA) po/$$lang.gmo localetmp/$$lang/LC_MESSAGES/$(target).mo
165 man_l10n: $(addprefix $(target).,$(addsuffix .1,$(LINGUAS)))
166 $(target).%.1: $(srcdir)/$(target).PL $(srcdir)/$(target).h2m.PL \
168 lang=$(patsubst $(target).%.1,%,$@); \
169 $(MAKE) $(target) $(preload).so \
170 localetmp/$$lang/LC_MESSAGES/$(target).mo $(target).$$lang.h2m; \
171 LD_PRELOAD=./$(preload).so LOCALEDIR=localetmp TEXTDOMAIN=help2man \
172 ./$(target) --include=$$($(FIND_VPATH) $(target).$$lang.h2m) \
173 --output=$@ ./$(target)
175 $(target).%.h2m: $(srcdir)/$(target).h2m.PL $(srcdir)/po/%.po
177 lang=$(patsubst $(target).%.h2m,%,$@); \
178 locale=$$($(LOOKUP_LOCALE) $$lang $(srcdir)/locales); \
179 $(MAKE) localetmp/$$lang/LC_MESSAGES/$(target).mo; \
180 $(PERL) $(srcdir)/$(target).h2m.PL --locale="$$locale" \
181 --message-dir=localetmp --output=$@
184 $(target).info: $(srcdir)/$(target).texi
187 info_l10n: $(addprefix $(target)-,$(addsuffix .info,$(LINGUAS_TEXI)))
188 $(target)-%.info: $(target)-%.texi
190 lang=$(patsubst $(target)-%.info,%,$@); \
191 locale=$$($(LOOKUP_LOCALE) $$lang $(srcdir)/locales); \
192 $(MAKEINFO) --output=$@.tmp --document-language="$$locale" $?
193 $(FIXUP_TEXI_TRANS) -o $@ $@.tmp
196 $(target)-%.texi: $(srcdir)/po-texi/%.po $(srcdir)/help2man.texi
197 $(PO4A_TRANSLATE) -f texinfo -m $(srcdir)/help2man.texi \
198 -p $(filter %.po,$^) -l $@ -k 60
201 $(target).dvi: $(srcdir)/$(target).texi
204 Makefile: $(srcdir)/Makefile.in
207 update-po: $(srcdir)/po/$(target).pot $(srcdir)/po-texi/$(target)-texi.pot
209 for po in $(srcdir)/po/*.po; \
211 echo -n "Updating $$po "; \
212 $(MSGMERGE) -U $$po $(srcdir)/po/$(target).pot; \
214 for po in $(srcdir)/po-texi/*.po; \
216 echo -n "Updating $$po "; \
217 $(MSGMERGE) -U $$po $(srcdir)/po-texi/$(target)-texi.pot; \
220 $(srcdir)/po/$(target).pot: $(srcdir)/$(target).PL $(srcdir)/$(target).h2m.PL
222 $(XGETTEXT) -L Perl -k_ -kN_ -cTranslators: \
223 --msgid-bugs-address="Brendan O'Dea <bug-help2man@gnu.org>" -o $@ \
224 $(target) $(srcdir)/$(target).h2m.PL
226 $(srcdir)/po-texi/$(target)-texi.pot: $(srcdir)/$(target).texi
227 $(PO4A_UPDATEPO) -f texinfo \
228 --msgid-bugs-address="Brendan O'Dea <bug-help2man@gnu.org>" \
230 $(FIXUP_TEXI_POT) -o $@ $@.tmp
233 .PHONY: all clean distclean dvi info info_l10n install install_base install_dirs \
234 install_l10n install_preload maintainer-clean man man_l10n mostlyclean msg_l10n \
235 preload realclean uninstall update-po