summaryrefslogtreecommitdiff
path: root/support/splint/cweb/Makefile
blob: ec9973fb6684cf4a8eed2db4d47cce859f5f75e1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
SPLINT_ROOT = $(shell pwd)/..

include ${SPLINT_ROOT}/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, $^)

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.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} ${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 ..."
				${TEX} $*.tex

splint.pdf: %.pdf:		${SPLINT_DOC_PREREQS_XREF} %.gdy
				${PDFTEX} \\input $*.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