# Copyright 2012-2020, Alexander Shibakov # This file is part of SPLinT # # SPLinT is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # SPLinT is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with SPLinT. If not, see . include ../makefile.inc all: ${SPLINT_PTABLES} ${SPLINT_LTABLES} b%out: mkeparser.c b%.c ${CC} ${BISON_STATE} -DPARSER_FILE=\"$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< b%.yy: bo.x ${CTANGLE} $< %yytab.tex: b%out ${SPLINT_DRIVER_DIR}/$< --optimize-actions $@ ltab.tex: ltout ${SPLINT_DRIVER_DIR}/$< --optimize-actions $@ ltout: mkscanner.c lo_states.h lo.c ${CC} -DLEXER_FILE=\"$(lastword $^)\" -o $@ $< ssffo.ll lo.ll: \ %.ll: %.x ${CTANGLE} $< && rm $(patsubst %.x, %.c, $^) fil.ll: so.x ${CTANGLE} $< && rm $(patsubst %.x, %.c, $^) fip.yy rep.yy rap.yy \ ddp.yy: fo.x ${CTANGLE} $< && rm $(patsubst %.x, %.c, $^) # flex parser fil.c: fil.l ${FLEX} -o $@ $< fil_out: mkscanner.c fil_states.h fil.c ${CC} -DLEXER_FILE=\"$(lastword $^)\" -o $@ $< fil_states.h: so.tex lstab.tex byytab.tex ${PDFTEX} $< filtab.tex: fil_out ${SPLINT_DRIVER_DIR}/$< --optimize-actions --optimize-tables $@ fip.c rep.c rap.c \ ddp.c:%.c: %.y ${BISON} -o $@ $< fip_out rap_out \ ddp_out rep_out:%_out: mkeparser.c %.c ${CC} ${BISON_STATE} -DPARSER_FILE=\"$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< fiptab.tex raptab.tex \ ddptab.tex reptab.tex:%tab.tex: %_out ${SPLINT_DRIVER_DIR}/$< --optimize-actions --optimize-tables $@ so.tex: so.x ${CWEAVE} $< fo.tex: fo.x ${CWEAVE} $< fo.tok: fo.tex ltab.tex byytab.tex ${TEX} ${MODEBOOTSTRAP} \\input $< lo.c: lo.l ${FLEX} -o $@ $< mkscanner.c mkeparser.c: \ %.c: %.w ${CTANGLE} $< # name parser smallp_out: mkeparser.c small_parser.c ${CC} ${BISON_STATE} -DPARSER_FILE=\"$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< smalll_out: mkscanner.c small_lexer.c ${CC} -DLEXER_FILE=\"$(lastword $^)\" -o $@ $< small_tab.tex: smallp_out ${SPLINT_DRIVER_DIR}/$< --optimize-actions $@ small_dfa.tex: smalll_out ${SPLINT_DRIVER_DIR}/$< --optimize-actions $@ small_parser.yy \ small_lexer.ll: np.x @${CTANGLE} $< bo.tex: bo.x -${CWEAVE} -x $< splint.tex \ splint.idx \ splint.scn: splint.x bo.x lo.x fo.x so.x np.x common.w bs.w \ fk.w philosophy.w checklists.w references.w alphas.hx -${CWEAVE} $< alphas.hx: ${MISCCW} --alpha-list --alpha-length=1 $@ ssffo.tex \ ssffo.idx ssffo.scn: ssffo.x ${CWEAVE} $< bo.tok: bo.tex ltab.tex byytab.tex ${TEX} ${MODEBOOTSTRAP} \\input $< ssffo.pdf: %.pdf: ${SPLINT_DOC_PREREQS_XREF} ${PDFTEX} $*.tex ssffo.dvi: %.dvi: ${SPLINT_DOC_PREREQS_XREF} ${TEX} $*.tex splint.gdx: %.gdx: ${SPLINT_DOC_PREREQS_XREF} @echo "Making the bison and TeX indices ..." ${PDFTEX} $*.tex %.gdy: %.gdx splint.gdy: splint.gdx ${BINDX} --fine $^ $@ splint.xxr: %.xxr: ${SPLINT_DOC_PREREQS_XREF} @echo "Generating the cross references ..." ${PDFTEX} $*.tex splint.pdf: %.pdf: ${SPLINT_DOC_PREREQS_XREF} %.gdy %.xxr ${PDFTEX} \\input $*.tex && touch $*.gdy && touch $*.pdf splint.dvi: %.dvi: ${SPLINT_DOC_PREREQS_XREF} %.gdy ${TEX} $*.tex && touch $*.gdy && touch $*.dvi && rm $*.xxr && rm $*.ftn ${SPLINT_ROOT}tex/btokenset.sty: # stupid make weirdness @ # state parsing lstabout: mkscanner.c ssffo.c ${CC} -DLEXER_FILE=\"$(lastword $^)\" -o $@ $< lstab.tex: lstabout ${SPLINT_DRIVER_DIR}/$< --optimize-actions $@ lo.tex: lo.x ${CWEAVE} $< lo_states.h: lo.tex lstab.tex byytab.tex ${PDFTEX} $< # clean will erase all automatically generated files in the current directory clean: clean_core -rm -f ctablesout b?out ltout smallp_out \ smalll_out lstabout fil_out fip_out rep_out rap_out ddp_out include ${SPLINT_ROOT}makefile.loc # since bg.yy is not an intermediate file in examples/symbols/Makefile, repeated 'make all' # remakes bg.yy thereby forcing make to update byytab.tex, etc., which results in remaking # of bo.tok, lo.tex, eventually leading to remaking of splint.pdf; # the special target below tells make to treat bg.yy as if it were not an intermediate file .PRECIOUS: %.yy bo.tok fo.tok %.ll b%.y splint.gdx splint.xxr # the files below appear as targets but are really intermediaries for other files .INTERMEDIATE: smallp_out smalll_out lstabout ltout fil_out \ fip_out rep_out rap_out ddp_out splint.gdx