Pristine Ack-5.5
[Ack-5.5.git] / modules / src / em_opt / proto.make
1 # $Id: proto.make,v 1.6 1994/06/24 11:14:41 ceriel Exp $
2
3 #PARAMS         do not remove this line!
4
5 SRC_DIR =       $(SRC_HOME)/modules/src/em_opt
6 MOD_DIR =       $(TARGET_HOME)/modules
7
8 # set HOWMUCH to head -20 to limit number of patterns used
9 #HOWMUCH =      head -20
10 HOWMUCH =       cat
11
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
18
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
22
23 CFLAGS =        $(PREFLAGS) $(COPTIONS)
24 LINTFLAGS =     $(PREFLAGS) -DNORCSID
25 LDFLAGS =       $(LDOPTIONS)
26 UCFLAGS =       $(UPREFLAGS) $(UCOPTIONS)
27 ULDFLAGS =      $(ULDOPTIONS)
28 LLOPT =
29 CMD =           '$(CC) -c $(CFLAGS)'
30
31 LIBOPT =        libemopt.$(LIBSUF)
32 LIBCEOPT =      libCEopt.$(LIBSUF)
33
34 .SUFFIXES:      .d .r
35
36 .r.d:           ; CMD=$(CMD); export CMD; awk -f $(SRC_DIR)/makefuns.awk prototypes=/dev/null $*.r | sh -x
37                 touch $@
38
39 .SUFFIXES: .$(SUF)
40 .c.$(SUF):
41         $(CC) -c $(CFLAGS) $*.c
42
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
46
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)
50
51 NOFILES =       nopt.$(SUF) dfa.$(SUF) trans.$(SUF) aux.$(SUF) mkstrct.$(SUF)
52
53 POFILES =       parser.$(USUF) syntax.$(USUF) outputdfa.$(USUF) outcalls.$(USUF)\
54                 findworst.$(USUF) initlex.$(USUF) Lpars.$(USUF)
55
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
59
60 all:            em_nopt $(LIBOPT) $(LIBCEOPT) prototypes
61
62 install:        all
63                 -mkdir $(MOD_DIR)/lib
64                 -mkdir $(MOD_DIR)/h
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) ; \
74                 fi
75
76 cmp:            all
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
81
82
83 pr:
84                 @pr $(SRCS)
85
86 opr:
87                 make pr | opr
88
89 lint:           lintparser lintnopt
90
91 clean:
92                 rm -f O_*.$(SUF)
93                 rm -f O_*.c
94                 rm -f $(NOFILES) main.$(SUF) $(POFILES) prototypes
95                 rm -f $(GENFILES) parser em_nopt $(LIBOPT) $(LIBCEOPT)
96
97 # How to build stand alone version of the optimizer
98
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)
107
108 em_nopt:        incalls.r main.$(SUF) $(NOFILES)
109                 $(CC) $(LDFLAGS) -o em_nopt main.$(SUF) $(NOFILES) $(NOPTLIB)
110
111 OLINT =         $(SRC_DIR)/main.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/nopt.c $(SRC_DIR)/aux.c dfa.c trans.c
112
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)
119
120 lintnopt:       incalls.r $(OLINT)
121                 $(LINT) $(LINTFLAGS) $(OLINT) $(OLINTLIB)
122
123 # How to build the library version of the optimizer
124
125 $(LIBOPT):      $(NOFILES) pseudo.d incalls.d
126                 rm -f $(LIBOPT)
127                 $(AR) r $(LIBOPT) O_*.$(SUF) $(NOFILES)
128                 $(RANLIB) $(LIBOPT)
129
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)
137
138 prototypes:     pseudo.r incalls.r
139                 cp $(SRC_DIR)/em_codeO.h prototypes
140                 echo >> prototypes
141                 awk -f $(SRC_DIR)/makefuns.awk pseudo.r incalls.r > /dev/null
142
143 incalls.r:      $(SRC_DIR)/patterns parser
144                 -$(UTIL_HOME)/lib.bin/cpp $(SRC_DIR)/patterns | $(HOWMUCH) >/tmp/patts
145                 parser </tmp/patts
146                 -rm /tmp/patts
147
148 # How to build the lint library for the optimizer
149
150 LLINT =         $(SRC_DIR)/nopt.c $(SRC_DIR)/mkstrct.c $(SRC_DIR)/aux.c dfa.c trans.c
151
152 lintlib:        incalls.r $(LLINT)
153                 $(MK_LINT_LIB) emopt $(MOD_DIR)/lib $(LLINT)
154
155 # How to build program to parse patterns table and build c files.
156
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)
161
162 parser:         parserdummy $(POFILES) $(PARSERLIB)
163                 $(UCC) -o parser $(ULDFLAGS) $(POFILES) $(PARSERLIB)
164
165 syntax.c:       $(SRC_DIR)/syntax.l
166                 flex -ts $(SRC_DIR)/syntax.l > syntax.c
167
168 parserdummy:    $(SRC_DIR)/parser.g
169                 LLgen $(LLOPT) $(SRC_DIR)/parser.g
170                 touch parserdummy
171
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
174
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)
178
179 LINTFLAGS =     $(LINTOPTIONS)
180
181 lintparser:     parserdummy $(PLINT)
182                 $(LINT) $(LINTFLAGS) $(PLINT) $(PLINTLIB)
183
184 # Dependancies
185
186 main.$(SUF):    $(SRC_DIR)/main.c
187                 $(CC) -c $(CFLAGS) $(SRC_DIR)/main.c
188 main.$(SUF):    $(SRC_DIR)/nopt.h
189
190 nopt.$(SUF):    $(SRC_DIR)/nopt.c
191                 $(CC) -c $(CFLAGS) $(SRC_DIR)/nopt.c
192 nopt.$(SUF):    $(SRC_DIR)/nopt.h
193
194 mkstrct.$(SUF): $(SRC_DIR)/mkstrct.c
195                 $(CC) -c $(CFLAGS) $(SRC_DIR)/mkstrct.c
196 mkstrct.$(SUF): $(SRC_DIR)/nopt.h
197
198 aux.$(SUF):     $(SRC_DIR)/aux.c
199                 $(CC) -c $(CFLAGS) $(SRC_DIR)/aux.c
200 aux.$(SUF):     $(SRC_DIR)/nopt.h
201
202 dfa.$(SUF):     dfa.c
203                 $(CC) -c $(CFLAGS) dfa.c
204 dfa.$(SUF):     $(SRC_DIR)/nopt.h
205
206 trans.$(SUF):   trans.c
207                 $(CC) -c $(CFLAGS) trans.c
208 trans.$(SUF):   $(SRC_DIR)/nopt.h
209
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
214
215 parser.$(USUF): parser.c
216                 $(UCC) -c $(UCFLAGS) parser.c
217 parser.$(USUF): Lpars.h $(SRC_DIR)/parser.h
218
219 Lpars.$(USUF):  Lpars.c
220                 $(UCC) -c $(UCFLAGS) Lpars.c
221 Lpars.$(USUF):  Lpars.h
222
223 syntax.$(USUF): syntax.c
224                 $(UCC) -c $(UCFLAGS) syntax.c
225 sybtax.$(USUF): $(SRC_DIR)/parser.h Lpars.h
226
227 outputdfa.$(USUF):      $(SRC_DIR)/outputdfa.c
228                 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outputdfa.c
229 outputdfa.$(USUF):      $(SRC_DIR)/parser.h Lpars.h
230
231 outcalls.$(USUF):       $(SRC_DIR)/outcalls.c
232                 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/outcalls.c
233 outcalls.$(USUF):       $(SRC_DIR)/parser.h
234
235 findworst.$(USUF):      $(SRC_DIR)/findworst.c
236                 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/findworst.c
237 findworst.$(USUF):      $(SRC_DIR)/parser.h
238
239 initlex.$(USUF):        $(SRC_DIR)/initlex.c
240                 $(UCC) -c $(UCFLAGS) $(SRC_DIR)/initlex.c
241 initlex.$(USUF):        $(SRC_DIR)/parser.h