Makefile.in.in 13.6 KB
Newer Older
Gildas Bazin's avatar
 
Gildas Bazin committed
1
# Makefile for PO directory in any package using GNU gettext.
2
# Copyright (C) 1995-1997, 2000-2006 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
3
#
Gildas Bazin's avatar
 
Gildas Bazin committed
4 5 6 7 8 9
# This file can be copied and used freely without restrictions.  It can
# be used in projects which are not available under the GNU General Public
# License but which still want to provide support for the GNU gettext
# functionality.
# Please note that the actual code of GNU gettext is covered by the GNU
# General Public License and is *not* in the public domain.
10 11
#
# Origin: gettext-0.16
12 13 14

PACKAGE = @PACKAGE@
VERSION = @VERSION@
15
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
16 17 18 19 20 21 22 23 24 25

SHELL = /bin/sh
@SET_MAKE@

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@

prefix = @prefix@
exec_prefix = @exec_prefix@
26
datarootdir = @datarootdir@
27
datadir = @datadir@
28
localedir = @localedir@
29 30 31 32 33
gettextsrcdir = $(datadir)/gettext/po

INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@

34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
# We use $(mkdir_p).
# In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
# "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
# @install_sh@ does not start with $(SHELL), so we add it.
# In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
# either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
# versions, $(mkinstalldirs) and $(install_sh) are unused.
mkinstalldirs = $(SHELL) @install_sh@ -d
install_sh = $(SHELL) @install_sh@
MKDIR_P = @MKDIR_P@
mkdir_p = @mkdir_p@

GMSGFMT_ = @GMSGFMT@
GMSGFMT_no = @GMSGFMT@
GMSGFMT_yes = @GMSGFMT_015@
GMSGFMT = $(GMSGFMT_$(USE_MSGCTXT))
MSGFMT_ = @MSGFMT@
MSGFMT_no = @MSGFMT@
MSGFMT_yes = @MSGFMT_015@
MSGFMT = $(MSGFMT_$(USE_MSGCTXT))
XGETTEXT_ = @XGETTEXT@
XGETTEXT_no = @XGETTEXT@
XGETTEXT_yes = @XGETTEXT_015@
XGETTEXT = $(XGETTEXT_$(USE_MSGCTXT))
58
MSGMERGE = msgmerge
Gildas Bazin's avatar
 
Gildas Bazin committed
59
MSGMERGE_UPDATE = @MSGMERGE@ --update
60 61 62
MSGINIT = msginit
MSGCONV = msgconv
MSGFILTER = msgfilter
63 64 65

POFILES = @POFILES@
GMOFILES = @GMOFILES@
Gildas Bazin's avatar
 
Gildas Bazin committed
66 67
UPDATEPOFILES = @UPDATEPOFILES@
DUMMYPOFILES = @DUMMYPOFILES@
68
DISTFILES.common = Makefile.in.in remove-potcdate.sin \
Gildas Bazin's avatar
 
Gildas Bazin committed
69
$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3)
70
DISTFILES = $(DISTFILES.common) Makevars POTFILES.in \
Gildas Bazin's avatar
 
Gildas Bazin committed
71 72
$(POFILES) $(GMOFILES) \
$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3)
73 74 75 76 77

POTFILES = \

CATALOGS = @CATALOGS@

Gildas Bazin's avatar
 
Gildas Bazin committed
78
# Makevars gets inserted here. (Don't remove this line!)
79

Gildas Bazin's avatar
 
Gildas Bazin committed
80
.SUFFIXES:
81
.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update
82 83

.po.mo:
Gildas Bazin's avatar
 
Gildas Bazin committed
84 85
	@echo "$(MSGFMT) -c -o $@ $<"; \
	$(MSGFMT) -c -o t-$@ $< && mv t-$@ $@
86 87

.po.gmo:
Gildas Bazin's avatar
 
Gildas Bazin committed
88 89 90 91 92 93 94 95
	@lang=`echo $* | sed -e 's,.*/,,'`; \
	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
	echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \
	cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo

.sin.sed:
	sed -e '/^#/d' $< > t-$@
	mv t-$@ $@
96 97 98 99


all: all-@USE_NLS@

100
all-yes: stamp-po
101 102
all-no:

103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
# we don't want to bother translators with empty POT files). We assume that
# LINGUAS is empty in this case, i.e. $(POFILES) and $(GMOFILES) are empty.
# In this case, stamp-po is a nop (i.e. a phony target).

# stamp-po is a timestamp denoting the last time at which the CATALOGS have
# been loosely updated. Its purpose is that when a developer or translator
# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
# invocations of "make" will do nothing. This timestamp would not be necessary
# if updating the $(CATALOGS) would always touch them; however, the rule for
# $(POFILES) has been designed to not touch files that don't need to be
# changed.
stamp-po: $(srcdir)/$(DOMAIN).pot
	test ! -f $(srcdir)/$(DOMAIN).pot || \
	  test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES)
	@test ! -f $(srcdir)/$(DOMAIN).pot || { \
	  echo "touch stamp-po" && \
	  echo timestamp > stamp-poT && \
	  mv stamp-poT stamp-po; \
	}

Gildas Bazin's avatar
 
Gildas Bazin committed
126
# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update',
127 128 129
# otherwise packages like GCC can not be built if only parts of the source
# have been downloaded.

130 131
# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
Gildas Bazin's avatar
 
Gildas Bazin committed
132
$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed
133 134 135 136 137
	if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
	  msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
	else \
	  msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
	fi; \
Gildas Bazin's avatar
 
Gildas Bazin committed
138 139
	$(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
	  --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
140
	  --files-from=$(srcdir)/POTFILES.in \
141 142
	  --copyright-holder='$(COPYRIGHT_HOLDER)' \
	  --msgid-bugs-address="$$msgid_bugs_address"
Gildas Bazin's avatar
 
Gildas Bazin committed
143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
	test ! -f $(DOMAIN).po || { \
	  if test -f $(srcdir)/$(DOMAIN).pot; then \
	    sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \
	    sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \
	    if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \
	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \
	    else \
	      rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \
	      mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
	    fi; \
	  else \
	    mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \
	  fi; \
	}

158 159 160
# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
# every "make" invocation, only create it when it is missing.
# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
Gildas Bazin's avatar
 
Gildas Bazin committed
161 162 163
$(srcdir)/$(DOMAIN).pot:
	$(MAKE) $(DOMAIN).pot-update

164 165
# This target rebuilds a PO file if $(DOMAIN).pot has changed.
# Note that a PO file is not touched if it doesn't need to be changed.
Gildas Bazin's avatar
 
Gildas Bazin committed
166 167
$(POFILES): $(srcdir)/$(DOMAIN).pot
	@lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
168 169 170 171 172 173 174
	if test -f "$(srcdir)/$${lang}.po"; then \
	  test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
	  echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
	  cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
	else \
	  $(MAKE) $${lang}.po-create; \
	fi
175 176 177 178 179


install: install-exec install-data
install-exec:
install-data: install-data-@USE_NLS@
180 181 182
	if test "$(PACKAGE)" = "gettext-tools"; then \
	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
	  for file in $(DISTFILES.common) Makevars.template; do \
Gildas Bazin's avatar
 
Gildas Bazin committed
183 184 185
	    $(INSTALL_DATA) $(srcdir)/$$file \
			    $(DESTDIR)$(gettextsrcdir)/$$file; \
	  done; \
186 187 188
	  for file in Makevars; do \
	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
	  done; \
189 190 191 192 193
	else \
	  : ; \
	fi
install-data-no: all
install-data-yes: all
194
	$(mkdir_p) $(DESTDIR)$(datadir)
195 196 197
	@catalogs='$(CATALOGS)'; \
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
Gildas Bazin's avatar
 
Gildas Bazin committed
198
	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
199
	  dir=$(localedir)/$$lang/LC_MESSAGES; \
200
	  $(mkdir_p) $(DESTDIR)$$dir; \
Gildas Bazin's avatar
 
Gildas Bazin committed
201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
	  if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
	  $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
	  echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
	    if test -n "$$lc"; then \
	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
	         for file in *; do \
	           if test -f $$file; then \
	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
	           fi; \
	         done); \
	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
	      else \
	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
	          :; \
	        else \
	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
	        fi; \
	      fi; \
	      rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
	      ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
	      ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
	      cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
	      echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
	    fi; \
	  done; \
232 233
	done

Gildas Bazin's avatar
 
Gildas Bazin committed
234
install-strip: install
235

Gildas Bazin's avatar
 
Gildas Bazin committed
236 237 238
installdirs: installdirs-exec installdirs-data
installdirs-exec:
installdirs-data: installdirs-data-@USE_NLS@
239 240
	if test "$(PACKAGE)" = "gettext-tools"; then \
	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
Gildas Bazin's avatar
 
Gildas Bazin committed
241 242 243 244 245
	else \
	  : ; \
	fi
installdirs-data-no:
installdirs-data-yes:
246
	$(mkdir_p) $(DESTDIR)$(datadir)
Gildas Bazin's avatar
 
Gildas Bazin committed
247
	@catalogs='$(CATALOGS)'; \
248 249
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
Gildas Bazin's avatar
 
Gildas Bazin committed
250 251
	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
	  dir=$(localedir)/$$lang/LC_MESSAGES; \
252
	  $(mkdir_p) $(DESTDIR)$$dir; \
Gildas Bazin's avatar
 
Gildas Bazin committed
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275
	  for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
	    if test -n "$$lc"; then \
	      if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
	        link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
	        mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
	        mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
	        (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
	         for file in *; do \
	           if test -f $$file; then \
	             ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
	           fi; \
	         done); \
	        rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
	      else \
	        if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
	          :; \
	        else \
	          rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
	          mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
	        fi; \
	      fi; \
	    fi; \
	  done; \
276
	done
Gildas Bazin's avatar
 
Gildas Bazin committed
277 278 279 280 281 282 283

# Define this as empty until I found a useful application.
installcheck:

uninstall: uninstall-exec uninstall-data
uninstall-exec:
uninstall-data: uninstall-data-@USE_NLS@
284 285
	if test "$(PACKAGE)" = "gettext-tools"; then \
	  for file in $(DISTFILES.common) Makevars.template; do \
Gildas Bazin's avatar
 
Gildas Bazin committed
286 287
	    rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
	  done; \
288 289 290
	else \
	  : ; \
	fi
Gildas Bazin's avatar
 
Gildas Bazin committed
291 292 293 294 295 296 297 298 299 300
uninstall-data-no:
uninstall-data-yes:
	catalogs='$(CATALOGS)'; \
	for cat in $$catalogs; do \
	  cat=`basename $$cat`; \
	  lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
	  for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
	    rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
	  done; \
	done
301 302 303

check: all

304
info dvi ps pdf html tags TAGS ctags CTAGS ID:
305 306

mostlyclean:
Gildas Bazin's avatar
 
Gildas Bazin committed
307
	rm -f remove-potcdate.sed
308
	rm -f stamp-poT
Gildas Bazin's avatar
 
Gildas Bazin committed
309
	rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po
310 311 312 313 314 315 316 317 318 319
	rm -fr *.o

clean: mostlyclean

distclean: clean
	rm -f Makefile Makefile.in POTFILES *.mo

maintainer-clean: distclean
	@echo "This command is intended for maintainers to use;"
	@echo "it deletes files that may require special tools to rebuild."
320
	rm -f stamp-po $(GMOFILES)
321 322 323 324 325 326

distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
dist distdir:
	$(MAKE) update-po
	@$(MAKE) dist2
# This is a separate target because 'update-po' must be executed before.
327
dist2: stamp-po $(DISTFILES)
328
	dists="$(DISTFILES)"; \
329 330 331 332 333 334 335 336 337 338 339 340 341 342
	if test "$(PACKAGE)" = "gettext-tools"; then \
	  dists="$$dists Makevars.template"; \
	fi; \
	if test -f $(srcdir)/$(DOMAIN).pot; then \
	  dists="$$dists $(DOMAIN).pot stamp-po"; \
	fi; \
	if test -f $(srcdir)/ChangeLog; then \
	  dists="$$dists ChangeLog"; \
	fi; \
	for i in 0 1 2 3 4 5 6 7 8 9; do \
	  if test -f $(srcdir)/ChangeLog.$$i; then \
	    dists="$$dists ChangeLog.$$i"; \
	  fi; \
	done; \
Gildas Bazin's avatar
 
Gildas Bazin committed
343
	if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \
344
	for file in $$dists; do \
Gildas Bazin's avatar
 
Gildas Bazin committed
345
	  if test -f $$file; then \
346
	    cp -p $$file $(distdir) || exit 1; \
Gildas Bazin's avatar
 
Gildas Bazin committed
347
	  else \
348
	    cp -p $(srcdir)/$$file $(distdir) || exit 1; \
Gildas Bazin's avatar
 
Gildas Bazin committed
349
	  fi; \
350 351 352
	done

update-po: Makefile
Gildas Bazin's avatar
 
Gildas Bazin committed
353
	$(MAKE) $(DOMAIN).pot-update
354
	test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES)
Gildas Bazin's avatar
 
Gildas Bazin committed
355 356
	$(MAKE) update-gmo

357 358 359 360 361 362 363
# General rule for creating PO files.

.nop.po-create:
	@lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
	echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
	exit 1

Gildas Bazin's avatar
 
Gildas Bazin committed
364 365 366 367
# General rule for updating PO files.

.nop.po-update:
	@lang=`echo $@ | sed -e 's/\.po-update$$//'`; \
368
	if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \
Gildas Bazin's avatar
 
Gildas Bazin committed
369 370 371 372
	tmpdir=`pwd`; \
	echo "$$lang:"; \
	test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
	echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
373
	cd $(srcdir); \
Gildas Bazin's avatar
 
Gildas Bazin committed
374 375 376
	if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \
	  if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
	    rm -f $$tmpdir/$$lang.new.po; \
377
	  else \
Gildas Bazin's avatar
 
Gildas Bazin committed
378 379 380 381 382 383
	    if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
	      :; \
	    else \
	      echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
	      exit 1; \
	    fi; \
384
	  fi; \
Gildas Bazin's avatar
 
Gildas Bazin committed
385 386 387 388 389 390
	else \
	  echo "msgmerge for $$lang.po failed!" 1>&2; \
	  rm -f $$tmpdir/$$lang.new.po; \
	fi

$(DUMMYPOFILES):
391 392 393 394

update-gmo: Makefile $(GMOFILES)
	@:

395
Makefile: Makefile.in.in Makevars $(top_builddir)/config.status @POMAKEFILEDEPS@
396
	cd $(top_builddir) \
397
	  && $(SHELL) ./config.status $(subdir)/$@.in po-directories
398

Gildas Bazin's avatar
 
Gildas Bazin committed
399 400
force:

401 402 403
# Tell versions [3.59,3.63) of GNU make not to export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: