#
# Makefile for the Calendar Tool Java implementation.
#

# CSC 206 java lib directory
LIB206 =	/users/gfisher/classes/206/lib/JVM

# Directory for generated executable files
EXECUTABLES =	../../executables/JVM

# Files to compile
FILES = \
		caltool/*.java \
		caltool/admin/*.java \
		caltool/admin/administrator/*.java \
		caltool/admin/user/*.java \
		caltool/admin_ui/*.java \
		caltool/admin_ui/administrator_ui/*.java \
		caltool/admin_ui/user_ui/*.java \
		caltool/caldb/*.java \
		caltool/caltool_ui/*.java \
		caltool/edit/*.java \
		caltool/edit_ui/*.java \
		caltool/file/*.java \
		caltool/file_ui/*.java \
		caltool/help/*.java \
		caltool/help_ui/*.java \
		caltool/options/*.java \
		caltool/options_ui/*.java \
		caltool/schedule/*.java \
		caltool/schedule_ui/*.java \
		caltool/server/*.java \
		caltool/view/*.java \
		caltool/view_ui/*.java

# List of packages
PACKAGES = \
		caltool \
		caltool/admin \
		caltool/admin/administrator \
		caltool/admin/user \
		caltool/admin_ui \
		caltool/admin_ui/administrator_ui \
		caltool/admin_ui/user_ui \
		caltool/caldb \
		caltool/caltool_ui \
		caltool/edit \
		caltool/edit_ui \
		caltool/file \
		caltool/file_ui \
		caltool/help \
		caltool/help_ui \
		caltool/options \
		caltool/options_ui \
		caltool/schedule \
		caltool/schedule_ui \
		caltool/server \
		caltool/view \
		caltool/view_ui

# Run the Java compiler on all of the files.
rall:	$(FILES)
#	echo $(FILES)
	javac -g \
	  -classpath $(LIB206) \
	  -d $(EXECUTABLES) \
		$(FILES)
	cd $(EXECUTABLES); make


# The preceding rule results in an executable program that is invoked as
# follows from the implementation/executables/JVM directory:
#
#     java caltool.Main
#
# The makefile in that dir has more information about altenate forms of java
# program invocation.

# Compile with the gnu java compiler.
gcj:	$(FILES)
#	echo $(FILES)
	gcj -g \
	  -classpath $(LIB206):. \
	  -d $(EXECUTABLES) \
	  --main=Main \
		$(FILES)

# Compile and JML check just the Schedule.java class.
sched:
	javac 


# Generate a source dir command for emacs jdb debugging.
emacs-jdb:
	csh -q -c ".make-emacs-jdb-dirs $(PACKAGES)"

# Run the Java compiler on all of the files, putting the class files in this
# source dir, where bluej wants them.
bluej:	$(FILES)
#	echo $(FILES)
	javac -g \
	  -classpath $(LIB206) \
	  -d . \
		$(FILES)
	cd $(EXECUTABLES); make exec

# Print source files in small-font, line-numbered, two-column format.
print:
	csh -q -c ".make-print $(PACKAGES)"


# Echo the package names for use in command-line processing of all packages,
# such as copying a uniform .cvsignore file into each package dir.
echop:
	@echo $(PACKAGES)


# Remove all .class files from the executables/JVM dir.
clean:
	csh -q -c ".make-clean"

# Remove all .class files from this dir.
cleanbluej:
	csh -q -c ".make-clean-bluej"