# GNUmakefile for DemeterJ. # $Id: GNUmakefile,v 1.102 2003/01/31 01:01:48 dougo Exp $ # The program name. PROG = demeterj # The program version number. VERSION = 0.8.6 # The directory into which .class files are generated. CLASSDIR = ../classes # The jar files containing all the classes. RTJAR = ../rt.jar PROGJAR = ../$(PROG).jar STUDIOJAR = ../apstudio.jar JARFILES = $(RTJAR) $(PROGJAR) $(STUDIOJAR) # The directory in which to release the distribution tree. RELEASEDIR = ../../$(PROG)-$(VERSION) # The files to copy to the release directory. # FIXME: leave out subdir stuff, get them with recursive 'make release' RELEASEFILES = \ README README.studio COPYRIGHT \ $(addprefix src/,README BUGS CHANGES \ $(JARFILES) $(PROG).prj $(PROG).cd *.beh $(TOPLEVELSRC) $(RIDLSRC) \ $(addprefix tg/,tg.cd tg.beh tg.prj GNUmakefile) \ $(addprefix aplib/cd/,cd.cd cd.prj GNUmakefile) \ $(addprefix aplib/sg/,sg.cd sg.prj GNUmakefile) \ $(addprefix generate/,generate.cd generate.prj GNUmakefile) \ $(addprefix weave/,weaver.cd weaver.prj GNUmakefile) \ $(addprefix cool/,cool.cd cool.prj GNUmakefile) \ $(addprefix ridler/,RIDL.cd ridler.prj GNUmakefile about.tex designnotes ) \ $(addprefix studio/,studio.cd studio.prj GNUmakefile) \ aplib/GNUmakefile aplib/*.java aplib/cd/*.beh aplib/sg/*.beh \ dj/GNUmakefile dj/*.java generate/*.beh weave/*.beh \ cool/*.beh ridler/*.beh \ studio/*.beh studio/graphedit/*.java studio/ui/*.java \ studio/util/*.java \ GNUmakefile \ selftest/GNUmakefile \ selftest/selftest/GNUmakefile \ selftest/selftest/selftest/GNUmakefile \ ) \ bin/README bin/$(PROG) bin/$(PROG).bat \ images/*.gif \ help/????* \ doc # All the classes needed for the program. CLASSPATH = $(CLASSDIR) # The package of the top-level classes. TOPLEVEL_PACKAGE = edu.neu.ccs.demeter # The package of the RIDL runtime classes. (Why is this different??) RIDL_PACKAGE = RIDL_Runtime # The packages of the main program classes. PROG_PACKAGES = $(addprefix $(TOPLEVEL_PACKAGE).tools.,\ $(PROG) generate cool ridler weave) # The package of the AP Studio classes. STUDIO_PACKAGES = edu.neu.ccs.demeter.tools.apstudio # Subdirectories containing sub-packages. SUBDIRS = tg aplib dj generate cool ridler weave studio # Subdirectories containing tests. TESTS = selftest # compiler JAVAC = CLASSPATH=$(CLASSPATH) javac -J-mx64m -deprecation -g -d $(CLASSDIR) # Pizza compiler: #JAVAC = CLASSPATH=$(CLASSPATH) pc -nowarn -J-mx32m -java -g -d $(CLASSDIR) # Generic Java compiler: #JAVAC = CLASSPATH=$(CLASSPATH) gjc -nowarn -J-mx32m -java -g -d $(CLASSDIR) # Jikes: #JAVAC = JIKESPATH=$(CLASSPATH):$$JIKESPATH jikes -depend -g +E -d $(CLASSDIR) # Remote method wrapper generator: RMIC = CLASSPATH=$(CLASSPATH) rmic -J-mx32m -g -d $(CLASSDIR) # archive tool JAR = jar cf # DemeterJ DEMETERJ = demeterj TOPLEVEL_PACKAGE_DIR = $(subst .,/,$(TOPLEVEL_PACKAGE)) RIDL_PACKAGE_DIR = $(subst .,/,$(RIDL_PACKAGE)) LIB_PACKAGE_DIRS = $(addprefix $(TOPLEVEL_PACKAGE_DIR)/,common/tg aplib dj) PROG_PACKAGE_DIRS = $(subst .,/,$(PROG_PACKAGES)) STUDIO_PACKAGE_DIRS = $(subst .,/,$(STUDIO_PACKAGES)) MKDIR = mkdir -m 755 -p RELEASE = release # Stuff in the top level package: TOPLEVELSRC = Text.java Ident.java Line.java Word.java \ AroundContinuation.java Graph.java RIDLSRC = RIDL_Naming.java RIDL_RN.java \ RIDL_RemoteInst.java RIDL_RI.java \ RIDL_Object.java RIDL_ObjectP.java RIDL_ObjectPP.java # these get rmic'ed RIDLRMI = RIDL_Naming.java RIDL_RemoteInst.java TOPLEVELCLASSES = $(addprefix $(TOPLEVEL_PACKAGE_DIR)/,$(TOPLEVELSRC:.java=.class)) RIDLCLASSES = $(addprefix $(RIDL_PACKAGE_DIR)/,$(RIDLSRC:.java=.class)) RIDLRMISTUBCLASSES = $(addprefix $(RIDL_PACKAGE_DIR)/,$(RIDLRMI:.java=_Stub.class)) RIDLRMISKELCLASSES = $(addprefix $(RIDL_PACKAGE_DIR)/,$(RIDLRMI:.java=_Skel.class)) RIDLRMICLASSNAMES = $(addprefix $(RIDL_PACKAGE).,$(RIDLRMI:.java=)) # Stuff in rt.jar: RTCLASSES = $(TOPLEVELCLASSES) $(RIDLCLASSES) \ $(RIDLRMISTUBCLASSES) $(RIDLRMISKELCLASSES) \ $(LIB_PACKAGE_DIRS) TOPLEVELTARGET = $(addprefix $(CLASSDIR)/,$(TOPLEVELCLASSES)) RIDLTARGET = $(addprefix $(CLASSDIR)/,$(RIDLCLASSES)) JAVADOC = javadoc -J-Xmx128m JAVADOCLINK = http://java.sun.com/j2se/1.4/docs/api/ DOCDIR = ../doc # The packages to be documented by javadoc. DOC_PACKAGES = $(TOPLEVEL_PACKAGE) $(RIDL_PACKAGE) \ $(addprefix $(TOPLEVEL_PACKAGE).,\ aplib aplib.cd aplib.sg dj) all: compile jars doc jars: rmjars $(JARFILES) $(RTJAR): cd $(CLASSDIR); $(JAR) $@ $(RTCLASSES) $(PROGJAR): cd $(CLASSDIR); $(JAR) $@ $(PROG_PACKAGE_DIRS) $(STUDIOJAR): cd $(CLASSDIR); $(JAR) $@ $(STUDIO_PACKAGE_DIRS) compile: $(TOPLEVELTARGET) $(RIDLTARGET) $(SUBDIRS) CLASSPATH=$(CLASSPATH):$(JIKESPATH) $(DEMETERJ) -verbose compile $(SUBDIRS): cd $@; $(MAKE) $(TOPLEVELTARGET): $(CLASSDIR)/$(TOPLEVEL_PACKAGE_DIR)/%.class: %.java @$(MKDIR) $(CLASSDIR) $(JAVAC) $< $(RIDLTARGET): $(CLASSDIR)/$(RIDL_PACKAGE_DIR)/%.class: %.java @$(MKDIR) $(CLASSDIR) $(JAVAC) $(RIDLSRC) $(RMIC) $(RIDLRMICLASSNAMES) touch $(RIDLTARGET) $(TESTS): compile cd $@; $(MAKE) test tao-test: compile cd selftest; $(MAKE) $@ # FIXME: this should do a recursive 'make release' in the # subdirectories to figure out what files need to be copied. release: @chmod -R +w $(RELEASEDIR) $(RM) -r $(RELEASEDIR) $(MKDIR) $(RELEASEDIR) @(cd ..; tar cf - $(RELEASEFILES)) | (cd $(RELEASEDIR); tar xvf -) @chmod -R a+r $(addprefix $(RELEASEDIR)/,$(RELEASEFILES)) @chmod -R a-w $(addprefix $(RELEASEDIR)/,$(RELEASEFILES)) @echo Don\'t forget to tag the cvs tree "(release-$(subst .,-,$(VERSION)))." doc: rmdoc links @$(MKDIR) -p $(DOCDIR) $(JAVADOC) -windowtitle "Demeter software" -d $(DOCDIR) \ -link $(JAVADOCLINK) -breakiterator -source 1.4 \ -sourcepath links $(DOC_PACKAGES) links: rmlinks @$(MKDIR) -p links/edu/neu/ccs/demeter/aplib/cd @$(MKDIR) -p links/edu/neu/ccs/demeter/aplib/sg @$(MKDIR) -p links/edu/neu/ccs/demeter/dj @$(MKDIR) -p links/RIDL_Runtime @for f in aplib/*.java ; do \ ln -s ../../../../../../$$f links/edu/neu/ccs/demeter/aplib; \ done @for f in aplib/cd/gen/*.java ; do \ ln -s ../../../../../../../$$f links/edu/neu/ccs/demeter/aplib/cd; \ done @for f in aplib/sg/gen/*.java ; do \ ln -s ../../../../../../../$$f links/edu/neu/ccs/demeter/aplib/sg; \ done @for f in dj/*.java ; do \ ln -s ../../../../../../$$f links/edu/neu/ccs/demeter/dj; \ done @for f in *.java ; do \ ln -s ../../../../../$$f links/edu/neu/ccs/demeter; \ done @$(RM) links/edu/neu/ccs/demeter/RIDL*.java @for f in RIDL*.java ; do \ ln -s ../../$$f links/RIDL_Runtime; \ done clean: rmgen rmjars rmlinks rmdoc rmgen: for i in $(TESTS) $(SUBDIRS) ; do cd $$i; $(MAKE) clean; cd ..; done $(DEMETERJ) clean $(RM) *~ core rmjars: $(RM) $(JARFILES) rmlinks: $(RM) -r links rmdoc: $(RM) -r $(DOCDIR) new: clean all .PHONY: all $(SUBDIRS) $(TESTS) release clean rmgen rmjars new