###########################################################
# Common definitions and main 'compile' rule for xpath and xslt.
#
# See Makefile for important environment notes
# 
###########################################################

# Note this is separate from the variable in make.include
CLASSESDIR = classes

# Add other required dirs to the classpath
XML4J_CLASSPATH := ..$(PATHSEP)..$(PATHSEP)..$(PATHSEP)xml-xerces$(PATHSEP)java$(PATHSEP)bin$(PATHSEP)xerces.jar
BSF_CLASSPATH := ..$(PATHSEP)bin$(PATHSEP)bsf.jar
# Add . (current dir) to end of classpath to help 1.1.x compilers find all the source files, thanks to Sean Timm
EXTRA_CLASSPATH := $(XML4J_CLASSPATH)$(CLPATHSEP)$(BSF_CLASSPATH)$(CLPATHSEP)$(CLASSESDIR)$(CLPATHSEP)$(CLASSPATH)$(CLPATHSEP).

sincelast: $(SINCE_FILE)
$(SINCE_FILE): $(SRCS)
	-mkdir $(CLASSESDIR)
	$(JAVAC) $(JAVACFLAGS) -classpath "$(EXTRA_CLASSPATH)" $?
	touch $(SINCE_FILE)


