]> andersk Git - splint.git/blob - src/Makefile.am
Cleaned up flags to generate manual help.
[splint.git] / src / Makefile.am
1 ## Note: starting comments with ## means they don't end up in Makefile
2
3 AUTOMAKE_OPTIONS = 1.5 foreign
4
5 SUFFIXES = .h .c .o .l .check
6
7 # Check files before compiling; requires splint!
8 CHECK = 1
9
10 # Some preferences
11 ### We use the no-lines option to prevent confusion with splint flag settings.
12 ### Should fix splint to avoid this...
13 YFLAGS = -v -t -d --debug --no-lines
14 LFLAGS = -L
15
16 BISON_SRC = cgrammar.y  llgrammar.y  mtgrammar.y  signature.y
17
18
19 ## We only build Splint
20 bin_PROGRAMS = splint
21
22 ## This is a fake program, so we can easily substitute in the extra LCL objects
23 EXTRA_PROGRAMS = lcl
24
25 AM_CPPFLAGS = -IHeaders
26
27 ## The main sources
28
29 SETSRC = globSet.c intSet.c typeIdSet.c guardSet.c usymIdSet.c sRefSet.c
30
31 LISTSRC = clauseStack.c filelocStack.c \
32           cstringList.c cstringSList.c sRefSetList.c ctypeList.c \
33           enumNameList.c enumNameSList.c exprNodeList.c exprNodeSList.c \
34           uentryList.c fileIdList.c filelocList.c qualList.c sRefList.c \
35           flagMarkerList.c idDeclList.c flagSpec.c
36
37 CPPSRC = cppmain.c cpplib.c cppexp.c cpphash.c cpperror.c
38
39 CSRC = uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \
40        stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \
41        globalsClause.c modifiesClause.c warnClause.c functionClause.c \
42        functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \
43        metaStateExpression.c metaStateSpecifier.c functionConstraint.c
44
45 SPLINTSRC = exprNode.c exprChecks.c llmain.c
46 CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c
47
48 GLOBSRC = context.c globals.c flags.c general.c osd.c reader.c mtreader.c
49
50 GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtgrammar.c llgrammar.c signature.c
51
52 OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \
53                 constraintExprData.c constraintExpr.c constraint.c \
54                 constraintList.c constraintResolve.c \
55                 constraintOutput.c loopHeuristics.c 
56
57 GENERALSRC = exprData.c cstring.c fileloc.c message.c inputStream.c \
58              fileTable.c cstringTable.c valueTable.c stateValue.c \
59              llerror.c messageLog.c flagMarker.c aliasTable.c ynm.c \
60              sRefTable.c genericTable.c ekind.c usymtab.c multiVal.c \
61              lltok.c sRef.c lcllib.c randomNumbers.c fileLib.c
62
63 METASTATESRC = stateInfo.c stateCombinationTable.c metaStateTable.c \
64                metaStateInfo.c annotationTable.c annotationInfo.c mttok.c \
65                mtDeclarationNode.c mtDeclarationPieces.c mtDeclarationPiece.c \
66                mtContextNode.c mtValuesNode.c mtDefaultsNode.c \
67                mtAnnotationsNode.c mtMergeNode.c mtAnnotationList.c \
68                mtAnnotationDecl.c mtTransferClauseList.c mtTransferClause.c \
69                mtTransferAction.c mtLoseReferenceList.c mtLoseReference.c \
70                mtDefaultsDeclList.c mtDefaultsDecl.c mtMergeItem.c \
71                mtMergeClause.c mtMergeClauseList.c
72
73 ## These are only used if LCL is enabled
74
75 LCLONLYSRC = usymtab_interface.c abstract.c ltoken.c lclscanline.c \
76              lclsyntable.c lcltokentable.c sort.c symtable.c lclinit.c \
77              shift.c lclscan.c lsymbol.c mapping.c
78
79 LSLSRC = tokentable.c scan.c scanline.c lslparse.c \
80          lh.c checking.c lclctypes.c imports.c lslinit.c syntable.c 
81
82 LCLSETSRC  = lsymbolSet.c sigNodeSet.c lslOpSet.c sortSet.c
83
84 LCLLISTSRC = 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
93
94 HEADERSRC = Headers/abstBodyNode.h           Headers/ltokenList.h \
95           Headers/abstract.h               Headers/macrocache.h \
96           Headers/abstractNode.h           Headers/mapping.h \
97           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/splintMacros.nf  
232
233 IFILES =  ctbase.i  cttable.i  exprDataQuite.i
234
235 ## Non-built files we need to distribute
236 EXTRA_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/splintMacros.nf Headers/reservedNames.nf
239
240
241 #Files that are used on systems that do not have bison or yacc
242 DER_BISON_FILES = signature.c.der  cgrammar.c.der  mtgrammar.c.der \
243                   llgrammar.c.der 
244 DER_FILES = $(DER_BISON_FILES)
245
246
247 COMMONSRC = $(OVERFLOWCHSRC) $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \
248             $(GLOBSRC) $(IFACESRC) $(LISTSRC) $(SETSRC) $(METASTATESRC)
249
250 ALLSRC = $(GRAMSRC) $(COMMONSRC) $(SPLINTSRC) $(DER_FILES) $(HEADERSRC)
251
252 #files to run Splint on
253 LINTSRC = $(COMMONSRC) $(SPLINTSRC) 
254
255 #ALLSRC = $(COMMONSRC) $(SPLINTSRC) $(DER_FILES) $(HEADERSRC)
256
257 LCLSRC = $(LCLSETSRC) $(LCLLISTSRC) $(LSLSRC) $(CMNSRC) $(LCLONLYSRC) 
258 lcl_SOURCES = $(LCLSRC)
259
260 splint_SOURCES = $(ALLSRC)
261 splint_LDADD = $(LCLOBJ) @LEXLIB@
262
263 # Ensure the LCL objects get built if needed
264 splint_DEPENDENCIES = $(LCLOBJ)
265
266 # Keep it fake
267 .PHONY: lcl$(EXEEXT)
268 lcl$(EXEEXT):
269         @echo "This is a fake target"; \
270          echo "Use configure's --with-lcl option to enable lcl"
271
272 ## Sources that need to be built
273 BUILT_SOURCES = Headers/signature_gen.h Headers/cgrammar_tokens.h \
274                 Headers/llgrammar_gen.h Headers/llgrammar_gen2.h \
275                 Headers/mtgrammar_tokens.h signature.c cgrammar.c \
276                 llgrammar.c mtgrammar.c Headers/flag_codes.gen \
277                 $(DER_FILES)
278
279 ## Grammars
280
281 Headers/signature_gen.h signature.c: signature.c.der signature.y
282         @if test x$(BISON) = xno; then \
283           $(CP) signature.c.der signature.c; \
284         else \
285           echo '* Making signature.c'; \
286           $(BISON) $(YFLAGS) -p lsl signature.y; \
287           $(CAT) bison.head signature.tab.c bison.reset >signature.c; \
288           $(CP) signature.c signature.c.der; \
289           $(MV) Headers/signature_gen.h Headers/signature_gen.bak; \
290           $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h; \
291           $(RM) signature.tab.c signature.tab.h; \
292         fi
293
294 ## 11/29/001 drl added copy so that the file cgrammar.c.der is created
295
296 Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y
297         @if test x$(BISON) = xno; then \
298           $(CP) cgrammar.c.der cgrammar.c; \
299         else \
300           echo '* Making cgrammar.c'; \
301           echo '* Expect 141 shift/reduce conflicts and 111 reduce/reduce conflicts.'; \
302           echo '* (see cgrammar.y for explanation)'; \
303           $(BISON) $(YFLAGS) cgrammar.y; \
304           $(CAT) bison.head cgrammar.tab.c bison.reset >cgrammar.c; \
305           $(CP) cgrammar.c cgrammar.c.der; \
306           $(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak; \
307           $(CAT) bison.head cgrammar.tab.h bison.reset >Headers/cgrammar_tokens.h; \
308           $(RM) cgrammar.tab.c cgrammar.tab.h; \
309         fi
310
311 ## 10/16/001 drl added copy so that the file mtgrammar.c.der is created
312 ## also removed the dependency for this file on mtgrammary.c  
313
314 Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y
315         @if test x$(BISON) = xno; then \
316           $(CP) mtgrammar.c.der mtgrammar.c; \
317         else \
318           echo '* Making mygrammar.c'; \
319           $(BISON) $(YFLAGS) -p mt mtgrammar.y; \
320           $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c; \
321           $(CP) mtgrammar.c mtgrammar.c.der; \
322           $(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak; \
323           $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h; \
324           $(RM) mtgrammar.tab.c mtgrammar.tab.h; \
325         fi
326
327 ## 11/29/001 drl added copy so that the file llgrammar.c.der is created
328
329 Headers/llgrammar_gen.h Headers/llgrammar_gen2.h llgrammar.c: llgrammar.c.der llgrammar.y
330         @if test x$(BISON) = xno; then \
331           $(CP) llgrammar.c.der llgrammar.c; \
332         else \
333           echo '* Making llgrammar.c'; \
334           echo '* Expect 2 shift/reduce conflicts'; \
335           $(BISON) $(YFLAGS) -p yl llgrammar.y; \
336           $(CAT) bison.head llgrammar.tab.c bison.reset >llgrammar.c; \
337           $(CP) llgrammar.c llgrammar.c.der; \
338           $(MV) Headers/llgrammar_gen2.h Headers/llgrammar_gen2.bak; \
339           $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen2.h; \
340           $(MV) Headers/llgrammar_gen.h Headers/llgrammar_gen.bak; \
341           $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen.h; \
342           $(RM) llgrammar.tab.c llgrammar.tab.h; \
343         fi
344
345 cscanner.c: cscanner.l
346         $(LEX) $(LFLAGS) cscanner.l 
347         $(CAT) flex.head @LEX_OUTPUT_ROOT@.c flex.reset > cscanner.c
348
349 Headers/flag_codes.gen: flags.def
350         grep "FLG_" flags.def > Headers/flag_codes.gen
351         $(MAKE)
352         cd ../lib; $(MAKE)
353
354 ## Checking rules
355
356 CHECKS = $(subst .c,.check,$(splint_SOURCES))
357
358 ## Other rules
359
360 .PHONY: nocheck
361 nocheck:
362         $(MAKE) CHECK=0
363
364 .PHONY: test
365 test:
366         cd ../test; ${MAKE} --no-print-directory
367
368 ### Automake generates wrong tags
369 .PHONY: etags
370 etags:
371         maketags
372
373 lintnew: splintme
374
375 splintme: 
376         ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(LINTSRC) $(LCLSRC) -dump lclint \
377                     +forcehints -misplacedsharequal +showsourceloc -unrecogcomments \
378                     -supcounts -fcnuse -exportlocal -constuse -mts file -mts filerw
379
380 lintbuffercheck: 
381         ./splint $(DEFAULT_INCLUDES) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) +singleinclude $(LINTSRC) $(LCLSRC) -dump lclint \
382                     +forcehints -misplacedsharequal +showsourceloc -unrecogcomments \
383                     -supcounts -fcnuse -exportlocal -constuse -mts file -mts filerw +arraybounds +arrayboundsread +implictconstraint
384
385
386 all: splint$(EXEEXT)
387 CLEANFILES = splint$(EXEEXT)
388
389 .c.o:
390         @echo "Compiling "$<"..."; \
391         source='$<' object='$@' libtool=no \
392         depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' \
393         $(CCDEPMODE) $(depcomp) \
394         $(COMPILE) -c `test -f $< || echo '$(srcdir)/'`$<
This page took 0.066003 seconds and 5 git commands to generate.