SPLINT_ROOT = $(shell pwd)/.. include ${SPLINT_ROOT}/makefile.inc all: bo.pdf ${SPLINT_PTABLES} ${SPLINT_LTABLES} bootstrap: byytab.tex @echo "Bootstrapping the parser" b%out: mkeparser.c b%.c ${CC} -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, $^) lo.c: lo.l ${FLEX} -o $@ $< mkscanner.c mkeparser.c: \ %.c: %.w ${CTANGLE} $< # name parser smallp_out: mkeparser.c small_parser.c ${CC} -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.w bo.x lo.x np.x common.w bs.w fk.w philosophy.w references.w ${CWEAVE} $< ssffo.tex \ ssffo.idx ssffo.scn: ssffo.x ${CWEAVE} $< bo.tok: bo.tex ltab.tex byytab.tex ${TEX} $< && touch bo.tok bo.pdf: %.pdf: ${SPLINT_DOC_PREREQS} ${PDFTEX} $*.tex bo.dvi: %.dvi: ${SPLINT_DOC_PREREQS} ${TEX} $*.tex 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 ..." ${TEX} $*.tex splint.pdf: %.pdf: ${SPLINT_DOC_PREREQS_XREF} %.gdy ${PDFTEX} $*.tex && touch $*.gdy && touch $*.pdf splint.dvi: %.dvi: ${SPLINT_DOC_PREREQS_XREF} %.gdy ${TEX} $*.tex && touch $*.gdy && touch $*.dvi ${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 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: bg.yy bg.y # the files below appear as targets but are really intermediaries for other files .INTERMEDIATE: smallp_out smalll_out lstabout ltout splint.gdx