# -*-Makefile-*-
PERL := $(shell perl -e '%C = eval("(".`cat ../../config.log`.")"); print $$C{perl}')
DEST_DIR = ../html
TOOLS_DIR = ../tools
DIFFRE_DIR = ../../tbin

RSTS := $(wildcard *.rst)
XRSTS := $(wildcard *.xrst)
HTMLS := $(wildcard *.html)
DEST_HTMLS = $(addprefix $(DEST_DIR)/,$(RSTS:.rst=.html))
DEST_XHTMLS = $(addprefix $(DEST_DIR)/,$(XRSTS:.rst=.html))
OTHER_TARGETS = $(addprefix $(DEST_DIR)/,index.html quickref.html)
LATEST_HTMLS := $(notdir $(wildcard latest/*.html))
DIFF_TARGETS = $(addprefix $(DEST_DIR)/,$(LATEST_HTMLS:.html=_diff.html))

PREST_BIN = ../../blib/script
PREST_LIB = ../../blib/lib/Text/Restructured
PREST_SRC := $(wildcard $(PREST_BIN)/prest $(PREST_BIN)/*.pm)
HTML_WRITER := $(wildcard $(PREST_LIB)/Writer/html.wrt)
XREF_WRITER := $(wildcard $(PREST_LIB)/Writer/xref.wrt)
HTML_FLAGS = -D source-link=0 \
	-W footnote-references=brackets -W field-limit=20 \
	-W cloak-email-addresses
XREF_FLAGS = -w xref -W xref-sections
PREST_CMD = $(PERL) -I ../../blib/lib $(PREST_BIN)/prest
HTMLDIFF = $(TOOLS_DIR)/htmldiff.prl
HTMLDIFF_CMD = $(PERL) $(HTMLDIFF) -p '$(PERL) $(DIFFRE_DIR)/diffre -r "id\d+"' \
	-i '<U><FONT COLOR=\#008000>$$_</FONT></U>' -k -l
PERLSYNOPSIS = $(TOOLS_DIR)/perlsynopsis.prl
PERLSYNOPSIS_CMD = $(PERL) $(PERLSYNOPSIS)
BLANK = $(subst X,,X X)
PM_FILES = $(wildcard ../../blib/lib/Text/Restructured.pm ../../blib/lib/Text/Restructured/*.pm)

HTML_ALTS = ($(subst $(BLANK),|,$(RSTS:.rst=) $(HTMLS:.html=)))\.html

PREST_FLAGS_prest_usage = -D trusted
PREST_FLAGS_prest_internals = -D trusted
PREST_FLAGS_prest_extend = -D trusted
PREST_FLAGS_ascii-mathml = -D mstyle='mathcolor=red'

targets:	$(DEST_DIR) $(DEST_HTMLS) $(OTHER_TARGETS) $(DIFF_TARGETS)

debug:
	@echo '$(HTML_ALTS)'

.PRECIOUS:	$(DEST_DIR)/%.html

%.xref:	%.rst $(PREST_SRC) $(XREF_WRITER)
	$(PREST_CMD) $(XREF_FLAGS) $(PREST_FLAGS_$(notdir $*)) $< > $@ 

# Create the destination directory.
$(DEST_DIR):
	mkdir -p $(DEST_DIR)
	-chmod 775 $(DEST_DIR)

$(DEST_DIR)/%.html: %.rst $(PREST_SRC) $(HTML_WRITER)
	$(PERL) -pe 's!../../\w+/rst/($(HTML_ALTS))!./$$1!g; s!\.\./!http://docutils.sourceforge.net/spec/!g' $< | \
	$(PREST_CMD) $(HTML_FLAGS) $(PREST_FLAGS_$(notdir $*)) -- - > $@ 
	-chmod 664 $@

$(DEST_DIR)/%.xhtml: %.xrst $(PREST_SRC) $(HTML_WRITER)
	$(PREST_CMD) $(HTML_FLAGS) $(PREST_FLAGS_$(notdir $*)) $< > $@ 
	-chmod 664 $@

$(DEST_DIR)/%_diff.html: $(DEST_DIR)/%.html latest/%.html $(HTMLDIFF)
	$(HTMLDIFF_CMD) latest/$*.html $(DEST_DIR)/$*.html > $@
	-chmod 664 $@

$(DEST_DIR)/index.html:
	(cd $(DEST_DIR); ln -s prest_intro.html $@)

$(DEST_DIR)/%: %
	cp -p $< $@

clean:
	rm -rf $(DEST_DIR) *.xref

## Dependencies
$(DEST_DIR)/prest_internals.html:	$(PERLSYNOPSIS) $(PM_FILES)

$(DEST_DIR)/prest_extend.html:	prest_internals.xref

$(DEST_DIR)/prest_releases.html: ../../ChangeLog

$(DEST_DIR)/roles.html:	prest_extend.xref