]>
Commit | Line | Data |
---|---|---|
1 | # You probably want to take -DREDEBUG out of CFLAGS, and put something like | |
2 | # -O in, *after* testing (-DREDEBUG strengthens testing by enabling a lot of | |
3 | # internal assertion checking and some debugging facilities). | |
4 | # Put -Dconst= in for a pre-ANSI compiler. | |
5 | # Do not take -DPOSIX_MISTAKE out. | |
6 | # REGCFLAGS isn't important to you (it's for my use in some special contexts). | |
7 | CFLAGS=-I. -DPOSIX_MISTAKE -DREDEBUG $(REGCFLAGS) | |
8 | ||
9 | # If you have a pre-ANSI compiler, put -o into MKHFLAGS. If you want | |
10 | # the Berkeley __P macro, put -b in. | |
11 | MKHFLAGS= | |
12 | ||
13 | # Flags for linking but not compiling, if any. | |
14 | LDFLAGS= | |
15 | ||
16 | # Extra libraries for linking, if any. | |
17 | LIBS= | |
18 | ||
19 | # Internal stuff, should not need changing. | |
20 | OBJPRODN=regcomp.o regexec.o regerror.o regfree.o | |
21 | OBJS=$(OBJPRODN) split.o debug.o main.o | |
22 | H=cclass.h cname.h regex2.h utils.h | |
23 | REGSRC=regcomp.c regerror.c regexec.c regfree.c | |
24 | ALLSRC=$(REGSRC) engine.c debug.c main.c split.c | |
25 | ||
26 | # Stuff that matters only if you're trying to lint the package. | |
27 | LINTFLAGS=-I. -Dstatic= -Dconst= -DREDEBUG | |
28 | LINTC=regcomp.c regexec.c regerror.c regfree.c debug.c main.c | |
29 | JUNKLINT=possible pointer alignment|null effect | |
30 | ||
31 | # arrangements to build forward-reference header files | |
32 | .SUFFIXES: .ih .h | |
33 | .c.ih: | |
34 | sh ./mkh $(MKHFLAGS) -p $< >$@ | |
35 | ||
36 | default: r | |
37 | ||
38 | lib: purge $(OBJPRODN) | |
39 | rm -f libregex.a | |
40 | ar crv libregex.a $(OBJPRODN) | |
41 | ||
42 | purge: | |
43 | rm -f *.o | |
44 | ||
45 | # stuff to build regex.h | |
46 | REGEXH=regex.h | |
47 | REGEXHSRC=regex2.h $(REGSRC) | |
48 | $(REGEXH): $(REGEXHSRC) mkh | |
49 | sh ./mkh $(MKHFLAGS) -i _REGEX_H_ $(REGEXHSRC) >regex.tmp | |
50 | cmp -s regex.tmp regex.h 2>/dev/null || cp regex.tmp regex.h | |
51 | rm -f regex.tmp | |
52 | ||
53 | # dependencies | |
54 | $(OBJPRODN) debug.o: utils.h regex.h regex2.h | |
55 | regcomp.o: cclass.h cname.h regcomp.ih | |
56 | regexec.o: engine.c engine.ih | |
57 | regerror.o: regerror.ih | |
58 | debug.o: debug.ih | |
59 | main.o: main.ih | |
60 | ||
61 | # tester | |
62 | re: $(OBJS) | |
63 | $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@ | |
64 | ||
65 | # regression test | |
66 | r: re tests | |
67 | ./re <tests | |
68 | ./re -el <tests | |
69 | ./re -er <tests | |
70 | ||
71 | # 57 variants, and other stuff, for development use -- not useful to you | |
72 | ra: ./re tests | |
73 | -./re <tests | |
74 | -./re -el <tests | |
75 | -./re -er <tests | |
76 | ||
77 | rx: ./re tests | |
78 | ./re -x <tests | |
79 | ./re -x -el <tests | |
80 | ./re -x -er <tests | |
81 | ||
82 | t: ./re tests | |
83 | -time ./re <tests | |
84 | -time ./re -cs <tests | |
85 | -time ./re -el <tests | |
86 | -time ./re -cs -el <tests | |
87 | ||
88 | l: $(LINTC) | |
89 | lint $(LINTFLAGS) -h $(LINTC) 2>&1 | egrep -v '$(JUNKLINT)' | tee lint | |
90 | ||
91 | fullprint: | |
92 | ti README WHATSNEW notes todo | list | |
93 | ti *.h | list | |
94 | list *.c | |
95 | list regex.3 regex.7 | |
96 | ||
97 | print: | |
98 | ti README WHATSNEW notes todo | list | |
99 | ti *.h | list | |
100 | list reg*.c engine.c | |
101 | ||
102 | ||
103 | mf.tmp: Makefile | |
104 | sed '/^REGEXH=/s/=.*/=regex.h/' Makefile | sed '/#DEL$$/d' >$@ | |
105 | ||
106 | DTRH=cclass.h cname.h regex2.h utils.h | |
107 | PRE=COPYRIGHT README WHATSNEW | |
108 | POST=mkh regex.3 regex.7 tests $(DTRH) $(ALLSRC) fake/*.[ch] | |
109 | FILES=$(PRE) Makefile $(POST) | |
110 | DTR=$(PRE) Makefile=mf.tmp $(POST) | |
111 | dtr: $(FILES) mf.tmp | |
112 | makedtr $(DTR) >$@ | |
113 | rm mf.tmp | |
114 | ||
115 | cio: $(FILES) | |
116 | cio $(FILES) | |
117 | ||
118 | rdf: $(FILES) | |
119 | rcsdiff -c $(FILES) 2>&1 | p | |
120 | ||
121 | # various forms of cleanup | |
122 | tidy: | |
123 | rm -f junk* core core.* *.core dtr *.tmp lint | |
124 | ||
125 | clean: tidy | |
126 | rm -f *.o *.s *.ih re libregex.a | |
127 | ||
128 | # don't do this one unless you know what you're doing | |
129 | spotless: clean | |
130 | rm -f mkh regex.h |