]> andersk Git - splint.git/blame - src/Makefile.am
*** empty log message ***
[splint.git] / src / Makefile.am
CommitLineData
8fe44445 1## Note: starting comments with ## means they don't end up in Makefile
2
3AUTOMAKE_OPTIONS = 1.5 foreign
4
5SUFFIXES = .h .c .o .l .check
6
7# Check files before compiling; requires lclint!
8CHECK = 1
9
10# Some preferences
11YFLAGS = -v -t -d --debug
12
bbed3d50 13
14BISON_SRC = cgrammar.y llgrammar.y mtgrammar.y signature.y
15
8fe44445 16
17## We only build LCLint
18bin_PROGRAMS = lclint
19
20## This is a fake program, so we can easily substitute in the extra LCL objects
21EXTRA_PROGRAMS = lcl
22
23AM_CPPFLAGS = -IHeaders
24
25## The main sources
26
27SETSRC = globSet.c intSet.c typeIdSet.c guardSet.c usymIdSet.c sRefSet.c
28
29LISTSRC = clauseStack.c filelocStack.c \
30 cstringList.c cstringSList.c sRefSetList.c ctypeList.c \
31 enumNameList.c enumNameSList.c exprNodeList.c exprNodeSList.c \
32 uentryList.c fileIdList.c filelocList.c qualList.c sRefList.c \
33 flagMarkerList.c idDeclList.c flagSpec.c
34
35CPPSRC = cppmain.c cpplib.c cppexp.c cpphash.c cpperror.c
36
37CSRC = uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \
38 stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \
39 globalsClause.c modifiesClause.c warnClause.c functionClause.c \
40 functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \
41 metaStateExpression.c metaStateSpecifier.c functionConstraint.c
42
43LCLINTSRC = exprNode.c exprChecks.c llmain.c
44CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c
45
46GLOBSRC = context.c globals.c flags.c general.c osd.c reader.c
47
48GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtreader.c mtgrammar.c
49
50OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \
51 constraintExprData.c constraintExpr.c constraint.c \
52 constraintList.c constraintResolve.c \
53 constraintOutput.c loopHeuristics.c
54
55GENERALSRC = exprData.c cstring.c fileloc.c message.c inputStream.c \
56 fileTable.c cstringTable.c valueTable.c stateValue.c \
57 llerror.c messageLog.c flagMarker.c aliasTable.c ynm.c \
58 sRefTable.c genericTable.c ekind.c usymtab.c multiVal.c \
59 lltok.c sRef.c lcllib.c randomNumbers.c fileLib.c
60
61METASTATESRC = stateInfo.c stateCombinationTable.c metaStateTable.c \
62 metaStateInfo.c annotationTable.c annotationInfo.c mttok.c \
63 mtDeclarationNode.c mtDeclarationPieces.c mtDeclarationPiece.c \
64 mtContextNode.c mtValuesNode.c mtDefaultsNode.c \
65 mtAnnotationsNode.c mtMergeNode.c mtAnnotationList.c \
66 mtAnnotationDecl.c mtTransferClauseList.c mtTransferClause.c \
67 mtTransferAction.c mtLoseReferenceList.c mtLoseReference.c \
68 mtDefaultsDeclList.c mtDefaultsDecl.c mtMergeItem.c \
69 mtMergeClause.c mtMergeClauseList.c
70
71## These are only used if LCL is enabled
72
73LCLONLYSRC = usymtab_interface.c abstract.c ltoken.c lclscanline.c \
74 lclsyntable.c lcltokentable.c sort.c symtable.c lclinit.c \
75 shift.c lclscan.c lsymbol.c mapping.c
76
77LSLSRC = tokentable.c scan.c scanline.c lslparse.c \
78 lh.c checking.c lclctypes.c imports.c lslinit.c syntable.c
79
80LCLGRAMSRC = llgrammar.c signature.c
81
82LCLSETSRC = lsymbolSet.c sigNodeSet.c lslOpSet.c sortSet.c
83
84LCLLISTSRC = initDeclNodeList.c sortList.c declaratorInvNodeList.c \
85 interfaceNodeList.c sortSetList.c declaratorNodeList.c \
86 letDeclNodeList.c stDeclNodeList.c storeRefNodeList.c \
87 lslOpList.c lsymbolList.c termNodeList.c ltokenList.c \
88 traitRefNodeList.c pairNodeList.c typeNameNodeList.c \
89 fcnNodeList.c paramNodeList.c programNodeList.c \
90 varDeclarationNodeList.c varNodeList.c quantifierNodeList.c \
91 replaceNodeList.c importNodeList.c
92
bbed3d50 93
94HEADERSRC = Headers/abstBodyNode.h Headers/ltokenList.h \
95 Headers/abstract.h Headers/macrocache.h \
96 Headers/abstractNode.h Headers/mapping.h \
97 Headers/aliasChecks.h Headers/message.h \
98 Headers/aliasStack.h Headers/messageLog.h \
99 Headers/aliasTable.h Headers/metaStateConstraint.h \
100 Headers/annotationInfo.h Headers/metaStateConstraintList.h \
101 Headers/annotationTable.h Headers/metaStateExpression.h \
102 Headers/arrayQualNode.h Headers/metaStateInfo.h \
103 Headers/basic.h Headers/metaStateSpecifier.h \
104 Headers/bool.h Headers/metaStateTable.h \
105 Headers/boolStack.h Headers/misc.h \
106 Headers/cgrammar.h Headers/modifiesClause.h \
107 Headers/cgrammar_tokens.h Headers/modifyNode.h \
108 Headers/checking.h Headers/mtAnnotationDecl.h \
109 Headers/clabstract.h Headers/mtAnnotationList.h \
110 Headers/claimNode.h Headers/mtAnnotationsNode.h \
111 Headers/clause.h Headers/mtContextNode.h \
112 Headers/clauseStack.h Headers/mtDeclarationNode.h \
113 Headers/code.h Headers/mtDeclarationPiece.h \
114 Headers/constants.h Headers/mtDeclarationPieces.h \
115 Headers/constDeclarationNode.h Headers/mtDefaultsDecl.h \
116 Headers/constraintExprData.h Headers/mtDefaultsDeclList.h \
117 Headers/constraintExpr.h Headers/mtDefaultsNode.h \
118 Headers/constraint.h Headers/mtgrammar.h \
119 Headers/constraintList2.h Headers/mtgrammar.tab.h \
120 Headers/constraintList.h Headers/mtgrammar_tokens.h \
121 Headers/constraintOutput.h Headers/mtincludes.h \
122 Headers/constraintResolve.h Headers/mtLoseReference.h \
123 Headers/constraintTerm.h Headers/mtLoseReferenceList.h \
124 Headers/context.h Headers/mtMergeClause.h \
125 Headers/cpperror.h Headers/mtMergeClauseList.h \
126 Headers/cppexp.h Headers/mtMergeItem.h \
127 Headers/cpp.h Headers/mtMergeNode.h \
128 Headers/cpphash.h Headers/mtreader.h \
129 Headers/cpplib.h Headers/mtscanner.h \
130 Headers/cprim.h Headers/mttok.h \
131 Headers/cscanner.h Headers/mtTransferAction.h \
132 Headers/cstring.h Headers/mtTransferClause.h \
133 Headers/cstringList.h Headers/mtTransferClauseList.h \
134 Headers/cstringSList.h Headers/mtValuesNode.h \
135 Headers/cstringTable.h Headers/multiVal.h \
136 Headers/ctokens.h Headers/nameChecks.h \
137 Headers/ctypeList.h Headers/nameNode.h \
138 Headers/CTypesNode.h Headers/opFormNode.h \
139 Headers/cvar.h Headers/osd.h \
140 Headers/declaratorInvNode.h Headers/pairNode.h \
141 Headers/declaratorInvNodeList.h Headers/pairNodeList.h \
142 Headers/declaratorNode.h Headers/paramNode.h \
143 Headers/declaratorNodeList.h Headers/paramNodeList.h \
144 Headers/dmalloc.h Headers/portab.h \
145 Headers/ekind.h Headers/pp.h \
146 Headers/enumNameList.h Headers/privateNode.h \
147 Headers/enumNameSList.h Headers/programNode.h \
148 Headers/enumSpecNode.h Headers/programNodeList.h \
149 Headers/exportNode.h Headers/qtype.h \
150 Headers/exposedNode.h Headers/qual.h \
151 Headers/exprChecks.h Headers/qualList.h \
152 Headers/exprData.h Headers/quantifiedTermNode.h \
153 Headers/exprNode.h Headers/quantifierNode.h \
154 Headers/exprNodeList.h Headers/quantifierNodeList.h \
155 Headers/exprNodeSList.h Headers/randomNumbers.h \
156 Headers/fcnNode.h Headers/rangeTable.h \
157 Headers/fcnNodeList.h Headers/reader.h \
158 Headers/fileId.h Headers/refTable-branch.h \
159 Headers/fileIdList.h Headers/renamingNode.h \
160 Headers/fileLib.h Headers/replaceNode.h \
161 Headers/fileloc.h Headers/replaceNodeList.h \
162 Headers/filelocList.h Headers/scan.h \
163 Headers/filelocStack.h Headers/scanline.h \
164 Headers/fileTable.h Headers/sgrammar_tokens.h \
165 Headers/flag_codes.h Headers/sHerald.h \
166 Headers/flagMarker.h Headers/shift.h \
167 Headers/flagMarkerList.h Headers/signature2.h \
168 Headers/flags.h Headers/signature_gen.h \
169 Headers/flagSpec.h Headers/signature.h \
170 Headers/forwardTypes.h Headers/signNode.h \
171 Headers/functionClause.h Headers/sigNode.h \
172 Headers/functionClauseList.h Headers/sigNodeSet.h \
173 Headers/functionConstraint.h Headers/sort.h \
174 Headers/general.h Headers/sortList.h \
175 Headers/genericTable.h Headers/sortSet.h \
176 Headers/globalList.h Headers/sortSetList.h \
177 Headers/globalsClause.h Headers/source.h \
178 Headers/globals.h Headers/specialClauses.h \
179 Headers/globSet.h Headers/sRef.h \
180 Headers/gram.h Headers/sRefList.h \
181 Headers/guardSet.h Headers/sRefSet.h \
182 Headers/handle.h Headers/sRefSetList.h \
183 Headers/hashTable.h Headers/sRefSetStack.h \
184 Headers/idDecl.h Headers/sRefTable.h \
185 Headers/idDeclList.h Headers/stateClause.h \
186 Headers/importNode.h Headers/stateClauseList.h \
187 Headers/importNodeList.h Headers/stateCombinationTable.h \
188 Headers/imports.h Headers/stateInfo.h \
189 Headers/initDeclNode.h Headers/stateValue.h \
190 Headers/initDeclNodeList.h Headers/stDeclNode.h \
191 Headers/inputStream.h Headers/stDeclNodeList.h \
192 Headers/interfaceNode.h Headers/stmtNode.h \
193 Headers/interfaceNodeList.h Headers/storeRefNode.h \
194 Headers/intSet.h Headers/storeRefNodeList.h \
195 Headers/intTable.h Headers/strOrUnionNode.h \
196 Headers/iterNode.h Headers/structNames.h \
197 Headers/lcl_constants.h Headers/symtable.h \
198 Headers/lclctypes.h Headers/syntable.h \
199 Headers/lclForwardTypes.h Headers/system_constants.h \
200 Headers/lclinit.h Headers/taggedUnionNode.h \
201 Headers/lcllib.h Headers/termNode.h \
202 Headers/lclMisc.h Headers/termNodeList.h \
203 Headers/lclPredicateNode.h Headers/tmpname.h \
204 Headers/lclscan.h Headers/tokentable.h \
205 Headers/lclscanline.h Headers/traitRefNode.h \
206 Headers/lclsyntable.h Headers/traitRefNodeList.h \
207 Headers/lcltokentable.h Headers/transferChecks.h \
208 Headers/lclTypeSpecNode.h Headers/typeExpr.h \
209 Headers/lctype.h Headers/typeIdSet.h \
210 Headers/letDeclNode.h Headers/typeNameNode.h \
211 Headers/letDeclNodeList.h Headers/typeNameNodeList.h \
212 Headers/lh.h Headers/typeNamePack.h \
213 Headers/limwr.h Headers/typeNode.h \
214 Headers/llbasic.h Headers/uentry.h \
215 Headers/llerror.h Headers/uentryList.h \
216 Headers/llglobals.h Headers/usymId.h \
217 Headers/llgrammar2.h Headers/usymIdSet.h \
218 Headers/llgrammar_gen2.h Headers/usymtab-branch.h \
219 Headers/llgrammar_gen.h Headers/usymtab.h \
220 Headers/llgrammar.h Headers/usymtab_interface.h \
221 Headers/llmain.h Headers/valueMatrix.h \
222 Headers/lltok.h Headers/valueTable.h \
223 Headers/lslinit.h Headers/varDeclarationNode.h \
224 Headers/lslOp.h Headers/varDeclarationNodeList.h \
225 Headers/lslOpList.h Headers/varKinds.h \
226 Headers/lslOpSet.h Headers/varNode.h \
227 Headers/lslparse.h Headers/varNodeList.h \
228 Headers/lsymbol.h Headers/version.h \
229 Headers/lsymbolList.h Headers/warnClause.h \
230 Headers/lsymbolSet.h Headers/ynm.h \
231 Headers/ltoken.h Headers/lclintMacros.nf
232
233IFILES = ctbase.i cttable.i exprDataQuite.i
234
235## Non-built files we need to distribute
73b29173 236EXTRA_DIST = DATE $(BISON_SRC) bison.head bison.reset $(HEADERSRC) \
237 flags.def cscanner.l flex.head flex.reset $(IFILES) \
238 Headers/256_random_numbers.nf Headers/lclintMacros.nf Headers/reservedNames.nf
bbed3d50 239
240
241#Files that are used on systems that do not have bison or yacc
242DER_BISON_FILES = signature.c.der cgrammar.c.der mtgrammar.c.der \
243 llgrammar.c.der
244DER_FILES = $(DER_BISON_FILES)
245
246
8fe44445 247COMMONSRC = $(OVERFLOWCHSRC) $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \
248 $(GLOBSRC) $(IFACESRC) $(LISTSRC) $(SETSRC) $(METASTATESRC)
249
bbed3d50 250ALLSRC = $(GRAMSRC) $(COMMONSRC) $(LCLINTSRC) $(DER_FILES) $(HEADERSRC)
251
252#ALLSRC = $(COMMONSRC) $(LCLINTSRC) $(DER_FILES) $(HEADERSRC)
8fe44445 253
254LCLSRC = $(LCLSETSRC) $(LCLLISTSRC) $(LSLSRC) $(CMNSRC) $(LCLONLYSRC) \
255 $(LCLGRAMSRC)
256
257lcl_SOURCES = $(LCLSRC)
258
259lclint_SOURCES = $(ALLSRC)
260lclint_LDADD = $(LCLOBJ) @LEXLIB@
261
262# Ensure the LCL objects get built if needed
263lclint_DEPENDENCIES = $(LCLOBJ)
264
265# Keep it fake
266.PHONY: lcl$(EXEEXT)
267lcl$(EXEEXT):
268 @echo "This is a fake target"; \
269 echo "Use configure's --with-lcl option to enable lcl"
270
271## Sources that need to be built
272BUILT_SOURCES = Headers/signature_gen.h Headers/cgrammar_tokens.h \
273 Headers/llgrammar_gen.h Headers/llgrammar_gen2.h \
274 Headers/mtgrammar_tokens.h signature.c cgrammar.c \
bbed3d50 275 llgrammar.c mtgrammar.c Headers/flag_codes.gen \
276 $(DER_FILES)
8fe44445 277
278## Grammars
279
280Headers/signature_gen.h signature.c: signature.c.der signature.y
281 if test x$(BISON) = xno; then \
282 $(CP) signature.c.der signature.c; \
283 else \
284 $(BISON) $(YFLAGS) -p lsl signature.y; \
285 $(CAT) bison.head signature.tab.c bison.reset >signature.c; \
bbed3d50 286 $(CP) signature.c signature.c.der; \
914641fc 287 -$(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
8fe44445 288 $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h; \
289 $(RM) signature.tab.c signature.tab.h; \
290 fi
291
bbed3d50 292## 11/29/001 drl added copy so that the file cgrammar.c.der is created
293
8fe44445 294Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y
295 if test x$(BISON) = xno; then \
296 $(CP) cgrammar.c.der cgrammar.c; \
297 else \
298 echo '* Expect 141 shift/reduce conflicts and 111 reduce/reduce conflicts.'; \
299 echo '* (see cgrammar.y for explanation)'; \
300 $(BISON) $(YFLAGS) cgrammar.y; \
301 $(CAT) bison.head cgrammar.tab.c bison.reset >cgrammar.c; \
bbed3d50 302 $(CP) cgrammar.c cgrammar.c.der; \
914641fc 303 -$(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
8fe44445 304 $(CAT) bison.head cgrammar.tab.h bison.reset >Headers/cgrammar_tokens.h; \
305 $(RM) cgrammar.tab.c cgrammar.tab.h; \
306 fi
307
914641fc 308## 10/16/001 drl added copy so that the file mtgrammar.c.der is created
309## also removed the dependency for this file on mtgrammary.c
310
311Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y
8fe44445 312 if test x$(BISON) = xno; then \
313 $(CP) mtgrammar.c.der mtgrammar.c; \
314 else \
315 $(BISON) $(YFLAGS) -p mt mtgrammar.y; \
316 $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c; \
e12110be 317 $(CP) mtgrammar.c mtgrammar.c.der; \
914641fc 318 -$(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
8fe44445 319 $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h; \
320 $(RM) mtgrammar.tab.c mtgrammar.tab.h; \
321 fi
322
bbed3d50 323## 11/29/001 drl added copy so that the file llgrammar.c.der is created
324
8fe44445 325Headers/llgrammar_gen.h Headers/llgrammar_gen2.h llgrammar.c: llgrammar.c.der llgrammar.y
326 if test x$(BISON) = xno; then \
327 $(CP) llgrammar.c.der llgrammar.c; \
328 else \
329 echo '* Expect 2 shift/reduce conflicts'; \
330 $(BISON) $(YFLAGS) -p yl llgrammar.y; \
331 $(CAT) bison.head llgrammar.tab.c bison.reset >llgrammar.c; \
bbed3d50 332 $(CP) llgrammar.c llgrammar.c.der; \
914641fc 333 -$(MV) Headers/llgrammar_gen2.h Headers/llgrammar_gen2.bak; \
8fe44445 334 $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen2.h; \
914641fc 335 0$(MV) Headers/llgrammar_gen.h Headers/llgrammar_gen.bak; \
8fe44445 336 $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen.h; \
337 $(RM) llgrammar.tab.c llgrammar.tab.h; \
338 fi
339
340cscanner.c: cscanner.l
341 $(LEX) $(LFLAGS) cscanner.l
342 $(CAT) flex.head @LEX_OUTPUT_ROOT@.c flex.reset > cscanner.c
343
344Headers/flag_codes.gen: flags.def
345 grep "FLG_" flags.def > Headers/flag_codes.gen
346
347## Checking rules
348
349CHECKS = $(subst .c,.check,$(lclint_SOURCES))
350
351## Other rules
352
353.PHONY: nocheck
354nocheck:
355 $(MAKE) CHECK=0
356
a469ccf0 357.PHONY: test
358test:
53a89507 359 cd ../test; ${MAKE} --no-print-directory
a469ccf0 360
361### Automake generates wrong tags
362.PHONY: etags
363etags:
364 maketags
365
8fe44445 366lintnew:
367 ./lclint -f lclint.lclintrc $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(ALLSRC) $(LCLSRC) -dump lclint \
368 +forcehints -misplacedsharequal +showsourceloc -unrecogcomments \
369 -supcounts -fcnuse -exportlocal -constuse -mts file -mts filerw
370
e5f31c00 371lintbuffercheck:
372 ./lclint -f lclint.lclintrc $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(ALLSRC) $(LCLSRC) -dump lclint \
373 +forcehints -misplacedsharequal +showsourceloc -unrecogcomments \
e5508969 374 -supcounts -fcnuse -exportlocal -constuse -mts file -mts filerw +arraybounds +arrayboundsread
e5f31c00 375
8fe44445 376
377
378.PHONY: purify
379purify: $(lclint_OBJECTS)
380 purify $(LINK) -o lclint$(EXEEXT) $^ $(lclint_LDADD)
381
53a89507 382all: lclint$(EXEEXT)
383CLEANFILES = lclint$(EXEEXT)
This page took 0.344982 seconds and 5 git commands to generate.