2 # splint Makefile for GNU Make on OS/2 systems
\r
4 # Derived from original Unix makefile by Herbert
\r
9 include ../os2/make.vars
\r
14 .SUFFIXES = .c .h $O $(EXEEXT) .l .check
\r
17 ### We use the no-lines option to prevent confusion with splint flag settings.
\r
18 ### Should fix splint to avoid this...
\r
19 YFLAGS = -v -t -d --debug --no-lines
\r
22 BISON_SRC = cgrammar.y llgrammar.y mtgrammar.y signature.y
\r
25 ## We only build Splint
\r
26 bin_PROGRAMS = splint$(EXEEXT)
\r
28 ## This is a fake program, so we can easily substitute in the extra LCL objects
\r
29 EXTRA_PROGRAMS = lcl
\r
31 AM_CPPFLAGS = -IHeaders
\r
35 SETSRC = globSet.c intSet.c typeIdSet.c guardSet.c usymIdSet.c sRefSet.c
\r
37 LISTSRC = clauseStack.c filelocStack.c \
\r
38 cstringList.c cstringSList.c sRefSetList.c ctypeList.c \
\r
39 enumNameList.c enumNameSList.c exprNodeList.c exprNodeSList.c \
\r
40 uentryList.c fileIdList.c filelocList.c qualList.c sRefList.c \
\r
41 flagMarkerList.c idDeclList.c flagSpec.c
\r
43 CPPSRC = cppmain.c cpplib.c cppexp.c cpphash.c cpperror.c
\r
45 CSRC = uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \
\r
46 stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \
\r
47 globalsClause.c modifiesClause.c warnClause.c functionClause.c \
\r
48 functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \
\r
49 metaStateExpression.c metaStateSpecifier.c functionConstraint.c \
\r
52 SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c
\r
53 CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c
\r
55 GLOBSRC = context.c globals.c flags.c general.c osd.c reader.c mtreader.c
\r
57 GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtgrammar.c llgrammar.c signature.c
\r
59 OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \
\r
60 constraintExprData.c constraintExpr.c constraint.c \
\r
61 constraintList.c constraintResolve.c \
\r
62 constraintOutput.c loopHeuristics.c
\r
64 GENERALSRC = exprData.c cstring.c fileloc.c message.c inputStream.c \
\r
65 fileTable.c cstringTable.c valueTable.c stateValue.c \
\r
66 llerror.c messageLog.c flagMarker.c aliasTable.c ynm.c \
\r
67 sRefTable.c genericTable.c ekind.c usymtab.c multiVal.c \
\r
68 lltok.c sRef.c lcllib.c randomNumbers.c fileLib.c
\r
70 METASTATESRC = stateInfo.c stateCombinationTable.c metaStateTable.c \
\r
71 metaStateInfo.c annotationTable.c annotationInfo.c mttok.c \
\r
72 mtDeclarationNode.c mtDeclarationPieces.c mtDeclarationPiece.c \
\r
73 mtContextNode.c mtValuesNode.c mtDefaultsNode.c \
\r
74 mtAnnotationsNode.c mtMergeNode.c mtAnnotationList.c \
\r
75 mtAnnotationDecl.c mtTransferClauseList.c mtTransferClause.c \
\r
76 mtTransferAction.c mtLoseReferenceList.c mtLoseReference.c \
\r
77 mtDefaultsDeclList.c mtDefaultsDecl.c mtMergeItem.c \
\r
78 mtMergeClause.c mtMergeClauseList.c
\r
80 ## These are only used if LCL is enabled
\r
82 LCLONLYSRC = usymtab_interface.c abstract.c ltoken.c lclscanline.c \
\r
83 lclsyntable.c lcltokentable.c sort.c symtable.c lclinit.c \
\r
84 shift.c lclscan.c lsymbol.c mapping.c
\r
86 LSLSRC = tokentable.c scan.c scanline.c lslparse.c \
\r
87 lh.c checking.c lclctypes.c imports.c lslinit.c syntable.c
\r
89 LCLSETSRC = lsymbolSet.c sigNodeSet.c lslOpSet.c sortSet.c
\r
91 LCLLISTSRC = initDeclNodeList.c sortList.c declaratorInvNodeList.c \
\r
92 interfaceNodeList.c sortSetList.c declaratorNodeList.c \
\r
93 letDeclNodeList.c stDeclNodeList.c storeRefNodeList.c \
\r
94 lslOpList.c lsymbolList.c termNodeList.c ltokenList.c \
\r
95 traitRefNodeList.c pairNodeList.c typeNameNodeList.c \
\r
96 fcnNodeList.c paramNodeList.c programNodeList.c \
\r
97 varDeclarationNodeList.c varNodeList.c quantifierNodeList.c \
\r
98 replaceNodeList.c importNodeList.c
\r
100 IFILES = ctbase.i cttable.i exprDataQuite.i
\r
103 #Files that are used on systems that do not have bison or yacc
\r
104 DER_BISON_FILES = signature.c.der cgrammar.c.der mtgrammar.c.der \
\r
106 DER_FILES = $(DER_BISON_FILES)
\r
109 COMMONSRC = $(OVERFLOWCHSRC) $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \
\r
110 $(GLOBSRC) $(IFACESRC) $(LISTSRC) $(SETSRC) $(METASTATESRC)
\r
112 ALLSRC = $(GRAMSRC) $(COMMONSRC) $(SPLINTSRC) $(DER_FILES)
\r
114 #files to run Splint on
\r
115 LINTSRC = $(COMMONSRC) $(SPLINTSRC) cscanner.c cgrammar.c
\r
117 LCLSRC = $(LCLSETSRC) $(LCLLISTSRC) $(LSLSRC) $(CMNSRC) $(LCLONLYSRC)
\r
118 lcl_SOURCES = $(LCLSRC)
\r
119 CONFIG_HEADER = $(top_builddir)/config.h
\r
121 splint_SOURCES = $(ALLSRC)
\r
123 lcl_OBJECTS = lsymbolSet$O sigNodeSet$O \
\r
124 lslOpSet$O sortSet$O initDeclNodeList$O \
\r
125 sortList$O declaratorInvNodeList$O \
\r
126 interfaceNodeList$O sortSetList$O \
\r
127 declaratorNodeList$O letDeclNodeList$O \
\r
128 stDeclNodeList$O storeRefNodeList$O \
\r
129 lslOpList$O lsymbolList$O \
\r
130 termNodeList$O ltokenList$O \
\r
131 traitRefNodeList$O pairNodeList$O \
\r
132 typeNameNodeList$O fcnNodeList$O \
\r
133 paramNodeList$O programNodeList$O \
\r
134 varDeclarationNodeList$O varNodeList$O \
\r
135 quantifierNodeList$O replaceNodeList$O \
\r
136 importNodeList$O tokentable$O scan$O \
\r
137 scanline$O lslparse$O lh$O \
\r
138 checking$O lclctypes$O imports$O \
\r
139 lslinit$O syntable$O \
\r
140 usymtab_interface$O abstract$O ltoken$O \
\r
141 lclscanline$O lclsyntable$O \
\r
142 lcltokentable$O sort$O symtable$O \
\r
143 lclinit$O shift$O lclscan$O \
\r
144 lsymbol$O mapping$O
\r
146 splint_OBJECTS = cgrammar$O cscanner$O \
\r
147 mtscanner$O mtgrammar$O llgrammar$O \
\r
148 signature$O cppmain$O cpplib$O \
\r
149 cppexp$O cpphash$O cpperror$O \
\r
150 context$O uentry$O cprim$O \
\r
151 macrocache$O qual$O qtype$O \
\r
152 stateClause$O stateClauseList$O ctype$O \
\r
153 cvar$O clabstract$O idDecl$O \
\r
154 clause$O globalsClause$O \
\r
155 modifiesClause$O warnClause$O \
\r
156 functionClause$O functionClauseList$O \
\r
157 metaStateConstraint$O metaStateConstraintList$O \
\r
158 metaStateExpression$O metaStateSpecifier$O \
\r
159 functionConstraint$O pointers$O \
\r
160 structNames$O transferChecks$O \
\r
161 varKinds$O nameChecks$O exprData$O \
\r
162 cstring$O fileloc$O message$O \
\r
163 inputStream$O fileTable$O \
\r
164 cstringTable$O valueTable$O \
\r
165 stateValue$O llerror$O messageLog$O \
\r
166 flagMarker$O aliasTable$O ynm$O \
\r
167 sRefTable$O genericTable$O ekind$O \
\r
168 usymtab$O multiVal$O lltok$O \
\r
169 sRef$O lcllib$O randomNumbers$O \
\r
170 fileLib$O globals$O \
\r
171 flags$O general$O osd$O \
\r
172 reader$O mtreader$O clauseStack$O \
\r
173 filelocStack$O cstringList$O \
\r
174 cstringSList$O sRefSetList$O \
\r
175 ctypeList$O enumNameList$O \
\r
176 enumNameSList$O exprNodeList$O \
\r
177 exprNodeSList$O uentryList$O \
\r
178 fileIdList$O filelocList$O qualList$O \
\r
179 sRefList$O flagMarkerList$O \
\r
180 idDeclList$O flagSpec$O globSet$O \
\r
181 intSet$O typeIdSet$O guardSet$O \
\r
182 usymIdSet$O sRefSet$O stateInfo$O \
\r
183 stateCombinationTable$O metaStateTable$O \
\r
184 metaStateInfo$O annotationTable$O \
\r
185 annotationInfo$O mttok$O \
\r
186 mtDeclarationNode$O mtDeclarationPieces$O \
\r
187 mtDeclarationPiece$O mtContextNode$O \
\r
188 mtValuesNode$O mtDefaultsNode$O \
\r
189 mtAnnotationsNode$O mtMergeNode$O \
\r
190 mtAnnotationList$O mtAnnotationDecl$O \
\r
191 mtTransferClauseList$O mtTransferClause$O \
\r
192 mtTransferAction$O mtLoseReferenceList$O \
\r
193 mtLoseReference$O mtDefaultsDeclList$O \
\r
194 mtDefaultsDecl$O mtMergeItem$O \
\r
195 mtMergeClause$O mtMergeClauseList$O \
\r
196 exprNode$O exprChecks$O llmain$O \
\r
197 help$O rcfiles$O constraintGeneration$O \
\r
198 constraintTerm$O constraintExprData$O \
\r
199 constraintExpr$O constraint$O \
\r
200 constraintList$O constraintResolve$O \
\r
201 constraintOutput$O loopHeuristics$O snprintf$O
\r
204 .PHONY: lcl$(EXEEXT)
\r
206 DEFS = -DHAVE_CONFIG_H
\r
207 DEFAULT_INCLUDES = -I. -I..
\r
208 LDADD = $(lcl_OBJECTS)
\r
210 ## Sources that need to be built
\r
211 BUILT_SOURCES = Headers/signature_gen.h Headers/cgrammar_tokens.h \
\r
212 Headers/llgrammar_gen.h Headers/llgrammar_gen2.h \
\r
213 Headers/mtgrammar_tokens.h signature.c cgrammar.c \
\r
214 llgrammar.c mtgrammar.c Headers/flag_codes.gen \
\r
217 all: $(BUILT_SOURCES) splint$(EXEEXT) $(binDir)/splint$(EXEEXT)
\r
219 Headers/signature_gen.h signature.c: signature.c.der signature.y
\r
221 $(CP) signature.c.der signature.c
\r
223 echo "Making signature.c"
\r
224 $(BISON) $(YFLAGS) -p lsl signature.y
\r
225 $(CAT) bison.head signature.tab.c bison.reset >signature.c
\r
226 $(CP) signature.c signature.c.der
\r
227 -$(MV) Headers/signature_gen.h Headers/signature_gen.bak
\r
228 $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h
\r
229 $(RM) signature.tab.c signature.tab.h
\r
232 ## 11/29/001 drl added copy so that the file cgrammar.c.der is created
\r
234 Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y
\r
236 $(CP) cgrammar.c.der cgrammar.c
\r
238 @echo "Making cgrammar.c"
\r
239 @echo "Expect 141 shift/reduce conflicts and 111 reduce/reduce conflicts."
\r
240 @echo "(see cgrammar.y for explanation)"
\r
241 $(BISON) $(YFLAGS) cgrammar.y
\r
242 $(CAT) bison.head cgrammar.tab.c bison.reset | $(SED) \
\r
243 -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/' \
\r
245 $(CP) cgrammar.c cgrammar.c.der
\r
246 -$(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak
\r
247 $(CAT) bison.head cgrammar.tab.h bison.reset | $(SED) \
\r
248 -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/g' \
\r
249 >Headers/cgrammar_tokens.h
\r
250 $(RM) cgrammar.tab.c cgrammar.tab.h
\r
253 ## 10/16/001 drl added copy so that the file mtgrammar.c.der is created
\r
254 ## also removed the dependency for this file on mtgrammary.c
\r
256 Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y
\r
258 $(CP) mtgrammar.c.der mtgrammar.c
\r
260 @echo "Making mtgrammar.c"
\r
261 @echo "Expect 11 shift/reduce conflicts."
\r
262 $(BISON) $(YFLAGS) -p mt mtgrammar.y
\r
263 $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c
\r
264 $(CP) mtgrammar.c mtgrammar.c.der
\r
265 -$(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak
\r
266 $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h
\r
267 $(RM) mtgrammar.tab.c mtgrammar.tab.h
\r
270 Headers/llgrammar_gen.h Headers/llgrammar_gen2.h llgrammar.c: llgrammar.c.der llgrammar.y
\r
272 $(CP) llgrammar.c.der llgrammar.c
\r
274 @echo "Making llgrammar.c"
\r
275 @echo "Expect 2 shift/reduce conflicts"
\r
276 $(BISON) $(YFLAGS) -p yl llgrammar.y
\r
277 $(CAT) bison.head llgrammar.tab.c bison.reset >llgrammar.c
\r
278 $(CP) llgrammar.c llgrammar.c.der
\r
279 -$(MV) Headers/llgrammar_gen2.h Headers/llgrammar_gen2.bak
\r
280 -$(MV) Headers/llgrammar_gen.h Headers/llgrammar_gen.bak
\r
281 $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen2.h
\r
282 $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen.h
\r
283 $(RM) llgrammar.tab.c llgrammar.tab.h
\r
286 cscanner.c: cscanner.l
\r
287 $(FLEX) $(LFLAGS) cscanner.l
\r
288 $(CAT) flex.head lexyy.c flex.reset | $(SED) \
\r
289 -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/g' \
\r
292 Headers/flag_codes.gen: flags.def
\r
293 grep "FLG_" flags.def > Headers/flag_codes.gen
\r
295 $(binDir)/splint$(EXEEXT): splint$(EXEEXT)
\r
296 -$(RM) -f $(binDir)/splint$(EXEEXT)
\r
297 $(CP) splint$(EXEEXT) $(binDir)/splint$(EXEEXT)
\r
300 rm -f cgrammar.c llgrammar.c mtgrammar.c signature.c cscanner.c
\r
304 -rm -f $(splint_OBJECTS) core *.core *~
\r
307 CLEANFILES = splint$(EXEEXT) $(binDir)/splint$(EXEEXT)
\r
310 $(CC) $(CFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(CPPFLAGS) -c $<
\r
312 splint$(EXEEXT) : $(splint_OBJECTS) $(lcl_OBJECTS)
\r
313 $(CC) $(OFLAG)$@ $^ $(LDFLAGS)
\r
316 @echo "$(splint_OBJECTS)"
\r