
BUILD_USAGE_WITH=w3m

INSTALL=install -c

STX2ANY=./scripts/stx2any
PREFIX=/usr
BASE=$(DESTDIR)$(PREFIX)
EXEDIR=$(BASE)/bin
LIBDIR=$(BASE)/share/stx2any
MANDIR=$(BASE)/share/man/man1
MSGDIR=$(LIBDIR)/messages
EMACSDIR=$(BASE)/share/emacs/site-lisp
SCRIPTS=stx2any strip_stx gather_stx_titles html2stx extract_usage_from_stx
MANPAGES:=$(SCRIPTS:=.1)
MESSAGES:=$(SCRIPTS:=.usage) version.msg
INST_SCRIPTS=$(SCRIPTS:=.inst)
DOCDIR=$(BASE)/share/doc/stx2any
DOCBASE:=stx2any Stx-doc Stx-ref strip_stx gather_stx_titles html2stx \
	accreditions extract_usage_from_stx
DOCBASE:=$(DOCBASE:%=examples/%)
COMMON_SED=emphasis inline block quote quote_us removepassthroughs wrapcalls \
       gatherlinkmap removelinkmap linking quote_quotes gatherpara header
COMMON_M4=common markup begin end cleanup secure templ
COMMON=$(COMMON_SED:=.sed) $(COMMON_M4:=.m4)
LSED_DOCS:=emphasis inline block gatherlinkmap removelinkmap linking
LSED_DOCS:=$(LSED_DOCS:%=common/%.lsed)
FORMATS=html man latex docbook-xml
LM4_DOCS=common/common.lm4 common/markup.lm4 $(FORMATS:=/make.lm4)
STXDEFS:=$(FORMATS:=/make.m4) $(FORMATS:=/templ.m4) $(FORMATS:=/settings.sh) \
	$(COMMON:%=common/%)
DOCS:=$(DOCBASE:=.html) $(MANPAGES) $(STXDEFS:=.html) README.html

.SUFFIXES:

all: chmod doc $(MESSAGES) $(INST_SCRIPTS) $(STXDEFS)

chmod:
	chmod +x scripts/* regression/run-tests

html2stx.inst: scripts/html2stx
	cp $< $@

%.inst: scripts/%
	sed -e "s#^BASE=.*#BASE="$(LIBDIR)"#" $< >$@

%.1: examples/%.txt $(STXDEFS)
	sed -e "s#PREFIX#$(PREFIX)#" $< | $(STX2ANY) -T man >$@

%.usage: examples/%.txt $(STXDEFS)
ifeq ($(BUILD_USAGE_WITH),w3m)
	./scripts/extract_usage_from_stx $< | $(STX2ANY) -T text >$@
else
	./scripts/extract_usage_from_stx $< >$@
endif

version.msg: debian/changelog
	sed -e 's#^\([^(]*\)(\([^)]*\)).*#\1\2#' -e '1q' $< >$@

%.m4: %.lm4 
	./scripts/strip_stx $< >$@

%.sh: %.lsh 
	./scripts/strip_stx $< >$@

%.sed: %.lsed
	./scripts/strip_stx $< >$@

test: chmod $(STXDEFS)
	./regression/run-tests

doc: chmod $(DOCS)

install: all
	$(INSTALL) -m 755 -d $(EXEDIR) $(LIBDIR) $(MSGDIR) $(MANDIR) $(DOCDIR) $(EMACSDIR)
	$(INSTALL) -m 755 -d $(DOCDIR)/examples $(DOCDIR)/common
	for i in $(INST_SCRIPTS); do \
		$(INSTALL) -m 755 $$i $(EXEDIR)/`basename $$i .inst`; \
	done
	$(INSTALL) -m 644 $(MANPAGES) $(MANDIR)
	$(INSTALL) -m 644 README.html $(DOCDIR)
	$(INSTALL) -m 644 $(DOCBASE:=.html) $(DOCBASE:=.txt) $(DOCDIR)/examples
	$(INSTALL) -m 644 $(COMMON:%=common/%.html) $(DOCDIR)/common
	for i in $(FORMATS); do \
		$(INSTALL) -m 755 -d $(DOCDIR)/$$i; \
		$(INSTALL) -m 644 $$i/*.html $(DOCDIR)/$$i; \
	done
	$(INSTALL) -m 644 stx-mode.el $(EMACSDIR)
	for i in $(FORMATS); do \
	  $(INSTALL) -m 755 -d $(LIBDIR)/$$i; \
	  $(INSTALL) -m 644 $$i/*.m4 $$i/*.sh $(LIBDIR)/$$i; \
	done
	$(INSTALL) -m 755 -d $(LIBDIR)/common
	$(INSTALL) -m 644 common/*.m4 common/*.sed $(LIBDIR)/common
	$(INSTALL) -m 644 $(MESSAGES) $(MSGDIR)

titles.m4: $(DOCBASE:=.txt) $(LSED_DOCS) $(LM4_DOCS) $(STXDEFS)
	./scripts/gather_stx_titles -f txt -t html $(DOCBASE:=.txt) > $@
	./scripts/gather_stx_titles -f lsed -t sed.html $(LSED_DOCS) >> $@
	./scripts/gather_stx_titles -f lm4 -t m4.html $(LM4_DOCS) >> $@

README.html: README titles.m4 $(STXDEFS)
	$(STX2ANY) --link-abbrevs examples/style.m4 titles.m4 $< > $@

examples/Stx-doc.html: examples/Stx-doc.txt titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. --link-abbrevs examples/style.m4 titles.m4 $< > $@

examples/Stx-ref.html: examples/Stx-ref.txt titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. --numbering on examples/style.m4 titles.m4 $< > $@

examples/%.html: examples/%.txt titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. examples/style.m4 titles.m4 $< > $@

%.m4.html: %.lm4 titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. examples/style.m4 titles.m4 $< > $@

%.sh.html: %.lsh titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. examples/style.m4 titles.m4 $< > $@

%.sed.html: %.lsed titles.m4 $(STXDEFS)
	$(STX2ANY) -Dw_base=.. examples/style.m4 titles.m4 $< > $@

clean: gc clean-leavedocs
	rm -f $(DOCS)

gc:
	rm -f *.dvi *.toc *.log *.aux

clean-leavedocs:
	rm -f $(STXDEFS) $(INST_SCRIPTS) $(MESSAGES) titles.m4

.PHONY: clean gc clean-leavedocs all doc install test chmod

