1 # $Id: proto.make,v 1.6 1994/06/24 11:14:41 ceriel Exp $
3 #PARAMS do not remove this line!
5 SRC_DIR = $(SRC_HOME)/modules/src/em_opt
6 MOD_DIR = $(TARGET_HOME)/modules
8 # set HOWMUCH to head -20 to limit number of patterns used
12 INCLUDES = -I$(TARGET_HOME)/h -I$(MOD_DIR)/h \
13 -I$(MOD_DIR)/pkg -I$(SRC_DIR) -I.
14 UINCLUDES = -I$(UTIL_HOME)/h -I$(UTIL_HOME)/modules/h \
15 -I$(UTIL_HOME)/modules/pkg -I$(SRC_DIR) -I.
16 PREFLAGS = $(INCLUDES) -DPRIVATE=static# -DDEBUG
17 UPREFLAGS = $(UINCLUDES) -DPRIVATE=static# -DDEBUG
19 # Enable the next line to produce a version that output's the line number
20 # from the patterns file each time an optimization is performed.
21 #PREFLAGS = $(PREFLAGS) -DSTATS
23 CFLAGS = $(PREFLAGS) $(COPTIONS)
24 LINTFLAGS = $(PREFLAGS) -DNORCSID
25 LDFLAGS = $(LDOPTIONS)
26 UCFLAGS = $(UPREFLAGS) $(UCOPTIONS)
27 ULDFLAGS = $(ULDOPTIONS)
29 CMD = '$(CC) -c $(CFLAGS)'
31 LIBOPT = libemopt.$(LIBSUF)
32 LIBCEOPT = libCEopt.$(LIBSUF)
36 .r.d: ; CMD=$(CMD); export CMD; awk -f $(SRC_DIR)/makefuns.awk prototypes=/dev/null $*.r | sh -x
41 $(CC) -c $(CFLAGS) $*.c
43 CSRC = $(SRC_DIR)/main.c $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c \
44 $(SRC_DIR)/aux.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
45 $(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c
47 SRCS = $(SRC_DIR)/proto.make $(SRC_DIR)/nopt.h $(SRC_DIR)/parser.h \
48 $(SRC_DIR)/parser.g $(SRC_DIR)/syntax.l $(SRC_DIR)/pseudo.r\
49 $(SRC_DIR)/patterns $(CSRC)
51 NOFILES = nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
53 POFILES = parser.$(USUF) syntax.$(USUF) outputdfa.$(USUF) outcalls.$(USUF)\
54 findworst.$(USUF) initlex.$(USUF) Lpars.$(USUF)
56 GENFILES = Lpars.h Lpars.c parserdummy parser.c syntax.c \
57 dfa.c dfa.c.new trans.c trans.c.new\
58 incalls.d incalls.r incalls.r.new pseudo.d pseudo.r
60 all: em_nopt $(LIBOPT) $(LIBCEOPT) prototypes
65 cp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
66 $(RANLIB) $(MOD_DIR)/lib/$(LIBOPT)
67 cp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
68 $(RANLIB) $(MOD_DIR)/lib/$(LIBCEOPT)
69 cp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
70 cp prototypes $(MOD_DIR)/h/em_codeO.h
71 if [ $(DO_MACHINE_INDEP) = y ] ; \
72 then mk_manpage $(SRC_DIR)/em_opt.3 $(TARGET_HOME) ; \
73 mk_manpage $(SRC_DIR)/em_nopt.6 $(TARGET_HOME) ; \
77 -cmp $(LIBOPT) $(MOD_DIR)/lib/$(LIBOPT)
78 -cmp $(LIBCEOPT) $(MOD_DIR)/lib/$(LIBCEOPT)
79 -cmp em_nopt $(TARGET_HOME)/lib.bin/em_nopt
80 -cmp prototypes $(MOD_DIR)/h/em_codeO.h
89 lint: lintparser lintnopt
94 rm -f $(NOFILES) main.$(SUF) $(POFILES) prototypes
95 rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
97 # How to build stand alone version of the optimizer
99 NOPTLIB = $(MOD_DIR)/lib/libread_emk.$(LIBSUF)\
100 $(MOD_DIR)/lib/libemk.$(LIBSUF)\
101 $(MOD_DIR)/lib/liballoc.$(LIBSUF)\
102 $(MOD_DIR)/lib/malloc.$(SUF)\
103 $(MOD_DIR)/lib/libprint.$(LIBSUF)\
104 $(MOD_DIR)/lib/libstring.$(LIBSUF)\
105 $(MOD_DIR)/lib/libsystem.$(LIBSUF)\
106 $(TARGET_HOME)/lib.bin/em_data.$(LIBSUF)
108 em_nopt: incalls.r main.$(SUF) $(NOFILES)
109 $(CC) $(LDFLAGS) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
111 OLINT = $(SRC_DIR)/main.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/nopt.c $(SRC_DIR)/aux.c dfa.c trans.c
113 OLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)read_emkV.$(LINTSUF)\
114 $(UTIL_HOME)/modules/lib/$(LINTPREF)emk.$(LINTSUF)\
115 $(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)\
116 $(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
117 $(UTIL_HOME)/modules/lib/$(LINTPREF)print.$(LINTSUF)\
118 $(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)
120 lintnopt: incalls.r $(OLINT)
121 $(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
123 # How to build the library version of the optimizer
125 $(LIBOPT): $(NOFILES) pseudo.d incalls.d
127 $(AR) r $(LIBOPT) O_*.$(SUF) $(NOFILES)
130 $(LIBCEOPT): incalls.r
131 rm -f O_*.$(SUF) $(NOFILES) pseudo.d incalls.d
132 -mv $(LIBOPT) $(LIBOPT).saved
133 make PREFLAGS='$(INCLUDES) -DPRIVATE=static -DCODE_EXPANDER' $(LIBOPT)
134 mv $(LIBOPT) $(LIBCEOPT)
135 -mv $(LIBOPT).saved $(LIBOPT)
136 rm -f O_*.$(SUF) $(NOFILES)
138 prototypes: pseudo.r incalls.r
139 cp $(SRC_DIR)/em_codeO.h prototypes
141 awk -f $(SRC_DIR)/makefuns.awk pseudo.r incalls.r > /dev/null
143 incalls.r: $(SRC_DIR)/patterns parser
144 -$(UTIL_HOME)/lib.bin/cpp $(SRC_DIR)/patterns | $(HOWMUCH) >/tmp/patts
148 # How to build the lint library for the optimizer
150 LLINT = $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/aux.c dfa.c trans.c
152 lintlib: incalls.r $(LLINT)
153 $(MK_LINT_LIB) emopt $(MOD_DIR)/lib $(LLINT)
155 # How to build program to parse patterns table and build c files.
157 PARSERLIB = $(UTIL_HOME)/lib.bin/em_data.$(ULIBSUF)\
158 $(UTIL_HOME)/modules/lib/liballoc.$(ULIBSUF)\
159 $(UTIL_HOME)/modules/lib/libstring.$(ULIBSUF)\
160 $(UTIL_HOME)/modules/lib/libsystem.$(ULIBSUF)
162 parser: parserdummy $(POFILES) $(PARSERLIB)
163 $(UCC) -o parser $(ULDFLAGS) $(POFILES) $(PARSERLIB)
165 syntax.c: $(SRC_DIR)/syntax.l
166 flex -ts $(SRC_DIR)/syntax.l > syntax.c
168 parserdummy: $(SRC_DIR)/parser.g
169 LLgen $(LLOPT) $(SRC_DIR)/parser.g
172 PLINT = parser.c syntax.c $(SRC_DIR)/outputdfa.c $(SRC_DIR)/outcalls.c\
173 $(SRC_DIR)/findworst.c $(SRC_DIR)/initlex.c Lpars.c
175 PLINTLIB = $(UTIL_HOME)/modules/lib/$(LINTPREF)alloc.$(LINTSUF)\
176 $(UTIL_HOME)/modules/lib/$(LINTPREF)string.$(LINTSUF)\
177 $(UTIL_HOME)/modules/lib/$(LINTPREF)system.$(LINTSUF)
179 LINTFLAGS = $(LINTOPTIONS)
181 lintparser: parserdummy $(PLINT)
182 $(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
186 main.$(SUF): $(SRC_DIR)/main.c
187 $(CC) -c $(CFLAGS) $(SRC_DIR)/main.c
188 main.$(SUF): $(SRC_DIR)/nopt.h
190 nopt.$(SUF): $(SRC_DIR)/nopt.c
191 $(CC) -c $(CFLAGS) $(SRC_DIR)/nopt.c
192 nopt.$(SUF): $(SRC_DIR)/nopt.h
194 mkstrct.$(SUF): $(SRC_DIR)/mkstrct.c
195 $(CC) -c $(CFLAGS) $(SRC_DIR)/mkstrct.c
196 mkstrct.$(SUF): $(SRC_DIR)/nopt.h
198 aux.$(SUF): $(SRC_DIR)/aux.c
199 $(CC) -c $(CFLAGS) $(SRC_DIR)/aux.c
200 aux.$(SUF): $(SRC_DIR)/nopt.h
203 $(CC) -c $(CFLAGS) dfa.c
204 dfa.$(SUF): $(SRC_DIR)/nopt.h
206 trans.$(SUF): trans.c
207 $(CC) -c $(CFLAGS) trans.c
208 trans.$(SUF): $(SRC_DIR)/nopt.h
210 incalls.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
211 pseudo.d: $(SRC_DIR)/nopt.h $(SRC_DIR)/makefuns.awk
212 pseudo.r: $(SRC_DIR)/pseudo.r
213 cp $(SRC_DIR)/pseudo.r pseudo.r
215 parser.$(USUF): parser.c
216 $(UCC) -c $(UCFLAGS) parser.c
217 parser.$(USUF): Lpars.h $(SRC_DIR)/parser.h
219 Lpars.$(USUF): Lpars.c
220 $(UCC) -c $(UCFLAGS) Lpars.c
221 Lpars.$(USUF): Lpars.h
223 syntax.$(USUF): syntax.c
224 $(UCC) -c $(UCFLAGS) syntax.c
225 sybtax.$(USUF): $(SRC_DIR)/parser.h Lpars.h
227 outputdfa.$(USUF): $(SRC_DIR)/outputdfa.c
228 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outputdfa.c
229 outputdfa.$(USUF): $(SRC_DIR)/parser.h Lpars.h
231 outcalls.$(USUF): $(SRC_DIR)/outcalls.c
232 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outcalls.c
233 outcalls.$(USUF): $(SRC_DIR)/parser.h
235 findworst.$(USUF): $(SRC_DIR)/findworst.c
236 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/findworst.c
237 findworst.$(USUF): $(SRC_DIR)/parser.h
239 initlex.$(USUF): $(SRC_DIR)/initlex.c
240 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/initlex.c
241 initlex.$(USUF): $(SRC_DIR)/parser.h