TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ..
SRCDIR    = @srcdir@
VPATH     = @srcdir@
MODULE    = none
DB2HTML   = @DB2HTML@
DB2PDF    = @DB2PDF@
DB2PS     = @DB2PS@

EXTRASUBDIRS = samples status

WINE_USER_SRCS = \
	bugs.sgml \
	compiling.sgml \
	configuring.sgml \
	fonts.sgml \
	getting.sgml \
	glossary.sgml \
	installing.sgml \
	introduction.sgml \
	printing.sgml \
	registry.sgml \
	running.sgml

WINE_DEVEL_SRCS = \
	architecture.sgml \
	build.sgml \
	consoles.sgml \
	cvs-regression.sgml \
	cvs.sgml \
	debugger.sgml \
	debugging.sgml \
	dlls.sgml \
	documentation.sgml \
	i18n.sgml \
	implementation.sgml \
	multimedia.sgml \
	ole.sgml \
	opengl.sgml \
	patches.sgml \
	porting.sgml \
	testing.sgml \
	tools.sgml

WINELIB_USER_SRCS = \
	winelib-bindlls.sgml \
	winelib-intro.sgml \
	winelib-mfc.sgml \
	winelib-pkg.sgml \
	winelib-porting.sgml \
	winelib-toolkit.sgml

WINE_FAQ_SRCS = \
	faq.sgml

WINE_DOC_SRCS = \
	$(WINELIB_USER_SRCS) \
	$(WINE_DEVEL_SRCS) \
	$(WINE_FAQ_SRCS) \
	$(WINE_USER_SRCS)

MAN_TARGETS = wine.man

ALLBOOKS = \
	wine-devel \
	wine-faq \
	wine-user \
	winelib-user

BOOKS_TARGETS = \
	$(ALLBOOKS:%=%/index.html) \
	$(ALLBOOKS:%=%.pdf) \
	$(ALLBOOKS:%=%.ps)

all: $(MAN_TARGETS)

@MAKE_RULES@

everything: $(MAN_TARGETS) $(BOOKS_TARGETS)
doc: $(BOOKS_TARGETS)
html: $(ALLBOOKS:%=%/index.html)
pdf: $(ALLBOOKS:%=%.pdf)
ps: $(ALLBOOKS:%=%.ps)

.PHONY: everything doc html pdf ps dist

.SUFFIXES: .sgml /index.html .pdf .ps

.sgml/index.html:
	$(DB2HTML) -d $(SRCDIR)/default.dsl -o $* $<

.sgml.pdf:
	$(DB2PDF) -d $(SRCDIR)/print.dsl $< >/dev/null

.sgml.ps:
	$(DB2PS) $< >/dev/null

wine-devel.pdf wine-devel.ps wine-devel/index.html: $(WINE_DEVEL_SRCS)
wine-faq.pdf wine-faq.ps wine-faq/index.html: $(WINE_FAQ_SRCS)
wine-user.pdf wine-user.ps wine-user/index.html: $(WINE_USER_SRCS)
winelib-user.pdf winelib-user.ps winelib-user/index.html: $(WINELIB_USER_SRCS)

wine.man: wine.man.in
	sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $(SRCDIR)/wine.man.in >$@ || $(RM) $@

# Rules for distribution tarballs of formatted docs

dist: wine-doc-ps.tar.gz wine-doc-pdf.tar.gz wine-doc-html.tar.gz wine-doc-txt.tar.gz

wine-doc-ps.tar.gz: $(ALLBOOKS:%=%.ps)
	tar cf - $(ALLBOOKS:%=%.ps) | gzip -9 > $@ || $(RM) $@

wine-doc-pdf.tar.gz: $(ALLBOOKS:%=%.pdf)
	tar cf - $(ALLBOOKS:%=%.pdf) | gzip -9 > $@ || $(RM) $@

wine-doc-html.tar.gz: $(ALLBOOKS:%=%/index.html)
	tar cf - $(ALLBOOKS:%=%/*.html) | gzip -9 > $@ || $(RM) $@

wine-doc-txt.tar.gz: $(ALLBOOKS:%=%/index.html)
	for i in $(ALLBOOKS:%=%/*.html); do w3m -dump $$i > `dirname $$i`/`basename $$i .html`.txt || exit 1; done
	tar cf - $(ALLBOOKS:%=%/*.txt) | gzip -9 > $@ || $(RM) $@

install:: $(MAN_TARGETS)
	$(MKINSTALLDIRS) $(mandir)/man$(prog_manext) $(mandir)/man$(conf_manext) $(mandir)/man$(api_manext)
	$(INSTALL_DATA) wine.man $(mandir)/man$(prog_manext)/wine.$(prog_manext)
	$(INSTALL_DATA) $(SRCDIR)/wine.conf.man $(mandir)/man$(conf_manext)/wine.conf.$(conf_manext)

uninstall::
	$(RM) $(mandir)/man$(prog_manext)/wine.$(prog_manext)
	$(RM) $(mandir)/man$(conf_manext)/wine.conf.$(conf_manext)

install-api-man::
	for i in $(SRCDIR)/man$(api_manext)/*; do $(INSTALL_DATA) $$i $(mandir)/man$(api_manext); done

clean::
	$(RM) *.aux *.dvi *.out *.pdf *.ps *.tex *.log wine-doc-*.tar.gz $(MAN_TARGETS)
	$(RM) -r $(ALLBOOKS) html api-guide man$(api_manext) *.junk DBTOHTML_OUTPUT_DIR*

### Dependencies:
