Mail Archives: djgpp/2000/01/12/15:47:51
Here it is. (I still don't see how a list of dependencies, none of
which themselves need to be built, can possibly cause a problem.)
I've found that my news agent is inserting extra line breaks at about
sixty-something columns, and have tried formatting the line lengths
below and inserting backslashes to produce a sixty column version.
# Protomatter makefile
# Protomatter version 1.0
# January 9 2000
# Copyright (c) Paul Derbyshire
# See license.txt
#########################################
# Variables to be configured. #
#########################################
#######################
# Directories at the bases of the source, code, and docs hierarchies
# and target directories for jars.
#######################
BASEDIR = ..
SRCDIR = $(BASEDIR)/source
CLASSDIR = $(BASEDIR)/class
DOCSDIR = $(BASEDIR)/doc
CODEJARDIR = $(BASEDIR)/program
DOCSJARDIR = $(BASEDIR)
SOURCEJARDIR = $(BASEDIR)
#######################
# Jar file names.
#######################
CODEJARNAME = protomatter
DOCSJARNAME = pmdocs
SOURCEJARNAME = pmsource
#######################
# Jar base directories.
#######################
CODEJARBASE = $(CLASSDIR)
DOCSJARBASE = $(BASEDIR)
SOURCEJARBASE = $(BASEDIR)
#######################
# Variables used in making the API documentation.
#######################
WINDOWTITLE = "Protomatter API Documentation"
DOCTITLE = "The Protomatter API"
HFTEXT = "Protomatter API Documentation<br>v1.0<br>Copyright (c) 2000\
Protoware<br>See license.txt"
JAVAURL = http://java.sun.com/products/jdk/1.3/docs/api
#######################
# Compilation options
#######################
COMPILEFLAGS =
#######################
# Packages and relative directories -- must be updated manually as
# source tree and package tree change.
#######################
# All package names
PACKAGES = pgd.protomatter pgd.protomatter.fractal
# All package directory structure directories, relative to base of
# package hierarchy.
# NOTE: Directories must be listed in order such that a directory's
# parent is listed before the directory.
PACKDIRS = . pgd pgd/protomatter pgd/protomatter/fractal
# All package directory structure directories that contain .java
# files in the source tree, relative
# to base of package hierarchy.
REALPACKDIRS = pgd/protomatter pgd/protomatter/fractal
# All auxiliary directories, relative to base of source or object
# hierarchy.
# NOTE: Directories must be listed in order such that a directory's
# parent is listed before the directory.
AUXDIRS =
# All auxiliary document directories (i.e. dirs like
# foo/bar/doc-files in the source tree), relative to base of package
# hierarchy.
# NOTE: Directories must be listed in order such that a directory's
# parent is listed before the directory.
AUXDOCDIRS =
#####################################################################################
# Everything below this point is auto-generated and shouldn't be
# touched.
#####################################################################################
#######################
# Auto-generated directory and file lists.
#######################
# Various collections of absolute directories, autogenerated.
SOURCEDIRS = $(SRCDIR) $(foreach DIR,$(PACKDIRS),$(SRCDIR)/$(DIR))
REALSOURCEDIRS = $(SRCDIR) $(foreach\
DIR,$(REALPACKDIRS),$(SRCDIR)/$(DIR))
CLASSDIRS = $(CLASSDIR) $(foreach DIR,$(PACKDIRS),$(CLASSDIR)/$(DIR))
DOCDIRS = $(DOCSDIR) $(foreach DIR,$(PACKDIRS),$(DOCSDIR)/$(DIR))
AUXSRCDIRS = $(foreach DIR,$(AUXDIRS),$(SRCDIR)/$(DIR))
AUXOUTDIRS = $(foreach DIR,$(AUXDIRS),$(CLASSDIR)/$(DIR))
AUXDOCSRCDIRS = $(foreach DIR,$(AUXDOCDIRS),$(SRCDIR)/$(DIR))
AUXDOCOUTDIRS = $(foreach DIR,$(AUXDOCDIRS),$(CLASSDIR)/$(DIR))
# Lists of source files, autogenerated.
CODESOURCEFILES = $(foreach DIR,$(SOURCEDIRS),$(wildcard\
$(DIR)/*.java))
DOCSOURCEFILES = $(CODESOURCEFILES) $(foreach\
DIR,$(SOURCEDIRS),$(wildcard $(DIR)/*.html))\
$(foreach DIR,$(AUXDOCSRCDIRS),$(wildcard $(DIR)/*))
AUXSRCFILES = $(foreach DIR,$(AUXSRCDIRS),$(wildcard $(DIR)/*))
ALLSOURCEFILES = $(foreach DIR,$(SOURCEDIRS),$(wildcard $(DIR)/*))
ALLSOURCEFILESREL = $(foreach SOURCE,$(ALLSOURCEFILES),$(subst\
$(SOURCEJARBASE)/,,$(AUX)))
MANIFESTFILE = $(SRCDIR)/Manifest-Info
# Lists of class files, autogenerated.
CLASSFILES = $(foreach SOURCE,$(CODESOURCEFILES),$(subst\
$(SRCDIR),$(CLASSDIR),$(subst .java,.class,$(SOURCE))))
CLASSFILESX = $(foreach DIR,$(CLASSDIRS),$(wildcard $(DIR)/*.class))
CLASSFILESREL = $(foreach CLASS,$(CLASSFILESX),$(subst\
$(CODEJARBASE)/,,$(CLASS)))
# Lists of auxiliary output files, autogenerated.
AUXOUTFILES = $(foreach DIR,$(AUXOUTDIRS),$(wildcard $(DIR)/*))
AUXOUTFILESREL = $(foreach AUX,$(AUXOUTFILES),$(subst\
$(CODEJARBASE)/,,$(AUX)))
# Lists of doc output files, autogenerated.
# DOCTARGETFILES = $(MISCHTMLDOCFILES) $(CLASSDOCFILES)\
$(CLASSUSEDOCFILES) $(PACKAGEHTMLDOCFILES)
DOCTARGETFILE = $(DOCSDIR)/allclasses-frame.html
DOCFILES = $(MISCDOCFILES) $(CLASSDOCFILES) $(CLASSUSEDOCFILES)\
$(PACKAGEDOCFILES) $(AUXDOCFILES)
DOCFILESREL = $(foreach DOC,$(DOCFILES),$(subst\
$(DOCSJARBASE)/,,$(AUX)))
# Used in generating the above.
CLASSDOCFILES = $(foreach SOURCE,$(CODESOURCEFILES),$(subst\
$(SRCDIR),$(DOCSDIR),$(subst .java,.html,$(SOURCE))))
CLASSUSEDOCFILES = $(foreach SOURCE,$(CODESOURCEFILES),$(dir\
SOURCE)class-use/$(subst .java,.html,$(notdir $(SOURCE))))
PACKAGEHTMLDOCFILES = $(PACKAGESUMMARYDOCFILES)\
$(PACKAGEFRAMEDOCFILES) $(PACKAGETREEDOCFILES)
PACKAGEDOCFILES = $(PACKAGESUMMARYDOCFILES) $(PACKAGEFRAMEDOCFILES)\
$(PACKAGETREEDOCFILES) $(PACKAGEUSEDOCFILES)
PACKAGESUMMARYDOCFILES = $(foreach\
DIR,$(REALPACKDIRS),$(DOCSDIR)/$(DIR)/package-summary.html)
PACKAGEFRAMEDOCFILES = $(foreach\
DIR,$(REALPACKDIRS),$(DOCSDIR)/$(DIR)/package-frame.html)
PACKAGETREEDOCFILES = $(foreach\
DIR,$(REALPACKDIRS),$(DOCSDIR)/$(DIR)/package-tree.html)
PACKAGEUSEDOCFILES = $(foreach\
DIR,$(REALPACKDIRS),$(DOCSDIR)/$(DIR)/package-use)
AUXDOCFILES = $(foreach DIR,$(AUXDOCOUTDIRS),$(wildcard $(DIR)/*))
MISCDOCFILES1 = index.html overview-summary.html overview-tree.html\
deprecated-list.html serialized-form.html\
overview-frame.html allclasses-frame.html help-doc.html\
index-all.html package-list stylesheet.css
MISCDOCFILES = $(foreach DOC,$(MISCDOCFILES1),$(DOCSDIR)/$(DOC))
MISCHTMLDOCFILES1 = index.html overview-summary.html\
overview-tree.html deprecated-list.html serialized-form.html\
overview-frame.html allclasses-frame.html help-doc.html index-all.html
MISCHTMLDOCFILES = $(foreach\
DOC,$(MISCHTMLDOCFILES1),$(DOCSDIR)/$(DOC))
#######################
# Jar fully-qualified names, autogenerated.
#######################
CODEJAR = $(CODEJARDIR)/$(CODEJARNAME).jar
DOCSJAR = $(DOCSJARDIR)/$(DOCSJARNAME).jar
SOURCEJAR = $(SOURCEJARDIR)/$(SOURCEJARNAME).jar
#######################
# Miscellaneous auto-generated variables.
#######################
define LINEFEED
endef
##########################################################################################
# Rules for making the program, source, and documentation jars
# for Protomatter
##########################################################################################
#######################
# Rule to rebuild everything.
#######################
# Comprehensive target -- creates program, API doc, and source jars.
.PHONY: all
all: $(CODEJAR) $(DOCSJAR) $(SOURCEJAR)
#######################
# Rules to build program jar.
#######################
# compiles code and updates executable jar
$(CODEJAR): $(CLASSFILES) $(AUXOUTFILES) $(MANIFESTFILE)
jar cmfu $(MANIFESTFILE) $(CODEJAR) -C $(CODEJARBASE)\
$(CLASSFILESREL) $(AUXOUTFILESREL)
# compiles the Java source files
$(CLASSFILES): $(CODESOURCEFILES)
javac $(COMPILEOPTIONS) -sourcepath $(SRCDIR) -d $(CLASSDIR)\
$(subst $(CLASSDIR)/,,$(subst .class,.java,$@))
# copies everything in the aux dirs under source into the same dirs
# under classes
$(AUXOUTFILES): $(AUXSRCFILES)
copy $(subst $(CLASSDIR),$(SRCDIR),$@) $@
#######################
# Rules to rebuild API docs archive.
#######################
# Redoes API documentation from scratch if any source files have
# changed. Unfortunately, there's no way for make to tell
# that it only needs to do this if the doc comments have changed --
# or for that matter for it to tell whether doc
# comments haven't changed. :-)
# Makes API docs jar
$(DOCSJAR): $(DOCTARGETFILE)
jar cfu $(DOCSJAR) -C $(DOCSJARBASE) $(DOCFILESREL)
# Makes API docs
$(DOCTARGETFILE): $(DOCSOURCEFILES) \
javadoc -sourcepath $(SRCDIR)\
-overview $(SRCDIR)/pgd/protomatter/overview.html\
-d $(SRCDIR)/docs\
-use -version -author\
-windowtitle $(WINDOWTITLE)\
-doctitle $(DOCTITLE)\
-header $(HFTEXT)\
-footer $(HFTEXT)\
-link $(JAVAURL)\
-group "Protomatter Application Core"\
"pgd.protomatter*"\
-group "Fractal Types" "pgd.fractal*"\
-serialwarn\
$(PACKAGES)
#######################
# Rule to rebuild source archive.
#######################
# Constructs source jar
$(SOURCEJAR): $(ALLSOURCEFILES)
jar cfu $(SOURCEJAR) -C $(SOURCEJARBASE) $(ALLSOURCEFILESREL)
- Raw text -