# Copyright (c) 1996-2002 Brian D. Carlstrom

# cd c:/home/bdc-scheme/; /cygwin/bin/make
# c:/j2sdk1.4.1_01/bin/java.exe -jar scheme.jar
JDK:=c:/j2sdk1.4.1_01/

OUTPUT  :=output
DOCS    :=docs
JARFILE :=scheme.jar

MANIFEST:=bdc/scheme/manifest.mf

JDKBIN:=$(JDK)/bin
JAVA:=$(JDKBIN)/java
JAVAC:=$(JDKBIN)/javac
JAVADOC:=$(JDKBIN)/javadoc
JAR:=$(JDKBIN)/jar

BASENAME := basename
CP    	 := cp
ECHO  	 := echo
FIND  	 := find
GREP  	 := grep
MKDIR 	 := mkdir -p
PWD   	 := pwd
RM    	 := rm -f
XARGS 	 := xargs
ZIP   	 := zip

CWD := $(shell $(PWD))

SRC:= $(addprefix $(CWD)/,$(shell echo \
	bdc/util/*.java \
	bdc/scheme/*.java \
	bdc/scheme/exception/*.java \
	bdc/scheme/expression/*.java \
	bdc/scheme/compiler/*.java \
	bdc/scheme/procedure/*.java \
))

.PHONY: all
all: $(JARFILE)

$(JARFILE): $(SRC)
	@$(ECHO) Building $@ with $(JDK)...
	@$(MKDIR) $(OUTPUT)
	@$(JAVAC) -d $(OUTPUT) $(SRC)
	$(JAR) cmf $(MANIFEST) $@ bdc/scheme/system.scm bdc/scheme/util.scm -C $(OUTPUT) .
	$(JAR) i $@

.PHONY: clean
clean:
	$(RM) -r $(OUTPUT)
	$(RM) $(JARFILE)
	$(RM) -r $(DOCS)
	$(FIND) . -name '*~' | $(XARGS) $(RM)

.PHONY: javadoc
javadoc:
	$(JAVADOC) \
		-d $(DOCS) \
		-subpackages bdc \
		-private \
		-use \
		-splitindex \
		-link http://java.sun.com/j2se/1.4/docs/api

.PHONY: test
test: $(JARFILE)
	$(JAVA) -jar $< bdc/scheme/scmtest.scm

.PHONY: release
release: clean
	DIR=`basename $(CWD)`; \
	cd ..; \
	$(ZIP) -r $${DIR}.zip $${DIR}
