From: <sv...@ww...> - 2004-08-26 07:30:01
|
Author: mkrose Date: 2004-08-26 00:29:53 -0700 (Thu, 26 Aug 2004) New Revision: 1220 Added: trunk/CSP/make/ trunk/CSP/make/bindir.mk trunk/CSP/make/clean.mk trunk/CSP/make/depend.mk trunk/CSP/make/doxygen.mk trunk/CSP/make/flags.mk trunk/CSP/make/init.mk trunk/CSP/make/rules.mk trunk/CSP/make/standard.mk Log: Centralize some of the makefile functionality. Will integrate into the various submakes eventually. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1220 Added: trunk/CSP/make/bindir.mk =================================================================== --- trunk/CSP/make/bindir.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/bindir.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,21 @@ +# create object files in a separate directory + +BINDIR = .bin +BIN_MAGIC := $(shell mkdir $(BINDIR) > /dev/null 2>&1 || :) + +# dependecy rules need to refer to the objects in the bindir +DEPFILTER:=$(DEPFILTER) | sed -n 's/^\(.*:\)/$(BINDIR)\/\1/;p' + +.PHONY: clean-objects + +CLEAN:=$(CLEAN) clean-objects + +clean-objects: + $(RM) -r $(RMFLAGS) $(BINDIR) + +OBJECTS = $(SOURCES:%=$(BINDIR)/%.o) +MSGOBJS = $(MESSAGES:%=$(BINDIR)/%.o) + +$(BINDIR)/%.o: %.cpp + $(CXX) -o $@ -c $(CXXFLAGS) $< + Added: trunk/CSP/make/clean.mk =================================================================== --- trunk/CSP/make/clean.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/clean.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,7 @@ +# trivial clean rule; triggers all targets that have been added +# to $(CLEAN) + +.PHONY: clean + +clean: $(CLEAN) + Added: trunk/CSP/make/depend.mk =================================================================== --- trunk/CSP/make/depend.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/depend.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,43 @@ +# Dependency tracking for c/c++/swig files. +# +# Notes: +# Include after default rule is defined, and make 'clean' +# depend on 'clean-deps'. +# +# Inputs: +# SOURCES: list of source files to track (no extensions) +# MESSAGES: list of messages descriptions to track (no extensions) +# INTERFACES: list of swig interfaces to track (no extensions) + + +DEPDIR = .dep + +MKDEP = $(CXX) -M $(CXXFLAGS) +SWDEP = $(SWIG) -M $(SWOPTS) +DEPSOURCES = $(SOURCES:%=%.cpp.d) $(MESSAGES:%=%.cpp.d) $(INTERFACES:%=%.swigd) +DEPFILES = $(addprefix $(DEPDIR)/,$(DEPSOURCES)) +DEPFILTER := | sed -n 's/^\(.*:\)/.bin\/\1/;p' +DEPS_MAGIC := $(shell mkdir $(DEPDIR) > /dev/null 2>&1 || :) + +.PHONY: clean-deps clean-dependencies + +CLEAN:=$(CLEAN) clean-deps + +clean-deps clean-dependencies: + $(RM) -r $(RMFLAGS) $(DEPDIR) + +ifeq ($(findstring clean,$(MAKECMDGOALS)),) +ifneq ($(strip $(DEPFILES)),) +-include $(DEPFILES) +endif +endif + + +$(DEPDIR)/%.d : % + @echo "Computing dependencies for $<..." + @echo $(MKDEP) $< $(DEPFILTER) > $@ + @$(MKDEP) $< $(DEPFILTER) > $@ + +$(DEPDIR)/%.swigd : % + @echo "Computing dependencies for $<..." + @$(SWDEP) $(DEPFILTER) -o $(<:.i=_wrap.cpp) $< > $@ Added: trunk/CSP/make/doxygen.mk =================================================================== --- trunk/CSP/make/doxygen.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/doxygen.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,19 @@ +# rules to run doxygen and clean up the documentation directory +# +# Doxyfile should exist in the current directory. Documentation +# will be generated in ./.dox/ + +DOCDIR = .dox + +DOC_MAGIC := $(shell mkdir $(DOCDIR) > /dev/null 2>&1 || :) + +.PHONY: clean-docs clean-dox clean-doc dox docs doc + +CLEAN:=$(CLEAN) clean-docs + +clean-docs clean-dox clean-doc: + $(RM) -r $(RMFLAGS) $(DOCDIR) + +dox docs doc: + @echo "Generating documentation..." + doxygen Added: trunk/CSP/make/flags.mk =================================================================== --- trunk/CSP/make/flags.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/flags.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,8 @@ +# standard build flags + +INCLUDE = -I.. -I../SimData/Include -I/usr/include/cc++2 +CXXFLAGS = $(INCLUDE) -g -O2 -W -Wall -pedantic -Wno-long-long + +SIMNET_LIB = -L$(TOPDIR)/SimNet -lSimNet +SIMDATA_LIB = -L$(TOPDIR)/SimData/SimData -lSimData + Added: trunk/CSP/make/init.mk =================================================================== --- trunk/CSP/make/init.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/init.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,4 @@ + +CLEAN= +DEPFILTER= + Added: trunk/CSP/make/rules.mk =================================================================== --- trunk/CSP/make/rules.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/rules.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,8 @@ +# specialty build rules + +%.cpp %.h: %.net + ../SimData/Tools/TaggedRecordCompiler/trc.py $< + +%_wrap.cpp %.py: %.i + $(SWIG) $(SWOPTS) -o $@ $< + Added: trunk/CSP/make/standard.mk =================================================================== --- trunk/CSP/make/standard.mk 2004-08-25 15:11:13 UTC (rev 1219) +++ trunk/CSP/make/standard.mk 2004-08-26 07:29:53 UTC (rev 1220) @@ -0,0 +1,28 @@ +# Standard Makefile includes +# +# Notes: +# This file must be included after defining the source +# files with SOURCES, MESSAGES, INTERFACES, etc. +# +# Example: +# +# TOPDIR = ... +# SOURCES = ... +# INTERFACES = ... +# +# include $(TOPDIR)/make/standard.mk +# +# custom targets: +# rules... +# + +.PHONY: all +default: all + +include $(TOPDIR)/make/init.mk +include $(TOPDIR)/make/flags.mk +include $(TOPDIR)/make/depend.mk +include $(TOPDIR)/make/bindir.mk +include $(TOPDIR)/make/doxygen.mk +include $(TOPDIR)/make/clean.mk +include $(TOPDIR)/make/rules.mk |