#
# Makefile for the doc directory
#

srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
top_builddir = ..
my_dir = doc
INSTALL = @INSTALL@

@MCONFIG@

DVI=texi2dvi --clean
DVIPS=dvips -o "$@"
INFO=@MAKEINFO@
HTML=makeinfo --html --no-split
PS2PDF=ps2pdf

all:: libext2fs.info libext2fs.dvi libext2fs.html

install-doc-libs: libext2fs.info libext2fs.dvi
	$(Q) $(RM) -rf $(DESTDIR)$(infodir)/libext2fs.info*
	$(E) "	MKDIR_P $(infodir)"
	$(Q) $(MKDIR_P) $(DESTDIR)$(infodir)
	-$(Q) for i in libext2fs.info* ; do \
		echo "	INSTALL_DATA $(infodir)/$$i" ; \
		$(INSTALL_DATA) $$i $(DESTDIR)$(infodir)/$$i ; \
	done
	$(E) "	GZIP $(infodir)/libext2fs.info*"
	-$(Q) gzip -9n $(DESTDIR)$(infodir)/libext2fs.info*

uninstall-doc-libs:
	$(RM) -rf $(DESTDIR)$(infodir)/libext2fs.info*

libext2fs.info: $(srcdir)/libext2fs.texinfo
	$(E) "	MAKEINFO $@"
	-$(Q) $(INFO) $(srcdir)/libext2fs.texinfo

libext2fs.dvi: $(srcdir)/libext2fs.texinfo
	$(E) "	TEXI2DVI $@"
	-$(Q) $(DVI) $(srcdir)/libext2fs.texinfo

libext2fs.ps: libext2fs.dvi
	$(E) "	DVIPS $@"
	-$(Q) $(DVIPS) libext2fs.dvi

libext2fs.pdf: libext2fs.ps
	$(E) "	PS2PDF $@"
	-$(Q) $(PS2PDF) libext2fs.ps

libext2fs.html: $(srcdir)/libext2fs.texinfo
	$(E) "	TEXI2HTML $@"
	-$(Q) $(HTML) $(srcdir)/libext2fs.texinfo

.PHONY: distclean
distclean:: clean
	$(RM) -f Makefile

.PHONY: clean
clean:: clean-all

.PHONY: clean-all
clean-all:: clean-tex clean-backup clean-final clean-tarfiles clean-html

.PHONY: clean-final
clean-final::
	$(RM) -f *.ps *.info *.info-? *.html *.pdf

.PHONY: clean-tex
clean-tex::
	$(RM) -f *.aux *.cp *.dvi *.fn *.ky *.log *.pg *.toc *.tp *.vr *.fns

.PHONY: clean-backup
clean-backup::
	$(RM) -f *~ #*

.PHONY: clean-tarfiles
clean-tarfiles::
	$(RM) -f *.tar *.tar.gz *.tgz

clean-html::
	$(RM) -f *.html

