TOPSRCDIR = @top_srcdir@
TOPOBJDIR = ..
SRCDIR    = @srcdir@
VPATH     = @srcdir@
MODULE    = none
BOOKNAME  = wine-doc
DB2HTML   = @DB2HTML@
DB2PDF    = @DB2PDF@
DB2PS     = @DB2PS@

EXTRASUBDIRS = samples status

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

WINE_DEVEL_SRCS = \
	architecture.sgml \
	build.sgml \
	compiling.sgml \
	consoles.sgml \
	cvs-regression.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_PKG_SRCS = \
	packaging.sgml

WINE_FAQ_SRCS = \
	faq.sgml

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

MAN_TARGETS = wine.man

ALLBOOKS = \
	wine-devel \
	wine-faq \
	wine-pkg \
	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)

# this is the all-in-one book, not built by default
wine-doc: wine-doc/index.html wine-doc.pdf wine-doc.ps

.PHONY: everything doc html pdf ps wine-doc 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-pkg.pdf wine-pkg.ps wine-pkg/index.html: $(WINE_PKG_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-doc.pdf wine-doc.ps wine-doc/index.html: $(WINE_DOC_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)
	$(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)

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

### Dependencies:
