# Makefile for Eplain.  This file is public domain.

VERSION     = 3.1
DIST_NAME   = eplain-$(VERSION)

# Categories of the files in the source tree.
SOURCES     = arrow.tex btxmac.tex ifpdf.sty path.sty texnames.sty xeplain.tex
SUPPORT     = Makefile NEWS PROJECTS README README.TDS INSTALL AUTHORS \
              ChangeLog COPYING eplain.ini util/pdfcrop.pl util/mkdist-*
MANUALS     = $(patsubst %,doc/%,Makefile *.texi btxdoc.bib btxdoc.tex texinfo.tex)
TESTS       = $(patsubst %,test/%,*.tex *.bib *.map *.mst *.eps)
UTILS       = util/idxuniq util/trimsee
DEMOS       = demo/Makefile demo/*.tex
JPEG_DEMOS  = doc/xhyper.jpg doc/lscommnt.jpg

# TDS tree directories.  Must start with $(DIST_NAME)/
DIR_MAIN    = $(DIST_NAME)/tex/eplain
DIR_DOC     = $(DIST_NAME)/doc/eplain
DIR_SOURCE  = $(DIST_NAME)/source/eplain/eplain-source-$(VERSION)

# Files to go under the $(DIR_*) directories.
FILES_MAIN  = eplain.tex arrow.tex btxmac.tex eplain.ini
FILES_DOC   = AUTHORS COPYING ChangeLog INSTALL NEWS PROJECTS README \
              doc/eplain.info doc/eplain.html doc/eplain.pdf $(DEMOS) \
              $(JPEG_DEMOS) $(UTILS)
FILES_SOURCE= $(SOURCES) $(SUPPORT) $(MANUALS) $(TESTS) $(UTILS) $(DEMOS)

INSTALL     = install
ZIP         = zip
TAR_FLAGS   = 
GZIP_FLAGS  = 
ZIP_FLAGS   = -q

.PHONY: default alldoc doc dvi ps pdf html info btxdoc dist
.PHONY: $(DIST_NAME) $(DIR_MAIN) $(DIR_DOC) $(DIR_SOURCE)
.PHONY: clean mostlyclean distclean maintainer-clean
.DELETE_ON_ERROR:


default: eplain.tex

eplain.tex: util/mkdist-merge $(SOURCES)
	version=$(VERSION) util/mkdist-merge


alldoc:
	cd doc && $(MAKE)

doc:
	cd doc && $(MAKE) doc

dvi:
	cd doc && $(MAKE) dvi

ps:
	cd doc && $(MAKE) ps

pdf doc/eplain.pdf:
	cd doc && $(MAKE) pdf

html doc/eplain.html $(JPEG_DEMOS):
	cd doc && $(MAKE) html

info doc/eplain.info:
	cd doc && $(MAKE) info

btxdoc:
	cd doc && $(MAKE) btxdoc

INSTALL:
	cd doc && $(MAKE) ../INSTALL


dist: $(DIST_NAME) $(DIR_MAIN) $(DIR_DOC) $(DIR_SOURCE)
	@echo C $(DIR_MAIN)/eplain.aux
	@cat /dev/null > $(DIR_MAIN)/eplain.aux
	@echo A $(DIST_NAME)/README
	@cp README.TDS $(DIST_NAME)/README
	@echo
	@echo C `dirname $(DIR_SOURCE)`/`basename $(DIR_SOURCE)`.zip
	@cd `dirname $(DIR_SOURCE)` && $(ZIP) -r $(ZIP_FLAGS) \
	  `basename $(DIR_SOURCE)`.zip `basename $(DIR_SOURCE)`
	@rm -rf $(DIR_SOURCE)
	@echo C $(DIST_NAME).tar.gz
	@tar -c $(TAR_FLAGS) $(DIST_NAME) | gzip $(GZIP_FLAGS) > $(DIST_NAME).tar.gz
	@rm -rf $(DIST_NAME)
	@echo

$(DIST_NAME):
	@rm -rf $(DIST_NAME)

$(DIR_MAIN): $(FILES_MAIN)
$(DIR_DOC): $(FILES_DOC)
$(DIR_SOURCE): $(FILES_SOURCE)

$(DIR_MAIN) $(DIR_DOC) $(DIR_SOURCE):
	@echo D $@
	@$(INSTALL) -d $@
	@for file in $^; do \
	  echo A $@/$$file; \
	  cp --parents $$file $@; \
	done
	@echo


define clean-cmds
rm -rf $(DIST_NAME)
endef

define distclean-cmds
$(clean-cmds)
rm -f $(DIST_NAME).tar.gz
rm -f eplain.fmt eplain.log
endef

define maintainer-clean-cmds
$(distclean-cmds)
rm -f eplain.tex
endef

clean mostlyclean:
	$(clean-cmds)
	cd doc && $(MAKE) $@
	cd demo && $(MAKE) $@

distclean:
	$(distclean-cmds)
	cd doc && $(MAKE) distclean
	cd demo && $(MAKE) distclean

maintainer-clean:
	$(maintainer-clean-cmds)
	cd doc && $(MAKE) maintainer-clean
	cd demo && $(MAKE) maintainer-clean
