# this Makefile uses a flat directory structure for demonstration # purposes; the main directory (../..) contains a slightly more # modular organization. SPLINT_ROOT = $(shell pwd)/../.. PARSER = ldp LEXER = ldl MANUAL = ldman LD_CORE_PREREQS = ${SPLINT_XTEXSTYLES} ${SPLINT_XPTABLES} ${SPLINT_XLTABLES} ${SPLINT_ROOT}/cweb/bo.tok LD_DOC_PREREQS = %.tex %.sty ${PARSER}.tok ldunion.sty ldint.sty ldfrontmatter.sty ${LD_CORE_PREREQS} ptab.tex ltab.tex ld_small_tab.tex LD_DOC_PREREQS += ld_small_dfa.tex ltokenset.sty lstokenset.sty LD_DOC_PREREQS_XREF = ${LD_DOC_PREREQS} %.scn %.idx include ${SPLINT_ROOT}/makefile.inc include ${SPLINT_ROOT}/makefile.loc # rules specific to this example ptabout: ${SPLINT_ROOT}/cweb/mkeparser.c ${PARSER}.c ${CC} -DPARSER_FILE=\"../examples/ld/$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< ptab.tex: ptabout $< --optimize-actions --optimize-tables $@ ltabout: ${SPLINT_ROOT}/cweb/mkscanner.c ldl_states.h ${LEXER}.c ${CC} -DLEXER_FILE=\"../examples/ld/$(lastword $^)\" -o $@ $< ltab.tex: ltabout $< --optimize-actions --optimize-tables $@ ${LEXER}.c: ${LEXER}.l ${FLEX} -o $@ $< ${PARSER}.yy : ldgram.x @${CTANGLE} $< ${LEXER}.ll: ldlex.x @${CTANGLE} $< ${MANUAL}.stx: ${MANUAL}.x ldgram.x ldlex.x ldlexo.x ldgramo.x ldnp.x @${CTANGLE} $< # term name parser for ld grammar ldsmallp_out: ${SPLINT_ROOT}/cweb/mkeparser.c ld_small_parser.c ${CC} ${BISON_STATE} -DPARSER_FILE=\"../examples/ld/$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< ldsmalll_out: ${SPLINT_ROOT}/cweb/mkscanner.c ld_small_lexer.c ${CC} -DLEXER_FILE=\"../examples/ld/$(lastword $^)\" -o $@ $< ld_small_tab.tex: ldsmallp_out $< --optimize-actions --optimize-tables $@ ld_small_dfa.tex: ldsmalll_out $< --optimize-actions --optimize-tables $@ ld_small_parser.yy \ ld_small_lexer.ll: ldnp.x @${CTANGLE} $< # numeric parser for ld grammar ldnump_out: ${SPLINT_ROOT}/cweb/mkeparser.c ld_num_parser.c ${CC} ${BISON_STATE} -DPARSER_FILE=\"../examples/ld/$(lastword $^)\" -DYYPARSE_PARAMETERS= -o $@ $< ldnuml_out: ${SPLINT_ROOT}/cweb/mkscanner.c ld_num_lexer.c ${CC} -DLEXER_FILE=\"../examples/ld/$(lastword $^)\" -o $@ $< ld_num_tab.tex: ldnump_out $< --optimize-actions --optimize-tables $@ ld_num_dfa.tex: ldnuml_out $< --optimize-actions --optimize-tables $@ ld_num_parser.yy \ ld_num_lexer.ll: ldnump.x @${CTANGLE} $< ${MANUAL}.tex: ${MANUAL}.x ldgram.x ldlex.x ldlexo.x ldgramo.x ldnp.x ${CWEAVE} $< ${MANUAL}.sty: ${MANUAL}.stx ${UNLINE} $< $@ ${MANUAL}.gdx: %.gdx: ${LD_DOC_PREREQS_XREF} ${PARSER}.tok @echo "Making the bison and TeX indices ..." ${TEX} $*.tex ${MANUAL}.pdf: %.pdf: ${LD_DOC_PREREQS_XREF} %.gdy ${PDFTEX} $< && touch $*.gdy && touch $*.pdf #${PARSER}.tok \ #ldl_states.h: ${MANUAL}.tex ${MANUAL}.sty ${LD_CORE_PREREQS} # ${TEX} ${MODEBOOTSTRAP} \\input $< ${PARSER}.tok: ldgram.tex ${MANUAL}.sty ${LD_CORE_PREREQS} ${TEX} ${MODEBOOTSTRAP} \\input $< ldl_states.h: ldlex.tex ${MANUAL}.sty ${LD_CORE_PREREQS} ${TEX} ${MODEBOOTSTRAP} \\input $< ldgram.tex ldlex.tex: \ %.tex: %.x ${CWEAVE} -x $< docs: ${MANUAL}.pdf mostlyclean: clean_temp -rm -f ptabout ltabout ldsmalll_out ldsmallp_out ldnump_out ldnuml_out ${MANUAL}.c clean: clean_core -rm -f ptabout ltabout ldsmalll_out ldsmallp_out ldnump_out ldnuml_out *.stx ldman.sty distclean: clean cd ${SPLINT_ROOT} && ${MAKE} clean