1 # Makefile for program source directory in GNU NLS utilities package.
2 # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
4 # This file may be copied and used freely without restrictions. It can
5 # be used in projects which are not available under the GNU Public License
6 # but which still want to provide support for the GNU gettext functionality.
7 # Please note that the actual code is *not* freely available.
11 NLS_TEXTDOMAIN = @NLS_TEXTDOMAIN@
17 top_srcdir = @top_srcdir@
21 exec_prefix = @exec_prefix@
22 datadir = $(prefix)/@DATADIRNAME@
23 localedir = $(datadir)/locale
24 gnulocaledir = $(prefix)/share/locale
25 gettextsrcdir = $(prefix)/share/gettext/po
29 INSTALL_DATA = @INSTALL_DATA@
34 GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
36 XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
37 MSGMERGE = PATH=../src:$$PATH msgmerge
43 INCLUDES = -I.. -I$(top_srcdir)/intl
45 COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
47 SOURCES = @INTLDIR_MAKE@ cat-id-tbl.c
50 DISTFILES = ChangeLog makefile.inn POTFILES.in $(PACKAGE).pot \
51 stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
56 CATOBJEXT = @CATOBJEXT@
57 INSTOBJEXT = @INSTOBJEXT@
60 .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
66 $(MAKE) $(PACKAGE).pot
67 $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox
73 file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
74 && rm -f $$file && $(GMSGFMT) -o $$file $<
77 sed -f ../intl/po2msg.sed < $< > $*.msg \
78 && rm -f $@ && $(GENCAT) $@ $*.msg
83 all-yes: $(SOURCES) $(CATALOGS)
86 $(srcdir)/$(PACKAGE).pot: $(POTFILES)
87 $(XGETTEXT) --default-domain=$(NLS_TEXTDOMAIN) --directory=$(top_srcdir) \
88 --add-comments --keyword=_ --keyword=N_ \
89 --files-from=$(srcdir)/POTFILES.in \
90 && test ! -f $(PACKAGE).po \
91 || ( rm -f $(srcdir)/$(PACKAGE).pot \
92 && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
94 $(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
95 $(srcdir)/stamp-cat-id: $(PACKAGE).pot
97 sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
98 | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
99 if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
102 echo cat-id-tbl.c changed; \
103 rm -f $(srcdir)/cat-id-tbl.c; \
104 mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
106 cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
109 install install-full: install-exec install-data
111 install-data: install-data-@USE_NLS@
113 install-data-yes: all
114 @mkdir -p $(DESTDIR)$(datadir); \
115 catalogs='$(CATALOGS)'; \
116 for cat in $$catalogs; do \
117 cat=`basename $$cat`; \
119 *.gmo) destdir=$(gnulocaledir);; \
120 *) destdir=$(localedir);; \
122 lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
123 dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
125 if test -r $$cat; then \
126 $(INSTALL_DATA) $$cat $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT); \
127 echo "installing $$cat as $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT)"; \
129 $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT); \
130 echo "installing $(srcdir)/$$cat as" \
131 "$$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT)"; \
133 if test -r $$cat.m; then \
134 $(INSTALL_DATA) $$cat.m $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m; \
135 echo "installing $$cat.m as $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m"; \
137 if test -r $(srcdir)/$$cat.m ; then \
138 $(INSTALL_DATA) $(srcdir)/$$cat.m \
139 $$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m; \
140 echo "installing $(srcdir)/$$cat as" \
141 "$$dir/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m"; \
147 if test "$(NLS_TEXTDOMAIN)" = "gettext"; then \
148 mkdir -p $(DESTDIR)$(gettextsrcdir); \
149 $(INSTALL_DATA) $(srcdir)/makefile.inn \
150 $(DESTDIR)$(gettextsrcdir)/makefile.inn; \
155 # Define this as empty until I find a useful application.
159 catalogs='$(CATALOGS)'; \
160 for cat in $$catalogs; do \
161 cat=`basename $$cat`; \
162 lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
163 rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(NLS_TEXTDOMAIN)$(INSTOBJEXT); \
164 rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m; \
165 rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(NLS_TEXTDOMAIN)$(INSTOBJEXT); \
166 rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(NLS_TEXTDOMAIN)$(INSTOBJEXT).m; \
168 rm -f $(gettextsrcdir)/po-makefile.inn
172 cat-id-tbl.o: ../intl/libgettext.h
174 dvi info tags TAGS ID:
177 rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
183 rm -f cat-id-tbl.c stamp-cat-id *.gmo
184 rm -f makefile makefile.in POTFILES *.mo *.msg *.cat *.cat.m
186 maintainer-clean: distclean
187 @echo "This command is intended for maintainers to use;"
188 @echo "it deletes files that may require special tools to rebuild."
191 distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
192 dist distdir: update-po $(DISTFILES)
193 dists="$(DISTFILES)"; \
194 for file in $$dists; do \
195 ln $(srcdir)/$$file $(distdir) 2> /dev/null \
196 || cp -p $(srcdir)/$$file $(distdir); \
199 # GNU msgfmt -C option can also check for X/Open compat.
202 catalogs='$(CATALOGS)'; \
203 for cat in $$catalogs; do \
204 cat=`basename $$cat`; \
205 lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
207 $(MSGFMT) -f -c -v $$lang.po; \
211 $(MAKE) $(PACKAGE).pot
212 PATH=`pwd`/../src:$$PATH; \
214 catalogs='$(CATALOGS)'; \
215 for cat in $$catalogs; do \
216 cat=`basename $$cat`; \
217 lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
218 mv $$lang.po $$lang.old.po; \
220 if $(MSGMERGE) -w 132 $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
221 rm -f $$lang.old.po; \
223 echo "msgmerge for $$cat failed!"; \
225 mv $$lang.old.po $$lang.po; \
229 POTFILES: POTFILES.in
230 ( if test 'x$(srcdir)' != 'x.'; then \
231 posrcprefix='$(top_srcdir)/'; \
236 && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
237 -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
238 | sed -e '$$s/\\$$//') > $@-t \
242 makefile: makefile.inn ../config.status POTFILES
244 && CONFIG_FILES=$(subdir)/$@.in:$(subdir)/$@.inn CONFIG_HEADERS= \
245 $(SHELL) ./config.status
247 # Tell versions [3.59,3.63) of GNU make not to export all variables.
248 # Otherwise a system limit (for SysV at least) may be exceeded.