# Makefile for the pdflatex subdirectory

# Where the .m4 libraries are installed.  Change if necessary:
LIBDIR = $$HOME/lib

#---------------------------------------------

MKDIM=pwd | sed -e 's%^%=boxdimfile{%' -e 's%/cygdrive/\(.\)/%\1:/%' \
       -e 's%$$%/$(DIMFILE)}%' ;

# MikTeX on Cygwin requires absolute addresses on included files because
# mpost text conversion is executed in a temporary directory.
# Comment out the following line to produce absolute addresses.
MKDIM=printf '=boxdimfile{$(DIMFILE)}\n' ;

#---------------------------------------------

# The .m4 circuit_macro libraries used for the examples:
M4MACROS = mpost.m4
M4 = m4 -I $(LIBDIR)

#---------------------------------------------
DOC = examples

FIGS = Adder.mps Alogix.mps ABlogix.mps Antennas.mps Audio.mps AmpTable.mps \
  Bip.mps Btree.mps Byte.mps \
  CanLogic.mps CctTable.mps Conn.mps Counting.mps Crossbar.mps Crow.mps \
  Csource.mps \
  Decoder.mps Demultiplexer.mps Diodes.mps Drive.mps \
  Emarrows.mps Flow.mps Fuses.mps \
  Globe.mps Grounds.mps Headers.mps Heathkit.mps Jack.mps \
  I2L.mps Inclpdf.mps \
  Logic.mps Loglog.mps MC.mps MotorControl.mps Multiplexer.mps \
  NLG.mps NPDT.mps Nport.mps \
  Opamp.mps Optoiso.mps Pconn.mps Rectifiers.mps Relay.mps Rotbox.mps \
  Schottky.mps Sierpinski.mps ShiftR.mps Sixpole.mps Sources.mps SQUID.mps \
  Switches.mps \
  Tgate.mps Three.mps Timer.mps TTLnand.mps \
  Windings.mps Variable.mps Xform.mps \
  bistable.mps control.mps csc.mps diamond.mps \
  ex00.mps ex01.mps ex02.mps ex03.mps ex04.mps \
  ex05.mps ex06.mps ex07.mps ex08.mps ex09.mps ex10.mps ex11.mps ex12.mps \
  ex15.mps ex16.mps ex17.mps ex18.mps ex19.mps ex21.mps exp.mps \
  fet.mps graysurf.mps lcct.mps pwrsupply.mps quick.mps \
  recycle.mps rose.mps sfg.mps thyristor.mps ujt.mps worm.mps yinyang.mps

# Files using boxdims macros:
BOXDIMS = ex09 Crow Inclpdf Loglog TTLnand Opamp Windings

# It is advisable to do `make clean' between test examples.
#---------------------------------------------

DPIC = dpic
# DPIC = $$HOME/dpic/test/dpic

TR = | tr '=' '\134'

PDFLATEX = pdflatex

DIMFILE = tmp.dim

.SUFFIXES: .tex .pdf .m4 .mps
.tex.pdf:
	$(PDFLATEX) $*
.m4.mps:
	@touch $(DIMFILE) $(DOC).dim
	@echo "Writing $*.mp header"
	@(printf 'verbatimtex\n' ;\
     printf '=documentclass[11pt]{article}\n' ;\
     printf '=usepackage{times,boxdims,graphicx}\n' ;\
     $(MKDIM) \
     printf '=begin{document} etex\n' ) $(TR) > $*.mp
	$(M4) $(M4MACROS) $(DIMFILE) $(DOC).dim $*.m4 | $(DPIC) -s >> $*.mp
	@printf 'end\n' >> $*.mp
	mpost --tex=latex $*.mp
	mv $*.1 $*.mps

EXL = exlinks
$(DOC).pdf: $(DOC).tex
	-if test "$(DOC)"="examples" ; then make exlinks dims; fi
	make $(FIGS)
	$(PDFLATEX) $(DOC)
	-if test -n "$(BOXDIMS)" ; then rm dims; \
       for box in $(BOXDIMS) ; do rm $$box.mps; done; \
       make dims; $(PDFLATEX) $(DOC); fi

dims: exlinks
	-if test -n "$(BOXDIMS)" ; then for box in $(BOXDIMS) ; do \
        make $$box.mps; rm $$box.mps; make $$box.mps; done; fi
	touch dims

figs: $(EXL) $(FIGS)

exlinks:
	@echo ""
	@echo 'Ignore "cannot create ... exists" warnings.'
	-@if test ! -f ex11.m4 ; then \
      ls ../*.m4 | sed -e 's/^/ln -s /' -e '/test.m4/d' | sh;\
      ls ../../doc/*.m4 ../*.bb ../*.gz | sed -e 's/^/ln -s /' | sh;\
      fi
	touch $(EXL)

clobber: clean
	rm -f $(DOC).pdf test.m4

tst:
	rm -f tst.aux tst.log tst.pdf test.[0-9]* test.mp test.mp[sx] $(DIMFILE)
	make test.mps
	rm test.mps
	make test.mps
	pdflatex tst

tst1:
	rm -f tst.aux tst.log tst.pdf test.[0-9]* test.mp test.mp[sx] $(DIMFILE)
	make test.mps
	pdflatex tst

clean:
	rm -f stamp-* $(FIGS) *.dvi *.bb *.gz tst.pdf *.out
	-if /usr/bin/test -f exlinks ; then \
     ls -l *.m4 | grep '\->' | \
       sed -e 's/^.* \([^ ][^ ]*\) ->.*$$/rm -f \1/' | sh; fi
	rm -f *.log *.ps *.aux *.mp *.[0-9] *.[0-9][0-9] *.mpx *.mps *.dim
	rm -f core log mpxerr* *links figs.* *.dim dims Ftest.*
	rm -f man[0-9]*.pic man[0-9]*.m4 figs.m4 test.1 test.mp test.pic test.tex
	-if test -n "$(BOXDIMS)" ; then for box in $(BOXDIMS) ; do \
      rm -f F$$box.tex $$box.tex ; done; fi
