###########################################################
# Makefile for the XSLT engine.
#
# See ../Makefile for important environment notes
#
###########################################################

# Include common targets and variables
include ../make.include

SINCE_FILE       = sincexslt.last

# Define our directory structure
COMPATDIR = org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt
COMPATXPATHDIR = org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath
XPATHDIR = org$(PATHSEP)apache$(PATHSEP)xpath
XMLLIAISONDIR = org$(PATHSEP)apache$(PATHSEP)xpath$(PATHSEP)xml
XSLT4JDIR = org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt
TRANSFORMERDIR = $(PROJDIR)$(PATHSEP)transformer
PROCESSORDIR = $(PROJDIR)$(PATHSEP)processor
TEMPLATESDIR = $(PROJDIR)$(PATHSEP)templates
EXTENSIONSDIR = $(PROJDIR)$(PATHSEP)extensions
CLIENTDIR = $(PROJDIR)$(PATHSEP)client
LIBDIR = $(PROJDIR)$(PATHSEP)lib
TRACEDIR = $(PROJDIR)$(PATHSEP)trace
RESDIR = $(PROJDIR)$(PATHSEP)res
STREEDIR = $(PROJDIR)$(PATHSEP)stree
SUBDIRS = 

SRCS = \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLTEngineImpl.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLTInputSource.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLTProcessor.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLTProcessorFactory.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLTResultTarget.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)StylesheetRoot.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)StylesheetHandler.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLProcessorVersion.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)ElemExtensionCall.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)XSLProcessorContext.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)XObject.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)XString.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)FormatterToXML.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)FormatterToHTML.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)FormatterToDOM.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)ProblemListener.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)ProblemListenerDefault.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)TreeWalker.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)XMLParserLiaison.java \
  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xpath$(PATHSEP)xml$(PATHSEP)FormatterToText.java
  
  
  
  
  
    
OBJS = $($(subst /,\\,$(SRCS)):%.java=classes/%.class)

all: sincelast makesubdirs

clean::
	$(RM) $(COMPATDIR)/XSLTEngineImpl.class \
        $(RM) $(COMPATDIR)/XSLTResultTarget.class \
        $(RM) $(COMPATDIR)/StylesheetRoot.class \
        $(RM) $(COMPATDIR)/StylesheetHandler.class \
        $(RM) $(COMPATDIR)/XSLProcessorVersion.class \
        $(RM) $(COMPATDIR)/XSLTInputSource.class \
        $(RM) $(COMPATDIR)/XSLTProcessor.class \
        $(RM) $(COMPATDIR)/XSLTProcessorFactory.class \
        $(RM) $(COMPATDIR)/ElemExtensionCall.class \
        $(RM) $(COMPATDIR)/XSLProcessorContext.class \
        $(RM) $(COMPATXPATHDIR)/*.class \
        $(RM) $(CLASS_DIR)/$(COMPATXPATHDIR)/*/*.class \
        $(SINCE_FILE)

include ../make.include2
