TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ..
SRCDIR    = @srcdir@
VPATH     = @srcdir@
MODULE    = none

INCLUDES = \
	AUTHORS \
	LICENSE \
	WARRANTY

SOURCES = \
	wine.texinfo \
	$(INCLUDES)

INFOFILES = \
	wine.info \
	wine.info-1 \
	wine.info-2

DVIFILES = wine.dvi

all: $(INFOFILES) $(DVIFILES)

@MAKE_RULES@

$(INFOFILES): $(SOURCES)
	makeinfo $(SRCDIR)/wine.texinfo

$(DVIFILES): $(SOURCES)
	texi2dvi $(SRCDIR)/wine.texinfo

$(INCLUDES):
	$(RM) $(INCLUDES)
	for i in $(INCLUDES); do $(LN_S) $(TOPSRCDIR)/$$i $$i || exit 1; done

install:: $(INFOFILES)
	for i in $(INFOFILES); do $(INSTALL_DATA) $$i $(infodir)/$$i; done
	$(INSTALL_DATA) $(SRCDIR)/wine.man $(mandir)/wine$(manext)

clean::
	$(RM) $(INFOFILES) $(DVIFILES) $(INCLUDES)
	$(RM) wine.aux wine.cp wine.cps wine.fn wine.fns wine.ky wine.log \
		wine.pg wine.toc wine.tp wine.tps wine.vr wine.vrs

### Dependencies:
