## automake - create Makefile.in from Makefile.am
## Copyright (C) 1994-2013 Free Software Foundation, Inc.

## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2, or (at your option)
## any later version.

## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
## GNU General Public License for more details.

## You should have received a copy of the GNU General Public License
## along with this program.  If not, see <http://www.gnu.org/licenses/>.

DIST_COMMON += %VTEXI% %STAMPVTI%

## Don't give this rule a command (even '@:').
## %STAMPVTI% is always newer than %VTEXI%, so this rule is always
## triggered.  If you equip this rule with a command, GNU make will
## assume %VTEXI% has been rebuild in the current directory and
## discard any %VTEXI% file found in a VPATH search.
%VTEXI%: %MAINTAINER-MODE% %STAMPVTI%

## Depend on configure so that version number updates cause a rebuild.
## (Not configure.ac, because not all setups define the version number
## in this file.)
%STAMPVTI%: %TEXI% $(top_srcdir)/configure
## It is wrong to have %STAMPVTI% dependent on %DIRSTAMP%, because
## %STAMPVTI% is distributed and %DIRSTAMP% isn't: a distributed file
## should never be dependent upon a non-distributed built file.
## Therefore we ensure that %DIRSTAMP% exists in the rule.
?DIRSTAMP?	@test -f %DIRSTAMP% || $(MAKE) $(AM_MAKEFLAGS) %DIRSTAMP%
	@(dir=.; test -f ./%TEXI% || dir=$(srcdir); \
	set `$(SHELL) %MDDIR%mdate-sh $$dir/%TEXI%`; \
	echo "@set UPDATED $$1 $$2 $$3"; \
	echo "@set UPDATED-MONTH $$2 $$3"; \
	echo "@set EDITION $(VERSION)"; \
	echo "@set VERSION $(VERSION)") > %VTI%.tmp
## Use cp and rm here because some older "mv"s can't move across
## filesystems.  Furthermore, GNU "mv" in the AmigaDOS environment
## can't handle this.
	@cmp -s %VTI%.tmp %VTEXI% \
	  || (echo "Updating %VTEXI%"; \
	      cp %VTI%.tmp %VTEXI%)
	-@rm -f %VTI%.tmp
	@cp %VTEXI% $@

mostlyclean-am: mostlyclean-%VTI%
mostlyclean-%VTI%:
	-rm -f %VTI%.tmp

maintainer-clean-am: maintainer-clean-%VTI%
maintainer-clean-%VTI%:
%MAINTAINER-MODE%	-rm -f %STAMPVTI% %VTEXI%

.PHONY: mostlyclean-%VTI% maintainer-clean-%VTI%
