# The installed library directory, change this if necessary:
LIBDIR = ..

DOC = Circuit_macros
DOCSRC = Circuit_macros.tex body.tex defines.tex

PICTEX = \
  ACsymbol.tex AlogixMan.tex \
  AmpTableMan.tex AntennasMan.tex ArrestersMan.tex AudioMan.tex \
  AutologixMan.tex Axes.tex \
  Buffer.tex BigResistor.tex BipMan.tex \
  CapacitorsMan.tex Composite.tex ConfigA.tex ConfigB.tex \
  ConfigC.tex ConnMan.tex Corners.tex ContactMan.tex ContactsMan.tex \
  Dac.tex Darlington.tex DCsymbol.tex DemultiplexerMan.tex DiodesMan.tex \
  EmarrowsMan.tex FF.tex FlipFlop.tex Flowdiag.tex FusesMan.tex \
  GroundsMan.tex HeadersMan.tex HybridPi.tex InductorsMan.tex \
  JackMan.tex LogicMan.tex \
  Loop.tex MultiplexerMan.tex NPDTMan.tex NLGMan.tex NportMan.tex \
  Oblique.tex OpampMan.tex Opto.tex ParSeries.tex PconnMan.tex \
  Potentiometers.tex QTrans.tex \
  RelayMan.tex relaycoilMan.tex ResistorsMan.tex \
  Series.tex ShiftRMan.tex Sinus.tex SLDsMan.tex SourcesMan.tex \
  SRffMan.tex SwitchesMan.tex \
  Taps.tex TgateMan.tex Thermal.tex Tline.tex \
  VariableMan.tex WindingsMan.tex Workflow.tex XformMan.tex \
  arrowex.tex \
  bitr.tex bi_trans.tex bistableMan.tex \
  currents.tex eboxdims.tex fbfilter.tex fetMan.tex heaterMan.tex \
  lrarrows.tex MoreTableMan.tex mplex.tex opampex.tex quick.tex \
  sampleIC.tex stringdims.tex thyristorMan.tex ujtMan.tex \
  woodchips.tex

VERBATIM = BigResistor2.verb eboxdims.verb
BOXDIMS = AntennasMan.tex bi_trans.tex ConfigA.tex ConfigB.tex ConfigC.tex \
  Corners.tex \
  Dac.tex eboxdims.tex FlipFlop.tex \
  OpampMan.tex ParSeries.tex Sinus.tex stringdims.tex \
  WindingsMan.tex woodchips.tex
# BOXDIMS = $(PICTEX)

LATEX = latex
LATEX = latex --quiet

BIBTEX=BIBINPUTS=. bibtex

M4 = m4 -I $(LIBDIR)
# If M4PATH has been set:
M4 = m4

# For gpic
MODE = gpic
PIC = pic -t
PRE =
POST = ;printf '\\centerline{\\box\\graph}\n'
PST =

# For dpic; comment these to stick with gpic.
MODE = pstricks
PIC = dpic -p
# PIC = $$HOME/dpic/test/dpic -p
# PIC = $$HOME/dpic/p2c/ftp/dpic -p
PRE =
POST =
#POST = ;printf '}%%'
PST = ;printf '\\usepackage{pstricks}\n' >> heading.tex
# PST = ;printf '\\usepackage{tikz}\n' >> heading.tex

SFX = dvi

M4LIBS = $(MODE).m4
.SUFFIXES: .tex .m4
.m4.tex:
	touch $(DOC).dim
	$(M4) $(M4LIBS) $(DOC).dim $*.m4 > $*.pic
	($(PRE) $(PIC) $*.pic $(POST)) > $*.tex

$(DOC).pdf:
	touch mode.tex
	-if grep -q tikz mode.tex ; then true ; else \
           rm mode.tex; make MODE=tikz clean mode.tex ; fi
	make MODE=pgf PIC="dpic -g" LATEX="pdflatex --quiet" SFX=pdf \
         POST="; printf '\\\\vspace*{-0.5\\\\baselineskip}\\n'" \
         $(DOC).pdf
#  This breaks internal links:
#	optpdf $(DOC).pdf
	chmod 644 $(DOC).pdf
	
$(DOC).ps:
	printf "\n $(DOC).ps:\n\n"
	make MODE=pstricks PIC="dpic -p" LATEX="latex --quiet" \
      SFX=dvi POST="" $(DOC).dvi
	dvips -t letter $(DOC) -o

$(DOC).$(SFX): mode.tex citations $(PICTEX)
	@printf "\n $(DOC).SFX=$(DOC).$(SFX):\n\n"
	$(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
    -@if grep -s "Warning: Reference " $(DOC).log ; then \
           @printf "\n Warning:\n\n" ; \
           $(LATEX) $(DOC) ; $(BIBTEX) $(DOC) ; \
         elif test ! -f $(DOC).$(SFX) ; then\
           @printf "\n No file $(DOC).$(SFX)\n\n" ; \
           $(LATEX) $(DOC) ; $(BIBTEX) $(DOC) ; fi

ACsymbol.tex DCsymbol.tex:
	touch $(DOC).dim
	$(M4) $(M4LIBS) $(DOC).dim $*.m4 > $*.pic
	$(PRE) $(PIC) $*.pic | sed -e '/end{tikzpicture}/s/$$/%/' > $*.tex

citations: mode.tex $(DOC).bbl $(PICTEX)
	@printf "\n citations:\n\n"
	$(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
	touch citations

$(DOC).bbl: $(DOC).bib $(DOC).aux
	$(BIBTEX) $(DOC)

# $(DOC).aux: mode.tex $(DOCSRC) heading.tex $(VERBATIM) $(PICTEX)
$(DOC).aux: mode.tex $(DOCSRC) $(VERBATIM) $(PICTEX)
	@printf "\n $(DOC).aux:\n\n"
	$(LATEX) $(DOC) ; $(BIBTEX) $(DOC)
	rm -f $(BOXDIMS)
	make $(BOXDIMS)

mode.tex:
	-if test "$(MODE)" = "pstricks" ; then \
	printf "\\usepackage{pstricks}\n" > mode.tex ; else \
	printf "\\usepackage{tikz}\n" > mode.tex ; fi
	printf "\\def\\Version{" >> mode.tex
	sed -e 's/$$/}/' Version.tex >> mode.tex

heading.tex:
	printf '\\documentclass{article}\n' > heading.tex
	printf '\\usepackage{verbatim,url}\n' >> heading.tex
	printf '\\usepackage{multicol}\n' >> heading.tex
	printf '\\usepackage{amssymb,boxdims}\n' >> heading.tex $(PST)
	printf '\\usepackage{float}\n' >> heading.tex $(PST)

opampex.tex tran.tex bitr.tex: opampex.m4
	$(M4) $(M4LIBS) $*.m4 > $*.pic
	$(PIC) $*.pic > $*.tex

pics: $(PICTEX)

BigResistor2.verb: BigResistor.m4
	( printf '\\begin{verbatim}\n'; \
           sed -n '/thinlines/,/PE/p' BigResistor.m4 ;\
    printf '\\end{verbatim}\n' ) > BigResistor2.verb

eboxdims.verb: eboxdims.m4
	( printf '\\begin{verbatim}\n' ; \
           sed -e '/thinlines/,$$d' eboxdims.m4 ; \
    printf '.PE\n\\end{verbatim}\n' ) > eboxdims.verb

ex08.m4: ../examples/ex08.m4
	cp ../examples/ex08.m4 ex08.m4

clobber: clean
	rm -f *.dvi Circuit_macros.pdf

clean:
	rm -f *.bbl *.log *.aux *.blg *.toc citations *.verb ex08.m4
	rm -f *.pic $(PICTEX) heading.tex *.dim *.uu Circuit_macros.ps
	rm -f mode.tex Circuit_macros.out *.upa *.upb *.brf Circuit_macros.dvi