summaryrefslogtreecommitdiff
path: root/web/c_cpp/cwebx/Makefile
blob: a61bd6280a66b1fee41fd8a9511d0d940e54fc60 (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
116
117
118
119
120
121
122
# This file is part of CWEB, version x3.0.

# 
# Read the README file, then edit this file to reflect local conditions
#

# The C compiler should be ANSI compatible

CC = gcc

# We let CWEAVE report syntax errors by setting +d.
# The flag +m makes the TeX output slightly more compact.
# We use the +e flag since our printer is two-sided.

CWFLAGS = +mde
CTFLAGS =

# We keep debugging info around to enable the `+d' option of cweave
CFLAGS = -DDEBUG -DSTAT -g

# RM and CP are used below in case rm and cp are aliased

RM= /bin/rm
CP= /bin/cp
RENAME= /bin/mv


# Set CCHANGES to common-foo.ch if you need changes to common.w in another
# file than common.ch

CCHANGES=

# Set TCHANGES to ctangle-foo.ch if you need changes to ctangle.w in another
# file than ctangle.ch

TCHANGES=

# Set WCHANGES to cweave-foo.ch if you need changes to cweave.w in another
# file than cweave.ch

WCHANGES=

##########  You shouldn't have to change anything after this point #######

CWEAVE = ./cweave $(CWFLAGS)
CTANGLE = ./ctangle $(CTFLAGS)

.SUFFIXES: .tex .dvi .w

.w.tex:
	$(CWEAVE) $*

.tex.dvi:
	tex $*.tex

.w.c:
	$(CTANGLE) $*

.w.dvi:
	make $*.tex
	make $*.dvi

.w.o:
	make $*.c
	make $*.o

all: cweb doc listings
cweb: ctangle cweave
manual doc: manual.dvi
listings: common.dvi ctangle.dvi cweave.dvi

cautiously:
	make common.c ctangle.c cweave.c
	$(RENAME) ctangle SAVEctangle # save version in case things mess up
	make ctangle
	$(RENAME) common.c SAVEcommon.c
	./ctangle common $(CCHANGES)
	diff common.c SAVEcommon.c
	$(RENAME) SAVEcommon.c common.c # restore date
	$(RENAME) ctangle.c SAVEctangle.c
	./ctangle ctangle $(TCHANGES)
	diff ctangle.c SAVEctangle.c
	$(RENAME) SAVEctangle.c ctangle.c # restore date
	$(RENAME) cweave.c SAVEcweave.c
	./ctangle cweave $(WCHANGES)
	diff cweave.c SAVEcweave.c
	$(RENAME) SAVEcweave.c cweave.c # restore date
	$(RM) SAVEctangle # succeeded, use new binary from now on

SAVEctangle.c:
	$(CP) ctangle.c SAVEctangle.c

SAVEcommon.c:
	$(CP) common.c SAVEcommon.c

common.c: common.w $(CCHANGES) common.inc
	$(CTANGLE) common $(CCHANGES)
common.h: common.w $(CCHANGES)
	$(CTANGLE) common $(CCHANGES)

common.tex:  common.w common.inc
	$(CWEAVE) common $(CCHANGES)

ctangle: ctangle.o common.o
	$(CC) $(CFLAGS) -o ctangle ctangle.o common.o 

ctangle.c: ctangle.w $(TCHANGES) common.inc common.h
	$(CTANGLE) ctangle $(TCHANGES)

ctangle.tex:  ctangle.w $(TCHANGES) common.inc intro.inc
	$(CWEAVE) ctangle $(TCHANGES)

cweave: cweave.o common.o
	$(CC) $(CFLAGS) -o cweave cweave.o common.o

cweave.c: cweave.w $(WCHANGES) common.inc common.h parser.w rules.w
	$(CTANGLE) cweave $(WCHANGES)

cweave.tex:  cweave.w $(WCHANGES) parser.w rules.w common.inc intro.inc
	$(CWEAVE) cweave $(WCHANGES)

manual.dvi: compare.tex