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) $@ && false)

# 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) $@ && false)

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

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

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) $@ && false)

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:
