#
#
LIBDIR = $$HOME/lib
M4LIBS = svg.m4 DPVconfig.m4
M4LIBS = svg.m4
M4 = m4
PDFCONVERT = pdf2svg
# The current dvisvgm outputs CRLF line endings
# PDFCONVERT = dvisvgm

# To process a single file, copy it to test.m4 and type "make tst"
# to produce tstDPV.html

DPIC = dpic
#DPIC = $$HOME/dpic/pascal/p2c/ftp/dpic
#DPIC = ../dpic/pascal/p2c/ftp/dpic
#DPIC = ../dpic/bison/dpic
#DPIC = ../dpic/bi*dev/dpic

# Quiet mode for MiKTeX or texlive
# QLATEX = latex --quiet
QLATEX = latex -interaction=batchmode

# To test the Windows executable.  Change these as needed for the operating
# system.  NOTE: cscDPV.m4 and Connectors.m4 use awk and sed which
# do not work at present with the Windows version.
# M4LIBS = svg.m4 windows.m4
# DPIC = ../dpic/bison/distsrc/Windows/dpic

TR = | tr '!' '\134'

SUFFIXES: .pic .svg .m4 .xsvg
pic.svg:
       $(DPIC) -v $*.pic > $*.svg
#       grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz
m4.svg:
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' | $(DPIC) -v > $*.svg
#       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
#       $(DPIC) -v $*.pic > $*.svg
m4.xsvg:
       touch F_$*.dim
       $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic
       $(DPIC) -g $*.pic >> $*.tex
       echo "!documentclass[tikz]{standalone}" $(TR)> F_$*.tex
       echo "!usepackage{boxdims,siunitx,amssymb}" $(TR)>> F_$*.tex
       echo "!begin{document}" $(TR)>> F_$*.tex
       echo "!input $*.tex" $(TR)>> F_$*.tex
       echo "!end{document}" $(TR)>> F_$*.tex
       pdf$(QLATEX) F_$*
       $(M4) pgf.m4 F_$*.dim $*.m4 > $*.pic
       $(DPIC) -g $*.pic >> $*.tex
       pdf$(QLATEX) F_$*
       if test "$(PDFCONVERT)" = "pdf2svg" ; then \
     echo "Using pdf2svg" ; \
     pdf2svg F_$*.pdf $*.xsvg && cat $*.xsvg | tr -d '\r' > $*.svg ; \
   else \
     echo "Using dvisvgm" ; \
     dvisvgm --pdf F_$*.pdf && cat F_$**.svg | tr -d '\r' > $*.svg ; \
     cp $*.svg $*.xsvg ; \
     fi
       rm -f F_$**

CCTDPV = \
AdderDPV.svg AlogixDPV.svg ABlogixDPV.svg AmpTableDPV.svg AntennasDPV.svg \
ArrestersDPV.svg AudioDPV.svg \
BipDPV.svg BtreeDPV.svg ByteDPV.svg ButtonsDPV.svg \
CanLogicDPV.svg CapacitorsDPV.svg ChipsDPV.svg ConnDPV.svg ConnectorsDPV.svg \
ContactDPV.svg ContactsDPV.svg \
CrowDPV.svg CsourceDPV.svg \
DecoderDPV.svg DemultiplexerDPV.svg DiniDPV.svg DiodesDPV.svg DriveDPV.svg \
EEPDPV.svg EmarrowsDPV.svg EscherDPV.svg EVplugsDPV.svg \
FlowDPV.svg FontsDPV.svg FusesDPV.svg \
GeometryDPV.svg GrayCodeDPV.svg GroundsDPV.svg \
HeadersDPV.svg HeathkitDPV.svg \
InclepsDPV.svg InductorsDPV.svg I2LDPV.svg JackDPV.svg \
LogicDPV.svg LoglogDPV.svg \
MCDPV.svg MixerDPV.svg MoreTableDPV.svg MotorControlDPV.svg \
MultiplexerDPV.svg \
NLGDPV.svg NPDTDPV.svg NportDPV.svg OpampDPV.svg OptoisoDPV.svg \
PconnDPV.svg PlateDPV.svg PushPullDPV.svg QuantumDPV.svg \
RectifiersDPV.svg Reg723DPV.svg RelayDPV.svg ResistorsDPV.svg RotboxDPV.svg\
SchottkyDPV.svg SevensegmentDPV.svg ShiftRDPV.svg SierpinskiDPV.svg \
SixpoleDPV.svg SourcesDPV.svg Spec555DPV.svg SwitchesDPV.svg \
TTLnandDPV.svg TgateDPV.svg ThreeDPV.svg \
TubediagsDPV.svg VariableDPV.svg WindingsDPV.svg XformDPV.svg \
cbresistorDPV.svg controlDPV.svg cscDPV.svg diamondDPV.svg \
ex01DPV.svg ex02DPV.svg ex03DPV.svg ex04DPV.svg ex05DPV.svg ex06DPV.svg \
ex08DPV.svg ex09DPV.svg ex10DPV.svg ex11DPV.svg ex12DPV.svg \
ex15DPV.svg ex16DPV.svg ex18DPV.svg ex21DPV.svg \
expDPV.svg fetDPV.svg graysurfDPV.svg keyboardDPV.svg \
lcctDPV.svg LT3757DPV.svg \
pwrsupplyDPV.svg quickDPV.svg randomDPV.svg recycleDPV.svg relaycoilDPV.svg \
roseDPV.svg sfgDPV.svg shapesDPV.svg SmithchartDPV.svg paletteDPV.svg \
thyristorDPV.svg ujtDPV.svg UNODPV.svg wormDPV.svg XORDPV.svg Np.svg

TEXTFREE = \
DiniDPV.svg DriveDPV.svg EscherDPV.svg SierpinskiDPV.svg SixpoleDPV.svg \
diamondDPV.svg ex02DPV.svg ex15DPV.svg pwrsupplyDPV.svg recycleDPV.svg \
roseDPV.svg

CCTDPVs = \
ByteDPV.svg ConnectorsDPV.svg controlDPV.svg CsourceDPV.svg \
EEPDPV.svg ex01DPV.svg FlowDPV.svg HeathkitDPV.svg \
  quickDPV.svg NportDPV.svg

examplesDPV.html: examplesDPV.htmx
       cp ../quick.m4 .
       make $(CCTDPV) quick.xsvg
       Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
     sed -e 's/Version XXX/Version '$$Version'/' examplesDPV.htmx \
     | m4 > examplesDPV.html
       rm -f quick.xsvg

examplesDPVs.html: examplesDPVs.htmx
       cp ../quick.m4 .
       make $(CCTDPVs) quick.xsvg
       Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
     sed -e 's/Version XXX/Version '$$Version'/' examplesDPVs.htmx \
     | m4 > examplesDPVs.html

SED = sed -e '/^\%/d'
TEST = test

tst1:
       @if test -f test.pic; then printf "\n\nUsage: make clean tst\n\n"; exit 1;fi
       m4 $(M4LIBS) test.m4 | $(SED) > test.pic
       $(DPIC) -v $(TEST).pic > $(TEST).svg
       make tstDPV.html

tst:
       @if test -f test.pic; then printf "\n\nUsage: make clean tst\n\n"; exit 1;fi
       m4 $(M4LIBS) test.m4 | $(SED) > test.pic
       $(DPIC) -v $(TEST).pic > $(TEST).svg
       m4 $(M4LIBS) $(TEST).m4 | $(SED) > $(TEST).pic
       $(DPIC) -v $(TEST).pic > $(TEST).svg
#       grep '<\!-- width' $(TEST).svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' \
#    > $(TEST).siz
       make tstDPV.html

test.pic:
       if test -f test.pic ; then echo "Usage: make clean tst" ; fi
       m4 $(M4LIBS) test.m4 | $(SED) > test.pic
       m4 $(M4LIBS) test.m4 | $(SED) > test.pic

tstDPV.html: tstDPV.htmx $(TEST).svg
       Version=`sed -e 's/Version //' $(LIBDIR)/doc/Version.tex` ; \
     sed -e 's/Version XXX/Version '$$Version'/' \
         -e 's/XXXXX/'$(TEST)'/g' \
     tstDPV.htmx | m4 > tstDPV.html
#       cp tstDPV.html $(TEST) $$HOME/public_html/svg

echospics:
       @echo $(CCTDPVs)

# necessary because of rotated text:
LoglogDPV.svg:
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
       $(DPIC) -v $*.pic > $*.svg
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
       $(DPIC) -v $*.pic > $*.svg
#       grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz

ConnectorsDPV.svg cscDPV.svg SmithchartDPV.svg test.svg:
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
       $(DPIC) -v $*.pic > $*.svg
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
       $(DPIC) -v $*.pic > $*.svg
#       grep '<\!-- width' $*.svg | sed -e 's%<\!-- *%%' -e 's% *-->%%' > $*.siz

InclepsDPV.svg: InclepsDPV.m4
       m4 $(M4LIBS) $*.m4 | sed -e '/^\%/d' > $*.pic
       $(DPIC) -v $*.pic > $*.svg
       $(DPIC) -v $*.pic > $*.svg

Incleps.png:
       (cd ..; make Incleps.png); cp ../Incleps.png .

clean:
       @printf "\n svg clean:\n"
       rm -f *.svg *.dim *.ps *log *.siz *.pic Incleps.png examplesDP*.html
       rm -f tstDPV.html copy_tmp__ quick.m4 quick.xsvg
       rm -f *.otf xx* *png *.pdf *.css *.xml quick.tex
       @printf "\n"

clobber: clean
       rm -f test.m4 paletteDPV.svg