-##################################################
-###
-### Makefile for OS/2 version of LCLint
-###
-### designed for use with gmake (GNU make)
-###
-### based on David Evans' original makefile for Unix systems
-###
-### This file should not need to be edited.
-###
-### configuration is set by top-level makefile and written to file
-### config.inc included by this file.
-###
-### Commands:
-###
-### make all
-### builds a release version of lclint from scratch using optimizations
-###
-
-O=.o
-E=
-
-
-include ../config.inc
-
-.SUFFIXES:
-.SUFFIXES: $E $O .h .c .l .check
-
-###
-### object files needed for building lclint:
-### note that there is no dependency checking done!
-###
-OBJ=abstract$O aliasChecks$O aliasTable$O cgrammar$O checking$O \
- clabstract$O clause$O clauseStack$O context$O cprim$O cscanner$O \
- cstring$O cstringSList$O ctype$O ctypeList$O cvar$O \
- declaratorInvNodeList$O declaratorNodeList$O ekind$O enumNameList$O \
- enumNameSList$O exprChecks$O exprNode$O exprNodeList$O \
- exprNodeSList$O fcnNodeList$O fileIdList$O fileStack$O fileTable$O \
- fileloc$O filelocList$O filelocStack$O flagMarker$O flagMarkerList$O \
- flags$O general$O globSet$O globals$O guardSet$O hashTable$O \
- idDecl$O idDeclList$O importNodeList$O imports$O indxMap$O \
- initDeclNodeList$O intSet$O interfaceNodeList$O lclctypes$O lclinit$O \
- lcllib$O lclscan$O lclscanline$O lclsyntable$O lcltokentable$O \
- letDeclNodeList$O lh$O llerror$O llgrammar$O llmain$O lltok$O \
- lslOpList$O lslOpSet$O lslinit$O lslparse$O lsymbol$O lsymbolList$O \
- lsymbolSet$O ltoken$O ltokenList$O macrocache$O mapping$O message$O \
- messageLog$O multiVal$O nameChecks$O osd$O out$O pairNodeList$O \
- paramNodeList$O pcpp$O programNodeList$O qtype$O qual$O qualList$O \
- quantifierNodeList$O replaceNodeList$O sRef$O sRefSet$O sRefSetList$O \
- sRefTable$O scan$O scanline$O shift$O sigNodeSet$O signature$O \
- sort$O sortList$O sortSet$O sortSetList$O source$O specialClauses$O \
- stDeclNodeList$O storeRefNodeList$O structNames$O symtable$O \
- syntable$O termNodeList$O tokentable$O traitRefNodeList$O typeIdSet$O \
- typeNameNodeList$O uentry$O uentryList$O usymIdSet$O usymtab$O \
- usymtab_interface$O varDeclarationNodeList$O varKinds$O varNodeList$O \
- ynm$O
-
-
-###
-### main (and only) target: lclint with all optimizations.
-###
-
-all : lclint$E
-lclint$E : $(OBJ)
- $(CC) $(OFLAG) $(OBJ) $(LINKFLAGS)
-
-###
-### subtarget: local constants header file.
-###
-
-localconstants:
- cmd /c if exist Headers\local_constants.last del Headers\local_constants.last
- cmd /c if exist Headers\local_constants.h ren Headers\local_constants.h local_constants.last
- echo /* local_constants.h - created automatically by gmake localconstants */ > Headers\local_constants.h
- echo /*@constant observer char *DEFAULT_CPPCMD;@*/ >> Headers\local_constants.h
- echo # define DEFAULT_CPPCMD $(DEFAULT_CPPCMD) >> Headers\local_constants.h
- echo /*@constant observer char *SYSTEM_LIBDIR;@*/ >> Headers\local_constants.h
- echo # define SYSTEM_LIBDIR $(SYSTEM_LIBDIR) >> Headers\local_constants.h
- echo /*@constant observer char *DEFAULT_LARCHPATH;@*/ >> Headers\local_constants.h
- echo # define DEFAULT_LARCHPATH $(DEFAULT_LARCHPATH) >> Headers\local_constants.h
- echo /*@constant observer char *DEFAULT_LCLIMPORTDIR;@*/ >> Headers\local_constants.h
- echo # define DEFAULT_LCLIMPORTDIR $(DEFAULT_LCLIMPORTDIR) >> Headers\local_constants.h
-
-###
-### grammars
-###
-
-###
-### -p xx flag to bison renames yyparse ==> xxparse, xxlex ==> xxlex
-### this is probably NOT compatible with yacc.
-###
-
-signature.c : signature.c.der signature.y
-ifdef BISON
- $(BISON) $(YFLAGS) -p lsl signature.y
- $(CAT) bison.head signature.tab.c > signature.c
- $(MV) Headers\signature_gen.h Headers\signature_gen.bak
- $(CAT) bison.head signature.tab.h > Headers\signature_gen.h
-else
- (CP) signature.c.der signature.c
-endif
-
-cgrammar.c : cgrammar.c.der cgrammar.y
-ifdef BISON
- $(BISON) $(YFLAGS) cgrammar.y
- $(CAT) bison.head cgrammar.tab.c > cgrammar.c
- $(MV) Headers\cgrammar_tokens.h Headers\cgrammar_tokens.bak
- $(CAT) bison.head cgrammar.tab.h > Headers\cgrammar_tokens.h
-else
- $(CP) cgrammar.c.der cgrammar.c
-endif
-
-### llgrammar2.h is necessary so +singleinclude may be used
-
-llgrammar.c : llgrammar.c.der llgrammar.y
-ifdef BISON
- $(BISON) $(YFLAGS) -p yl llgrammar.y
- $(CAT) bison.head llgrammar.tab.c > llgrammar.c
- $(MV) Headers\llgrammar_gen2.h Headers\llgrammar_gen2.bak
- $(CAT) bison.head llgrammar.tab.h > Headers\llgrammar_gen2.h
- $(MV) Headers\llgrammar_gen.h Headers\llgrammar_gen.bak
- $(CAT) bison.head llgrammar.tab.h > Headers\llgrammar_gen.h
-else
- $(CP) llgrammar.c.der llgrammar.c
-endif
-
-cscanner.c : cscanner.c.der cscanner.l
-ifdef FLEX
- $(FLEX) $(LFLAGS) -olex.yy.c cscanner.l
- $(CAT) flex.head lex.yy.c > cscanner.c
-else
- $(CP) cscanner.c.der cscanner.c
-endif
-
-###
-### header files dependant on grammars
-###
-
-Headers\signature2.h : signature.c
-Headers\cgrammar2.h : cgrammar.c
-Headers\llgrammar.h : llgrammar.c
-
-###
-### defaults
-###
-
-### Flags for checking a single file
-SINGLEFLAGS = +neverinclude -supcounts +partial -showsummary -load lclint.lcd
-
-.c$O:
- $(CC) $(CPPFLAGS) -c $*.c
-
-###
-### cleaning
-###
-### Standard entries to remove files from the directories
-### up --- remove .o files and grammar derivatives
-### tidy --- eliminate unwanted files
-### clean --- delete derived files, except for spec-derived files
-### pristine --- delete all derived files
-###
-
-pristine: clean
- -$(RM) -f *.lcs *.lslo
-
-clean: tidy
- -$(RM) core lclint
- -$(RM) *.out *.output *.bib *.dvi *.idx *.log *$O *.toc
- -$(RM) cgrammar.c cscanner.c
-
-tidy:
- -$(RM) ,* .,* *.CKP *.BAK .emacs_[0-9]* core a.out *.*~
-
-up:
- -$(RM) cgrammar.c llgrammar.c signature.c cscanner.c
- -$(RM) *$O
-
-###
-### other flags are in .lclintrc file
-###
-
-lint:
- $(LCLINT) -f lclint.lclintrc $(CPPFLAGS) +singleinclude $(ALLSRC) -dump lclint
-
-
-
-
+#\r
+# splint Makefile for GNU Make on OS/2 systems\r
+#\r
+# Derived from original Unix makefile by Herbert\r
+#\r
+\r
+SHELL = /usr/bin/ksh\r
+\r
+include ../os2/make.vars\r
+binDir = ../bin\r
+\r
+\r
+.SUFFIXES = \r
+.SUFFIXES = .c .h $O $(EXEEXT) .l .check\r
+\r
+# Some preferences\r
+### We use the no-lines option to prevent confusion with splint flag settings.\r
+### Should fix splint to avoid this...\r
+YFLAGS = -v -t -d --debug --no-lines\r
+LFLAGS = -L\r
+\r
+BISON_SRC = cgrammar.y llgrammar.y mtgrammar.y signature.y\r
+\r
+\r
+## We only build Splint\r
+bin_PROGRAMS = splint$(EXEEXT)\r
+\r
+## This is a fake program, so we can easily substitute in the extra LCL objects\r
+EXTRA_PROGRAMS = lcl\r
+\r
+AM_CPPFLAGS = -IHeaders\r
+\r
+## The main sources\r
+\r
+SETSRC = globSet.c intSet.c typeIdSet.c guardSet.c usymIdSet.c sRefSet.c\r
+\r
+LISTSRC = clauseStack.c filelocStack.c \\r
+ cstringList.c cstringSList.c sRefSetList.c ctypeList.c \\r
+ enumNameList.c enumNameSList.c exprNodeList.c exprNodeSList.c \\r
+ uentryList.c fileIdList.c filelocList.c qualList.c sRefList.c \\r
+ flagMarkerList.c idDeclList.c flagSpec.c\r
+\r
+CPPSRC = cppmain.c cpplib.c cppexp.c cpphash.c cpperror.c\r
+\r
+CSRC = uentry.c cprim.c macrocache.c qual.c qtype.c stateClause.c \\r
+ stateClauseList.c ctype.c cvar.c clabstract.c idDecl.c clause.c \\r
+ globalsClause.c modifiesClause.c warnClause.c functionClause.c \\r
+ functionClauseList.c metaStateConstraint.c metaStateConstraintList.c \\r
+ metaStateExpression.c metaStateSpecifier.c functionConstraint.c \\r
+ pointers.c\r
+\r
+SPLINTSRC = exprNode.c exprChecks.c llmain.c help.c rcfiles.c\r
+CHECKSRC = structNames.c transferChecks.c varKinds.c nameChecks.c\r
+\r
+GLOBSRC = context.c globals.c flags.c general.c osd.c reader.c mtreader.c\r
+\r
+GRAMSRC = cgrammar.c cscanner.c mtscanner.c mtgrammar.c llgrammar.c signature.c\r
+\r
+OVERFLOWCHSRC = constraintGeneration.c constraintTerm.c \\r
+ constraintExprData.c constraintExpr.c constraint.c \\r
+ constraintList.c constraintResolve.c \\r
+ constraintOutput.c loopHeuristics.c \r
+\r
+GENERALSRC = exprData.c cstring.c fileloc.c message.c inputStream.c \\r
+ fileTable.c cstringTable.c valueTable.c stateValue.c \\r
+ llerror.c messageLog.c flagMarker.c aliasTable.c ynm.c \\r
+ sRefTable.c genericTable.c ekind.c usymtab.c multiVal.c \\r
+ lltok.c sRef.c lcllib.c randomNumbers.c fileLib.c\r
+\r
+METASTATESRC = stateInfo.c stateCombinationTable.c metaStateTable.c \\r
+ metaStateInfo.c annotationTable.c annotationInfo.c mttok.c \\r
+ mtDeclarationNode.c mtDeclarationPieces.c mtDeclarationPiece.c \\r
+ mtContextNode.c mtValuesNode.c mtDefaultsNode.c \\r
+ mtAnnotationsNode.c mtMergeNode.c mtAnnotationList.c \\r
+ mtAnnotationDecl.c mtTransferClauseList.c mtTransferClause.c \\r
+ mtTransferAction.c mtLoseReferenceList.c mtLoseReference.c \\r
+ mtDefaultsDeclList.c mtDefaultsDecl.c mtMergeItem.c \\r
+ mtMergeClause.c mtMergeClauseList.c\r
+\r
+## These are only used if LCL is enabled\r
+\r
+LCLONLYSRC = usymtab_interface.c abstract.c ltoken.c lclscanline.c \\r
+ lclsyntable.c lcltokentable.c sort.c symtable.c lclinit.c \\r
+ shift.c lclscan.c lsymbol.c mapping.c\r
+\r
+LSLSRC = tokentable.c scan.c scanline.c lslparse.c \\r
+ lh.c checking.c lclctypes.c imports.c lslinit.c syntable.c \r
+\r
+LCLSETSRC = lsymbolSet.c sigNodeSet.c lslOpSet.c sortSet.c\r
+\r
+LCLLISTSRC = initDeclNodeList.c sortList.c declaratorInvNodeList.c \\r
+ interfaceNodeList.c sortSetList.c declaratorNodeList.c \\r
+ letDeclNodeList.c stDeclNodeList.c storeRefNodeList.c \\r
+ lslOpList.c lsymbolList.c termNodeList.c ltokenList.c \\r
+ traitRefNodeList.c pairNodeList.c typeNameNodeList.c \\r
+ fcnNodeList.c paramNodeList.c programNodeList.c \\r
+ varDeclarationNodeList.c varNodeList.c quantifierNodeList.c \\r
+ replaceNodeList.c importNodeList.c\r
+\r
+IFILES = ctbase.i cttable.i exprDataQuite.i\r
+\r
+\r
+#Files that are used on systems that do not have bison or yacc\r
+DER_BISON_FILES = signature.c.der cgrammar.c.der mtgrammar.c.der \\r
+ llgrammar.c.der \r
+DER_FILES = $(DER_BISON_FILES)\r
+\r
+\r
+COMMONSRC = $(OVERFLOWCHSRC) $(CPPSRC) $(CSRC) $(CHECKSRC) $(GENERALSRC) \\r
+ $(GLOBSRC) $(IFACESRC) $(LISTSRC) $(SETSRC) $(METASTATESRC)\r
+\r
+ALLSRC = $(GRAMSRC) $(COMMONSRC) $(SPLINTSRC) $(DER_FILES) \r
+\r
+#files to run Splint on\r
+LINTSRC = $(COMMONSRC) $(SPLINTSRC) cscanner.c cgrammar.c\r
+\r
+LCLSRC = $(LCLSETSRC) $(LCLLISTSRC) $(LSLSRC) $(CMNSRC) $(LCLONLYSRC) \r
+lcl_SOURCES = $(LCLSRC)\r
+CONFIG_HEADER = $(top_builddir)/config.h\r
+\r
+splint_SOURCES = $(ALLSRC)\r
+\r
+lcl_OBJECTS = lsymbolSet$O sigNodeSet$O \\r
+ lslOpSet$O sortSet$O initDeclNodeList$O \\r
+ sortList$O declaratorInvNodeList$O \\r
+ interfaceNodeList$O sortSetList$O \\r
+ declaratorNodeList$O letDeclNodeList$O \\r
+ stDeclNodeList$O storeRefNodeList$O \\r
+ lslOpList$O lsymbolList$O \\r
+ termNodeList$O ltokenList$O \\r
+ traitRefNodeList$O pairNodeList$O \\r
+ typeNameNodeList$O fcnNodeList$O \\r
+ paramNodeList$O programNodeList$O \\r
+ varDeclarationNodeList$O varNodeList$O \\r
+ quantifierNodeList$O replaceNodeList$O \\r
+ importNodeList$O tokentable$O scan$O \\r
+ scanline$O lslparse$O lh$O \\r
+ checking$O lclctypes$O imports$O \\r
+ lslinit$O syntable$O \\r
+ usymtab_interface$O abstract$O ltoken$O \\r
+ lclscanline$O lclsyntable$O \\r
+ lcltokentable$O sort$O symtable$O \\r
+ lclinit$O shift$O lclscan$O \\r
+ lsymbol$O mapping$O\r
+\r
+splint_OBJECTS = cgrammar$O cscanner$O \\r
+ mtscanner$O mtgrammar$O llgrammar$O \\r
+ signature$O cppmain$O cpplib$O \\r
+ cppexp$O cpphash$O cpperror$O \\r
+ context$O uentry$O cprim$O \\r
+ macrocache$O qual$O qtype$O \\r
+ stateClause$O stateClauseList$O ctype$O \\r
+ cvar$O clabstract$O idDecl$O \\r
+ clause$O globalsClause$O \\r
+ modifiesClause$O warnClause$O \\r
+ functionClause$O functionClauseList$O \\r
+ metaStateConstraint$O metaStateConstraintList$O \\r
+ metaStateExpression$O metaStateSpecifier$O \\r
+ functionConstraint$O pointers$O \\r
+ structNames$O transferChecks$O \\r
+ varKinds$O nameChecks$O exprData$O \\r
+ cstring$O fileloc$O message$O \\r
+ inputStream$O fileTable$O \\r
+ cstringTable$O valueTable$O \\r
+ stateValue$O llerror$O messageLog$O \\r
+ flagMarker$O aliasTable$O ynm$O \\r
+ sRefTable$O genericTable$O ekind$O \\r
+ usymtab$O multiVal$O lltok$O \\r
+ sRef$O lcllib$O randomNumbers$O \\r
+ fileLib$O globals$O \\r
+ flags$O general$O osd$O \\r
+ reader$O mtreader$O clauseStack$O \\r
+ filelocStack$O cstringList$O \\r
+ cstringSList$O sRefSetList$O \\r
+ ctypeList$O enumNameList$O \\r
+ enumNameSList$O exprNodeList$O \\r
+ exprNodeSList$O uentryList$O \\r
+ fileIdList$O filelocList$O qualList$O \\r
+ sRefList$O flagMarkerList$O \\r
+ idDeclList$O flagSpec$O globSet$O \\r
+ intSet$O typeIdSet$O guardSet$O \\r
+ usymIdSet$O sRefSet$O stateInfo$O \\r
+ stateCombinationTable$O metaStateTable$O \\r
+ metaStateInfo$O annotationTable$O \\r
+ annotationInfo$O mttok$O \\r
+ mtDeclarationNode$O mtDeclarationPieces$O \\r
+ mtDeclarationPiece$O mtContextNode$O \\r
+ mtValuesNode$O mtDefaultsNode$O \\r
+ mtAnnotationsNode$O mtMergeNode$O \\r
+ mtAnnotationList$O mtAnnotationDecl$O \\r
+ mtTransferClauseList$O mtTransferClause$O \\r
+ mtTransferAction$O mtLoseReferenceList$O \\r
+ mtLoseReference$O mtDefaultsDeclList$O \\r
+ mtDefaultsDecl$O mtMergeItem$O \\r
+ mtMergeClause$O mtMergeClauseList$O \\r
+ exprNode$O exprChecks$O llmain$O \\r
+ help$O rcfiles$O constraintGeneration$O \\r
+ constraintTerm$O constraintExprData$O \\r
+ constraintExpr$O constraint$O \\r
+ constraintList$O constraintResolve$O \\r
+ constraintOutput$O loopHeuristics$O snprintf$O\r
+\r
+# Keep it fake\r
+.PHONY: lcl$(EXEEXT)\r
+\r
+DEFS = -DHAVE_CONFIG_H\r
+DEFAULT_INCLUDES = -I. -I..\r
+LDADD = $(lcl_OBJECTS) \r
+\r
+## Sources that need to be built\r
+BUILT_SOURCES = Headers/signature_gen.h Headers/cgrammar_tokens.h \\r
+ Headers/llgrammar_gen.h Headers/llgrammar_gen2.h \\r
+ Headers/mtgrammar_tokens.h signature.c cgrammar.c \\r
+ llgrammar.c mtgrammar.c Headers/flag_codes.gen \\r
+ $(DER_FILES)\r
+\r
+all: $(BUILT_SOURCES) splint$(EXEEXT) $(binDir)/splint$(EXEEXT)\r
+\r
+Headers/signature_gen.h signature.c: signature.c.der signature.y\r
+ifndef BISON\r
+ $(CP) signature.c.der signature.c\r
+else \r
+ echo "Making signature.c"\r
+ $(BISON) $(YFLAGS) -p lsl signature.y\r
+ $(CAT) bison.head signature.tab.c bison.reset >signature.c\r
+ $(CP) signature.c signature.c.der\r
+ -$(MV) Headers/signature_gen.h Headers/signature_gen.bak\r
+ $(CAT) bison.head signature.tab.h bison.reset >Headers/signature_gen.h\r
+ $(RM) signature.tab.c signature.tab.h\r
+endif\r
+\r
+## 11/29/001 drl added copy so that the file cgrammar.c.der is created\r
+\r
+Headers/cgrammar_tokens.h cgrammar.c: cgrammar.c.der cgrammar.y\r
+ifndef BISON\r
+ $(CP) cgrammar.c.der cgrammar.c\r
+else \r
+ @echo "Making cgrammar.c"\r
+ @echo "Expect 141 shift/reduce conflicts and 111 reduce/reduce conflicts."\r
+ @echo "(see cgrammar.y for explanation)"\r
+ $(BISON) $(YFLAGS) cgrammar.y\r
+ $(CAT) bison.head cgrammar.tab.c bison.reset | $(SED) \\r
+ -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/' \\r
+ >cgrammar.c\r
+ $(CP) cgrammar.c cgrammar.c.der\r
+ -$(MV) Headers/cgrammar_tokens.h Headers/cgrammar_tokens.bak\r
+ $(CAT) bison.head cgrammar.tab.h bison.reset | $(SED) \\r
+ -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/g' \\r
+ >Headers/cgrammar_tokens.h\r
+ $(RM) cgrammar.tab.c cgrammar.tab.h\r
+endif\r
+\r
+## 10/16/001 drl added copy so that the file mtgrammar.c.der is created\r
+## also removed the dependency for this file on mtgrammary.c \r
+\r
+Headers/mtgrammar_tokens.h mtgrammar.c: mtgrammar.y\r
+ifndef BISON\r
+ $(CP) mtgrammar.c.der mtgrammar.c\r
+else \r
+ @echo "Making mtgrammar.c"\r
+ @echo "Expect 11 shift/reduce conflicts."\r
+ $(BISON) $(YFLAGS) -p mt mtgrammar.y\r
+ $(CAT) bison.head mtgrammar.tab.c bison.reset >mtgrammar.c\r
+ $(CP) mtgrammar.c mtgrammar.c.der\r
+ -$(MV) Headers/mtgrammar_tokens.h Headers/mtgrammar_tokens.bak\r
+ $(CAT) bison.head mtgrammar.tab.h bison.reset >Headers/mtgrammar_tokens.h\r
+ $(RM) mtgrammar.tab.c mtgrammar.tab.h\r
+endif\r
+\r
+Headers/llgrammar_gen.h Headers/llgrammar_gen2.h llgrammar.c: llgrammar.c.der llgrammar.y\r
+ifndef BISON\r
+ $(CP) llgrammar.c.der llgrammar.c\r
+else \r
+ @echo "Making llgrammar.c"\r
+ @echo "Expect 2 shift/reduce conflicts"\r
+ $(BISON) $(YFLAGS) -p yl llgrammar.y\r
+ $(CAT) bison.head llgrammar.tab.c bison.reset >llgrammar.c\r
+ $(CP) llgrammar.c llgrammar.c.der\r
+ -$(MV) Headers/llgrammar_gen2.h Headers/llgrammar_gen2.bak\r
+ -$(MV) Headers/llgrammar_gen.h Headers/llgrammar_gen.bak\r
+ $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen2.h\r
+ $(CAT) bison.head llgrammar.tab.h bison.reset >Headers/llgrammar_gen.h\r
+ $(RM) llgrammar.tab.c llgrammar.tab.h\r
+endif\r
+\r
+cscanner.c: cscanner.l\r
+ $(FLEX) $(LFLAGS) cscanner.l \r
+ $(CAT) flex.head lexyy.c flex.reset | $(SED) \\r
+ -e 's/YYSTYPE/cgrammar_YYSTYPE/g' -e 's/lsllex/cgrammar_lsllex/g' \\r
+ >cscanner.c\r
+\r
+Headers/flag_codes.gen: flags.def\r
+ grep "FLG_" flags.def > Headers/flag_codes.gen\r
+\r
+$(binDir)/splint$(EXEEXT): splint$(EXEEXT)\r
+ -$(RM) -f $(binDir)/splint$(EXEEXT)\r
+ $(CP) splint$(EXEEXT) $(binDir)/splint$(EXEEXT)\r
+\r
+up: clean\r
+ rm -f cgrammar.c llgrammar.c mtgrammar.c signature.c cscanner.c\r
+\r
+\r
+clean: \r
+ -rm -f $(splint_OBJECTS) core *.core *~ \r
+\r
+\r
+CLEANFILES = splint$(EXEEXT) $(binDir)/splint$(EXEEXT)\r
+\r
+%$O: %.c\r
+ $(CC) $(CFLAGS) $(DEFS) $(DEFAULT_INCLUDES) $(CPPFLAGS) -c $<\r
+\r
+splint$(EXEEXT) : $(splint_OBJECTS) $(lcl_OBJECTS)\r
+ $(CC) $(OFLAG)$@ $^ $(LDFLAGS)\r
+\r
+list:\r
+ @echo "$(splint_OBJECTS)"\r