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 file 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.
9
# - Modified by Owen Taylor <otaylor@redhat.com> to use GETTEXT_PACKAGE
10
# instead of PACKAGE and to look for po2tbl in ./ not in intl/
12
# - Modified by jacob berkman <jacob@ximian.com> to install
13
# Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
15
# - Modified by jwz to not suck wet farts from dead pigeons.
16
# This is truly one of the worst-written Makefiles I've ever seen.
17
# Problems I (tried to) fix:
19
# - MKINSTALLDIRS was $(top_srcdir)/@MKINSTALLDIRS@, but the
20
# configure script already put $(top_srcdir) into @MKINSTALLDIRS@,
21
# so the result was an absolute path that didn't work at all.
23
# - GMSGFMT and XGETTEXT set $PATH to some random value before
24
# running the program. That's completely stupid, and anyway,
25
# the hardcoded $PATH value they were using (../src) do not
26
# apply to xscreensaver.
28
# - the .po.gmo, .po.cat, .po.pox, .pot, install-data-yes, update-po, and
29
# uninstall rules didn't actually print the commands they were
30
# executing: they just dumped a bunch of sh code at you, and expected
31
# you to figure it out yourself. This is typical behavior of Makefile
32
# rules written by morons.
34
# - intltool-update prints a lot of useless crap to both stderr and
35
# stdout and has no command-line argument meaning "be quiet, and only
36
# print errors", so I just redirected the whole thing to /dev/null.
38
# - Demonstrating a total misunderstanding of build-directories and
39
# VPATH, the .po.gmo rule was writing output to $(srcdir). When
40
# the current directory is not $(srcdir), one *never* writes to
41
# $(srcdir) -- it is to be considered read-only.
43
# - Likewise, install-data-yes was looking for .gmo files in both the
44
# current directory, and in $(srcdir). In the case where those are
45
# not the same directory, there must be no .gmo files in $(srcdir).
47
# - The update-po rule was explicitly writing to $(srcdir). I changed
48
# it to just work in the current directory. As I understand it, it
49
# only makes sense to run this rule while in the srcdir, e.g., from
50
# distdepend -- so it should be allowed to error out when run in an
51
# inappropriate directory.
53
# - install-data-yes went through great code-duplication-contortions
54
# to cope with the file mentioned by MKINSTALLDIRS not actually
55
# existing! Instead of assuming that MKINSTALLDIRS will be set to
56
# an actual, correct value, it had a hardcoded check to look for it
57
# in $(top_srcdir) as well! WTF!
59
# - It turns out that "msgfmt" silently fails to write a .gmo file
60
# if the source .po file is empty (or otherwise not yet written.)
61
# The install-data-yes rule made no provision for this, and would
62
# just error out when the .gmo files were not there.
64
# - $(DESTDIR) was being used where $(install_prefix) should have been.
66
# - For xscreensaver, $(prefix) is generally /usr/X11R6/, but some files
67
# need to go under /usr/ instead of under /usr/X11R6/ -- for those, we
68
# use @PO_DATADIR@ instead of @prefix@. So I changed $(datadir) and
69
# $(gnulocaledir) appropriately.
71
# - WTF is $(gettextsrcdir) doing in here?
73
# - added "*.gmo *.pot" to "distclean".
75
# - I added a rule to po/POTFILES.in so that I wouldn't have to maintain
76
# that list of files in two places.
78
# - I removed the rule to auto-regenerate Makefile from Makefile.in.in
79
# because it made my top-level "make distdepend" rule fail: things
80
# were executing in the wrong order.
82
# - the .po.cat rule has a hardcoded "../intl/po2msg.sed" in it.
83
# Guess what, I don't have any such directory. And that should be
84
# refering to $(srcdir) anyway. So I just commented (my half-fixed
85
# version of) this rule out.
88
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
96
top_srcdir = @top_srcdir@
101
exec_prefix = @exec_prefix@
102
#datadir = $(prefix)/@DATADIRNAME@ -- not for xscreensaver
103
datadir = @PO_DATADIR@
104
localedir = $(datadir)/locale
105
#localedir = $(prefix)/share/locale
106
#gnulocaledir = $(prefix)/share/locale -- not for xscreensaver
107
gnulocaledir = $(localedir)
108
#gettextsrcdir = $(prefix)/share/glib-2.0/gettext/po
110
DESTDIR = $(install_prefix)
113
INSTALL_DATA = @INSTALL_DATA@
115
# #### NO. This gets me "..//usr/bin/install: No such file or directory".
116
# The @MKINSTALLDIRS@ variable must have the absolute (or unqualified)
117
# path of the install program. --jwz.
118
# MKINSTALLDIRS = $(top_builddir)/@MKINSTALLDIRS@
120
MKINSTALLDIRS = @MKINSTALLDIRS@
126
XGETTEXT = @XGETTEXT@
127
INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
128
INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
129
MSGMERGE = $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
130
GENPOT = $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
134
CPPFLAGS = @CPPFLAGS@
136
INCLUDES = -I.. -I$(top_srcdir)/intl
138
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
142
GMOFILES = @GMOFILES@
143
DISTFILES_1 = ChangeLog Makefile.in.in POTFILES.in update.sh
144
DISTFILES = $(DISTFILES_1) $(GETTEXT_PACKAGE).pot \
145
$(POFILES) $(GMOFILES) $(SOURCES)
147
TARFILES = $(DISTFILES_1) $(POFILES) $(SOURCES)
151
CATALOGS = @CATALOGS@
152
CATOBJEXT = @CATOBJEXT@
153
INSTOBJEXT = @INSTOBJEXT@
156
.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
162
$(MAKE) $(GETTEXT_PACKAGE).pot
163
INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) ; \
164
export INTLTOOL_EXTRACT ; \
165
echo $(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox ; \
166
$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
171
# jwz: the "-" means "ignore any errors here, because I don't give a shit."
173
@-file=`echo $* | sed 's,.*/,,'`.gmo ; \
175
echo $(GMSGFMT) -o "$$file" $< ; \
176
$(GMSGFMT) -o "$$file" $<
179
# @echo "sed -f ../intl/po2msg.sed < $< > $*.msg" ; \
180
# sed -f ../intl/po2msg.sed < $< > $*.msg && \
182
# echo $(GENCAT) "$@" "$*.msg" ; \
183
# $(GENCAT) "$@" "$*.msg"
192
$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
193
@INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) ; \
194
export INTLTOOL_EXTRACT ; \
198
install-strip: install
200
install: install-exec install-data
206
install-data: install-data-@USE_NLS@
208
install-data-yes: all
210
catalogs='$(CATALOGS)'; \
212
for cat in $$catalogs; do \
213
cat=`basename $$cat`; \
215
*.gmo) destdir=$(gnulocaledir);; \
216
*) destdir=$(localedir);; \
218
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
219
dir=$(install_prefix)$$destdir/$$lang/LC_MESSAGES; \
220
dest=$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
221
if test -r $$cat -o -r $$cat.m; then \
222
echo $(MKINSTALLDIRS) $$dir; \
223
$(MKINSTALLDIRS) $$dir; \
225
losers="$$losers $$lang"; \
227
if test -r $$cat; then \
228
echo $(INSTALL_DATA) $$cat $$dest; \
229
$(INSTALL_DATA) $$cat $$dest; \
231
if test -r $$cat.m; then \
232
echo $(INSTALL_DATA) $$cat.m $$dest.m; \
233
$(INSTALL_DATA) $$cat.m $$dest.m; \
236
if [ "$$losers" != '' ]; then \
237
echo "Warning: these catalogs were not installed:" >&2 ; \
238
echo " $$losers" >&2; \
241
# Define this as empty until I found a useful application.
245
@catalogs='$(CATALOGS)'; \
246
for cat in $$catalogs; do \
247
cat=`basename $$cat`; \
248
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
249
suffix="$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
250
for f in $(install_prefix)$(localedir)/$$suffix \
251
$(install_prefix)$(localedir)/$$suffix.m \
252
$(install_prefix)$(gnulocaledir)/$$suffix \
253
$(install_prefix)$(gnulocaledir)/$$suffix.m; do \
254
if [ -f $$f ]; then \
266
dvi info tags TAGS ID:
269
rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
275
rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m *.gmo *.pot
277
maintainer-clean: distclean
278
@echo "This command is intended for maintainers to use;"
279
@echo "it deletes files that may require special tools to rebuild."
283
# fuck off. love, jwz.
284
#distdepend: generate_potfiles_in update-po $(DISTFILES)
288
# jwz: Generates po/POTFILES.in by examining the source tree:
289
# that way we don't have to keep this list up to date as files are added.
291
generate_potfiles_in:
294
( cd $(top_srcdir); \
295
echo "# Auto-generated: `date`" ; \
296
( grep -l '_("' driver/*.[ch] ; \
299
driver/*.desktop.in \
300
hacks/config/*.xml ) | sort \
303
echo "created `pwd`/$$file"
308
distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
309
dist distdir: update-po $(DISTFILES)
310
dists="$(DISTFILES)"; \
311
for file in $$dists; do \
312
ln $(srcdir)/$$file $(distdir) 2> /dev/null \
313
|| cp -p $(srcdir)/$$file $(distdir); \
317
$(MAKE) $(GETTEXT_PACKAGE).pot
318
@catalogs='$(CATALOGS)'; \
319
INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) ; \
320
export INTLTOOL_EXTRACT ; \
321
for cat in $$catalogs; do \
322
cat=`basename $$cat`; \
323
lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
324
cp $$lang.po $$lang.old.po; \
325
echo $(MSGMERGE) $$lang; \
326
if $(MSGMERGE) $$lang >/dev/null 2>&1; then \
327
rm -f $$lang.old.po; \
329
echo "msgmerge for $$cat failed!"; \
331
mv $$lang.old.po $$lang.po; \
336
$(MAKE) $(PACKAGE).pot;
337
INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) ; \
338
export INTLTOOL_EXTRACT ; \
339
echo; printf "$*: "; \
340
if $(MSGMERGE) $*; then \
343
echo "msgmerge for * failed!"; \
344
mv $*.old.po $*.po; \
346
msgfmt --statistics $*.po; echo;
349
# POTFILES is created from POTFILES.in by stripping comments, empty lines
350
# and Intltool tags (enclosed in square brackets), and appending a full
351
# relative path to them
352
POTFILES: POTFILES.in
353
( if test 'x$(srcdir)' != 'x.'; then \
354
posrcprefix='$(top_srcdir)/'; \
362
-e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
363
| sed -e '$$s/\\$$//') > $@-t \
367
# Please to be fucking the hell off. This breaks "make distdepend". -jwz
368
#Makefile: Makefile.in.in ../config.status POTFILES
370
# && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
371
# $(SHELL) ./config.status
373
# Tell versions [3.59,3.63) of GNU make not to export all variables.
374
# Otherwise a system limit (for SysV at least) may be exceeded.