1 # Makefile for PO directory in any package using GNU gettext.
2 # Copyright (C) 1995-1997, 2000-2007, 2009-2010 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
4 # This file can be copied and used freely without restrictions. It can
5 # be used in projects which are not available under the GNU General Public
6 # License but which still want to provide support for the GNU gettext
8 # Please note that the actual code of GNU gettext is covered by the GNU
9 # General Public License and is *not* in the public domain.
11 # Origin: gettext-0.18
12 GETTEXT_MACRO_VERSION
= 0.18
16 PACKAGE_BUGREPORT
= flex-help@lists.sourceforge.net
26 exec_prefix = ${prefix}
27 datarootdir
= ${prefix}/share
28 datadir = ${datarootdir}
29 localedir
= ${datarootdir}/locale
30 gettextsrcdir
= $(datadir)/gettext
/po
32 INSTALL
= /usr
/bin
/install -c
33 INSTALL_DATA
= ${INSTALL} -m
644
36 # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
37 # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
38 # ${SHELL} /usr/src/external/bsd/flex/flex-2.5.39/install-sh does not start with $(SHELL), so we add it.
39 # In automake >= 1.10, $(top_builddir)/./install-sh -c -d is derived from ${MKDIR_P}, which is defined
40 # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
41 # versions, $(mkinstalldirs) and $(install_sh) are unused.
42 mkinstalldirs
= $(SHELL
) ${SHELL} /usr
/src
/external
/bsd
/flex
/flex-2.5
.39/install-sh
-d
43 install_sh
= $(SHELL
) ${SHELL} /usr
/src
/external
/bsd
/flex
/flex-2.5
.39/install-sh
44 MKDIR_P
= ..
/.
/install-sh
-c
-d
45 mkdir_p
= $(top_builddir
)/.
/install-sh
-c
-d
47 GMSGFMT_
= /usr
/pkg
/bin
/msgfmt
48 GMSGFMT_no
= /usr
/pkg
/bin
/msgfmt
49 GMSGFMT_yes
= /usr
/pkg
/bin
/msgfmt
50 GMSGFMT
= $(GMSGFMT_
$(USE_MSGCTXT
))
51 MSGFMT_
= /usr
/pkg
/bin
/msgfmt
52 MSGFMT_no
= /usr
/pkg
/bin
/msgfmt
53 MSGFMT_yes
= /usr
/pkg
/bin
/msgfmt
54 MSGFMT
= $(MSGFMT_
$(USE_MSGCTXT
))
55 XGETTEXT_
= /usr
/pkg
/bin
/xgettext
56 XGETTEXT_no
= /usr
/pkg
/bin
/xgettext
57 XGETTEXT_yes
= /usr
/pkg
/bin
/xgettext
58 XGETTEXT
= $(XGETTEXT_
$(USE_MSGCTXT
))
60 MSGMERGE_UPDATE
= /usr
/pkg
/bin
/msgmerge
--update
67 UPDATEPOFILES
= @UPDATEPOFILES@
68 DUMMYPOFILES
= @DUMMYPOFILES@
69 DISTFILES.common
= Makefile.in.in remove-potcdate.sin \
70 $(DISTFILES.common.extra1
) $(DISTFILES.common.extra2
) $(DISTFILES.common.extra3
)
71 DISTFILES
= $(DISTFILES.common
) Makevars POTFILES.in \
72 $(POFILES
) $(GMOFILES
) \
73 $(DISTFILES.extra1
) $(DISTFILES.extra2
) $(DISTFILES.extra3
)
79 # Makevars gets inserted here. (Don't remove this line!)
82 .SUFFIXES
: .po .gmo .mo .sed .sin .nop .po-create .po-update
85 @echo
"$(MSGFMT) -c -o $@ $<"; \
86 $(MSGFMT
) -c
-o t-
$@
$< && mv t-
$@
$@
89 @lang
=`echo $* | sed -e 's,.*/,,'`; \
90 test "$(srcdir)" = .
&& cdcmd
="" || cdcmd
="cd $(srcdir) && "; \
91 echo
"$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics --verbose -o $${lang}.gmo $${lang}.po"; \
92 cd
$(srcdir) && rm -f
$${lang}.gmo
&& $(GMSGFMT
) -c
--statistics
--verbose
-o t-
$${lang}.gmo
$${lang}.po
&& mv t-
$${lang}.gmo
$${lang}.gmo
95 sed
-e
'/^#/d' $< > t-
$@
99 all: check-macro-version all-no
104 # Ensure that the gettext macros and this Makefile.in.in are in sync.
106 @
test "$(GETTEXT_MACRO_VERSION)" = "0.18" \
107 ||
{ echo
"*** error: gettext infrastructure mismatch: using a Makefile.in.in from gettext version $(GETTEXT_MACRO_VERSION) but the autoconf macros are from gettext version 0.18" 1>&2; \
111 # $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
112 # internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
113 # we don't want to bother translators with empty POT files). We assume that
114 # LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
115 # In this case, stamp-po is a nop (i.e. a phony target).
117 # stamp-po is a timestamp denoting the last time at which the CATALOGS have
118 # been loosely updated. Its purpose is that when a developer or translator
119 # checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
120 # "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
121 # invocations of "make" will do nothing. This timestamp would not be necessary
122 # if updating the $(CATALOGS) would always touch them; however, the rule for
123 # $(POFILES) has been designed to not touch files that don't need to be
125 stamp-po
: $(srcdir)/$(DOMAIN
).pot
126 test ! -f
$(srcdir)/$(DOMAIN
).pot || \
127 test -z
"$(GMOFILES)" ||
$(MAKE
) $(GMOFILES
)
128 @
test ! -f
$(srcdir)/$(DOMAIN
).pot ||
{ \
129 echo
"touch stamp-po" && \
130 echo timestamp
> stamp-poT
&& \
131 mv stamp-poT stamp-po
; \
134 # Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
135 # otherwise packages like GCC can not be built if only parts of the source
136 # have been downloaded.
138 # This target rebuilds $(DOMAIN).pot; it is an expensive operation.
139 # Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
140 $(DOMAIN
).pot-update
: $(POTFILES
) $(srcdir)/POTFILES.in remove-potcdate.sed
141 if LC_ALL
=C grep
'GNU flex' $(top_srcdir
)/* 2>/dev
/null | grep
-v
'libtool:' >/dev
/null
; then \
142 package_gnu
='GNU '; \
146 if
test -n
'$(MSGID_BUGS_ADDRESS)' ||
test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT
'@'; then \
147 msgid_bugs_address
='$(MSGID_BUGS_ADDRESS)'; \
149 msgid_bugs_address
='$(PACKAGE_BUGREPORT)'; \
151 case
`$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
152 '' |
0.
[0-9] |
0.
[0-9].
* |
0.1[0-5] |
0.1[0-5].
* |
0.16 |
0.16.
[0-1]*) \
153 $(XGETTEXT
) --default-domain
=$(DOMAIN
) --directory
=$(top_srcdir
) \
154 --add-comments
=TRANSLATORS
: $(XGETTEXT_OPTIONS
) \
155 --files-from
=$(srcdir)/POTFILES.in \
156 --copyright-holder
='$(COPYRIGHT_HOLDER)' \
157 --msgid-bugs-address
="$$msgid_bugs_address" \
160 $(XGETTEXT
) --default-domain
=$(DOMAIN
) --directory
=$(top_srcdir
) \
161 --add-comments
=TRANSLATORS
: $(XGETTEXT_OPTIONS
) \
162 --files-from
=$(srcdir)/POTFILES.in \
163 --copyright-holder
='$(COPYRIGHT_HOLDER)' \
164 --package-name
="$${package_gnu}flex" \
165 --package-version
='2.5.39' \
166 --msgid-bugs-address
="$$msgid_bugs_address" \
169 test ! -f
$(DOMAIN
).po ||
{ \
170 if
test -f
$(srcdir)/$(DOMAIN
).pot
; then \
171 sed
-f remove-potcdate.sed
< $(srcdir)/$(DOMAIN
).pot
> $(DOMAIN
).1po
&& \
172 sed
-f remove-potcdate.sed
< $(DOMAIN
).po
> $(DOMAIN
).2po
&& \
173 if cmp
$(DOMAIN
).1po
$(DOMAIN
).2po
>/dev
/null
2>&1; then \
174 rm -f
$(DOMAIN
).1po
$(DOMAIN
).2po
$(DOMAIN
).po
; \
176 rm -f
$(DOMAIN
).1po
$(DOMAIN
).2po
$(srcdir)/$(DOMAIN
).pot
&& \
177 mv
$(DOMAIN
).po
$(srcdir)/$(DOMAIN
).pot
; \
180 mv
$(DOMAIN
).po
$(srcdir)/$(DOMAIN
).pot
; \
184 # This rule has no dependencies: we don't need to update $(DOMAIN).pot at
185 # every "make" invocation, only create it when it is missing.
186 # Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
187 $(srcdir)/$(DOMAIN
).pot
:
188 $(MAKE
) $(DOMAIN
).pot-update
190 # This target rebuilds a PO file if $(DOMAIN).pot has changed.
191 # Note that a PO file is not touched if it doesn't need to be changed.
192 $(POFILES
): $(srcdir)/$(DOMAIN
).pot
193 @lang
=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
194 if
test -f
"$(srcdir)/$${lang}.po"; then \
195 test "$(srcdir)" = .
&& cdcmd
="" || cdcmd
="cd $(srcdir) && "; \
196 echo
"$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $${lang}.po $(DOMAIN).pot"; \
198 && { case
`$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
199 '' |
0.
[0-9] |
0.
[0-9].
* |
0.1[0-7] |
0.1[0-7].
*) \
200 $(MSGMERGE_UPDATE
) $(MSGMERGE_OPTIONS
) $${lang}.po
$(DOMAIN
).pot
;; \
202 $(MSGMERGE_UPDATE
) $(MSGMERGE_OPTIONS
) --lang
=$${lang} $${lang}.po
$(DOMAIN
).pot
;; \
206 $(MAKE
) $${lang}.po-create
; \
210 install: install-exec install-data
212 install-data
: install-data-no
213 if
test "$(PACKAGE)" = "gettext-tools"; then \
214 $(mkdir_p
) $(DESTDIR
)$(gettextsrcdir
); \
215 for file in
$(DISTFILES.common
) Makevars.template
; do \
216 $(INSTALL_DATA
) $(srcdir)/$$file \
217 $(DESTDIR
)$(gettextsrcdir
)/$$file; \
219 for file in Makevars
; do \
220 rm -f
$(DESTDIR
)$(gettextsrcdir
)/$$file; \
226 install-data-yes
: all
227 @catalogs
='$(CATALOGS)'; \
228 for cat in
$$catalogs; do \
229 cat
=`basename $$cat`; \
230 lang
=`echo $$cat | sed -e 's/\.gmo$$//'`; \
231 dir=$(localedir
)/$$lang/LC_MESSAGES
; \
232 $(mkdir_p
) $(DESTDIR
)$$dir; \
233 if
test -r
$$cat; then realcat
=$$cat; else realcat
=$(srcdir)/$$cat; fi
; \
234 $(INSTALL_DATA
) $$realcat $(DESTDIR
)$$dir/$(DOMAIN
).mo
; \
235 echo
"installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
236 for lc in
'' $(EXTRA_LOCALE_CATEGORIES
); do \
237 if
test -n
"$$lc"; then \
238 if
(cd
$(DESTDIR
)$(localedir
)/$$lang && LC_ALL
=C ls
-l
-d
$$lc 2>/dev
/null
) | grep
' -> ' >/dev
/null
; then \
239 link
=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
240 mv
$(DESTDIR
)$(localedir
)/$$lang/$$lc $(DESTDIR
)$(localedir
)/$$lang/$$lc.old
; \
241 mkdir
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
242 (cd
$(DESTDIR
)$(localedir
)/$$lang/$$lc.old
&& \
244 if
test -f
$$file; then \
245 ln
-s ..
/$$link/$$file $(DESTDIR
)$(localedir
)/$$lang/$$lc/$$file; \
248 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc.old
; \
250 if
test -d
$(DESTDIR
)$(localedir
)/$$lang/$$lc; then \
253 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
254 mkdir
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
257 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc/$(DOMAIN
).mo
; \
258 ln
-s ..
/LC_MESSAGES
/$(DOMAIN
).mo
$(DESTDIR
)$(localedir
)/$$lang/$$lc/$(DOMAIN
).mo
2>/dev
/null || \
259 ln
$(DESTDIR
)$(localedir
)/$$lang/LC_MESSAGES
/$(DOMAIN
).mo
$(DESTDIR
)$(localedir
)/$$lang/$$lc/$(DOMAIN
).mo
2>/dev
/null || \
260 cp
-p
$(DESTDIR
)$(localedir
)/$$lang/LC_MESSAGES
/$(DOMAIN
).mo
$(DESTDIR
)$(localedir
)/$$lang/$$lc/$(DOMAIN
).mo
; \
261 echo
"installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
266 install-strip
: install
268 installdirs: installdirs-exec installdirs-data
270 installdirs-data
: installdirs-data-no
271 if
test "$(PACKAGE)" = "gettext-tools"; then \
272 $(mkdir_p
) $(DESTDIR
)$(gettextsrcdir
); \
277 installdirs-data-yes
:
278 @catalogs
='$(CATALOGS)'; \
279 for cat in
$$catalogs; do \
280 cat
=`basename $$cat`; \
281 lang
=`echo $$cat | sed -e 's/\.gmo$$//'`; \
282 dir=$(localedir
)/$$lang/LC_MESSAGES
; \
283 $(mkdir_p
) $(DESTDIR
)$$dir; \
284 for lc in
'' $(EXTRA_LOCALE_CATEGORIES
); do \
285 if
test -n
"$$lc"; then \
286 if
(cd
$(DESTDIR
)$(localedir
)/$$lang && LC_ALL
=C ls
-l
-d
$$lc 2>/dev
/null
) | grep
' -> ' >/dev
/null
; then \
287 link
=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
288 mv
$(DESTDIR
)$(localedir
)/$$lang/$$lc $(DESTDIR
)$(localedir
)/$$lang/$$lc.old
; \
289 mkdir
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
290 (cd
$(DESTDIR
)$(localedir
)/$$lang/$$lc.old
&& \
292 if
test -f
$$file; then \
293 ln
-s ..
/$$link/$$file $(DESTDIR
)$(localedir
)/$$lang/$$lc/$$file; \
296 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc.old
; \
298 if
test -d
$(DESTDIR
)$(localedir
)/$$lang/$$lc; then \
301 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
302 mkdir
$(DESTDIR
)$(localedir
)/$$lang/$$lc; \
309 # Define this as empty until I found a useful application.
312 uninstall: uninstall-exec uninstall-data
314 uninstall-data
: uninstall-data-no
315 if
test "$(PACKAGE)" = "gettext-tools"; then \
316 for file in
$(DISTFILES.common
) Makevars.template
; do \
317 rm -f
$(DESTDIR
)$(gettextsrcdir
)/$$file; \
324 catalogs
='$(CATALOGS)'; \
325 for cat in
$$catalogs; do \
326 cat
=`basename $$cat`; \
327 lang
=`echo $$cat | sed -e 's/\.gmo$$//'`; \
328 for lc in LC_MESSAGES
$(EXTRA_LOCALE_CATEGORIES
); do \
329 rm -f
$(DESTDIR
)$(localedir
)/$$lang/$$lc/$(DOMAIN
).mo
; \
335 info dvi ps pdf html
tags TAGS ctags CTAGS ID
:
338 rm -f remove-potcdate.sed
340 rm -f core core.
* $(DOMAIN
).po
$(DOMAIN
).1po
$(DOMAIN
).2po
*.new.po
346 rm -f Makefile Makefile.in POTFILES
*.mo
348 maintainer-clean
: distclean
349 @echo
"This command is intended for maintainers to use;"
350 @echo
"it deletes files that may require special tools to rebuild."
351 rm -f stamp-po
$(GMOFILES
)
353 distdir
= $(top_builddir
)/$(PACKAGE
)-$(VERSION
)/$(subdir
)
357 # This is a separate target because 'update-po' must be executed before.
358 dist2
: stamp-po
$(DISTFILES
)
359 dists
="$(DISTFILES)"; \
360 if
test "$(PACKAGE)" = "gettext-tools"; then \
361 dists
="$$dists Makevars.template"; \
363 if
test -f
$(srcdir)/$(DOMAIN
).pot
; then \
364 dists
="$$dists $(DOMAIN).pot stamp-po"; \
366 if
test -f
$(srcdir)/ChangeLog
; then \
367 dists
="$$dists ChangeLog"; \
369 for i in
0 1 2 3 4 5 6 7 8 9; do \
370 if
test -f
$(srcdir)/ChangeLog.
$$i; then \
371 dists
="$$dists ChangeLog.$$i"; \
374 if
test -f
$(srcdir)/LINGUAS
; then dists
="$$dists LINGUAS"; fi
; \
375 for file in
$$dists; do \
376 if
test -f
$$file; then \
377 cp
-p
$$file $(distdir
) || exit
1; \
379 cp
-p
$(srcdir)/$$file $(distdir
) || exit
1; \
384 $(MAKE
) $(DOMAIN
).pot-update
385 test -z
"$(UPDATEPOFILES)" ||
$(MAKE
) $(UPDATEPOFILES
)
388 # General rule for creating PO files.
391 @lang
=`echo $@ | sed -e 's/\.po-create$$//'`; \
392 echo
"File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
395 # General rule for updating PO files.
398 @lang
=`echo $@ | sed -e 's/\.po-update$$//'`; \
399 if
test "$(PACKAGE)" = "gettext-tools"; then PATH
=`pwd`/..
/src
:$$PATH; fi
; \
402 test "$(srcdir)" = .
&& cdcmd
="" || cdcmd
="cd $(srcdir) && "; \
403 echo
"$${cdcmd}$(MSGMERGE) $(MSGMERGE_OPTIONS) --lang=$$lang $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
405 if
{ case
`$(MSGMERGE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
406 '' |
0.
[0-9] |
0.
[0-9].
* |
0.1[0-7] |
0.1[0-7].
*) \
407 $(MSGMERGE
) $(MSGMERGE_OPTIONS
) -o
$$tmpdir/$$lang.new.po
$$lang.po
$(DOMAIN
).pot
;; \
409 $(MSGMERGE
) $(MSGMERGE_OPTIONS
) --lang
=$$lang -o
$$tmpdir/$$lang.new.po
$$lang.po
$(DOMAIN
).pot
;; \
412 if cmp
$$lang.po
$$tmpdir/$$lang.new.po
>/dev
/null
2>&1; then \
413 rm -f
$$tmpdir/$$lang.new.po
; \
415 if mv
-f
$$tmpdir/$$lang.new.po
$$lang.po
; then \
418 echo
"msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
423 echo
"msgmerge for $$lang.po failed!" 1>&2; \
424 rm -f
$$tmpdir/$$lang.new.po
; \
429 update-gmo
: Makefile
$(GMOFILES
)
432 # Recreate Makefile by invoking config.status. Explicitly invoke the shell,
433 # because execution permission bits may not work on the current file system.
434 # Use /bin/sh, which is the shell determined by autoconf for the use by its
435 # scripts, not $(SHELL) which is hardwired to /bin/sh and may be deficient.
436 Makefile
: Makefile.in.in Makevars
$(top_builddir
)/config.status @POMAKEFILEDEPS@
438 && /bin
/sh .
/config.status
$(subdir
)/$@.in po-directories
442 # Tell versions [3.59,3.63) of GNU make not to export all variables.
443 # Otherwise a system limit (for SysV at least) may be exceeded.