<?xml version="1.0"?>
<project name="ocelet-compiler" default="all" basedir=".">
  <property name="tatoo.dir" location="build/lib"/>
  <property name="tatoo.jar" location="${tatoo.dir}/tatoo.jar"/>
  <property name="tatoo-runtime-plugin.jar" location="lib/tatoo-runtime-plugin.jar"/>
  
  <property name="jsr-275.jar" location="lib/jsr-275.jar"/>
	
  <property name="pellet-core.jar" location="lib/pellet-core.jar"/>
  <property name="pellet-explanation.jar" location="lib/pellet-explanation.jar"/>
  <property name="pellet-owlapi.jar" location="lib/pellet-owlapi.jar"/>
  <property name="owlapi-bin.jar" location="lib/owlapi-bin.jar"/>
  <property name="lib" location="lib" />
  
  <property name="javac.jar" location="lib/javac.jar"/>
  	
  <property name="src" value="src"/>
  <property name="classes" value="classes"/>
  <property name="gen-src" value="gen-src"/>
  <property name="ext-src" value="build/src"/>
  <property name="ext-classes" value="build/classes"/>
  <property name="ebnf.file" value="ocelet.ebnf"/>
  <property name="dist.jar" location="lib/ocelet-compiler.jar"/>
  	
  <property name="lexer.package" value="fr.umlv.ocelet.compiler.lexer"/>
  <property name="parser.package" value="fr.umlv.ocelet.compiler.parser"/>
  <property name="tools.package" value="fr.umlv.ocelet.compiler.tools"/>
  <property name="ast.package" value="fr.umlv.ocelet.compiler.ast"/>
  
	<target name="tasks" depends="prepare-extension">
	    <taskdef name="ebnf" classname="fr.umlv.tatoo.cc.ebnf.main.EBNFTask">
	      <classpath>
	        <pathelement location="${tatoo.jar}"/>
	        <pathelement location="${ext-classes}"/>
	      </classpath>
	    </taskdef>
	  </target>
	
  <target name="prepare-extension">
    <mkdir dir="${ext-classes}"/>
    
    <javac debug="true" srcdir="${ext-src}" destdir="${ext-classes}" source="1.6" target="1.6">
      <classpath path="${tatoo.jar}"/>
      <compilerarg value="-Xlint:all"/>
    </javac>
    <copy todir="${ext-classes}">
        <fileset dir="${ext-src}">
            <exclude name="**/*.java"/>
            <exclude name="**/.svn"/>
        </fileset>
    </copy>
  </target>
  	
  <target name="ebnf" depends="tasks, clean">
	<ebnf destination="${gen-src}" ebnfFile="${ebnf.file}"  parserType="lalr"
	      generateast="true"
		  logfile="log.html" loglevel="ALL">
		<package lexer="${lexer.package}"/>
		<package parser="${parser.package}"/>
		<package tools="${tools.package}"/>
		<package ast="${ast.package}"/>
		
		<!-- add extensions support -->
		<extension classname="fr.umlv.tatoo.cc.plugin.PluginExtension"/>
		<extension classname="fr.umlv.ocelet.compiler.tatoo.ext.ToolsExtension"/>
	</ebnf>
  </target>
	
  <target name="all" depends="jar">
  </target>
	
	<target name="compile" depends="ebnf">
	  <mkdir dir="${classes}"/>

	  <javac debug="true" srcdir="${src}:${gen-src}" destdir="${classes}" source="1.6" target="1.6">
		  <!-- classpath path="${tatoo-runtime.jar}"/ -->
	  	  <!-- classpath path="${tatoo-runtime-plugin.jar}:${jsr-275.jar}"/ -->
                  <classpath>
                    <pathelement location="${tatoo-runtime-plugin.jar}"/>
                    <pathelement location="${jsr-275.jar}"/>
                  	
                  	<!-- compiler pellet dependencies -->
                  	<pathelement location="${pellet-core.jar}"/>
                        <pathelement location="${pellet-explanation.jar}"/>
                  	<pathelement location="${pellet-owlapi.jar}"/>
                  	<pathelement location="${owlapi-bin.jar}"/>
                  	
                  	<!-- compiler javac dependency -->
                  	<pathelement location="${javac.jar}"/>
                  </classpath>

		  <compilerarg value="-Xlint:deprecation"/>
	  </javac>

	</target>
	
	<target name="jar" depends="compile,jar-nocompile">
	</target>
	
	<target name="jar-nocompile">
			<jar basedir="${classes}" destfile="${dist.jar}">
				<zipgroupfileset dir="${lib}" includes="*.jar" />
				<manifest>
		          <attribute name="Class-Path" value="tatoo-runtime-plugin.jar jsr-275.jar pellet-core.jar pellet-explanation.jar pellet-owlapi.jar owlapi-bin.jar pellet-rules.jar pellet-datatypes.jar relaxngDatatype.jar xsdlib.jar aterm-java-1.6.jar pellet-el.jar javac.jar"/>
		          <attribute name="Main-Class" value="fr.ocelet.compiler.comp.Main"/>
				</manifest>
			</jar>
	</target>
	
	<target name="distrib" depends="jar">
		<mkdir dir="dist/ocelet-compiler"/>
		<copy todir="dist/ocelet-compiler">
		    <fileset dir="."
		    	     includes="${src}/**, ${gen-src}/**, ${ext-src}/**, lib/**, build/lib/**, ${ebnf.file}, build.xml, compile-eclipse.sh, *.txt"        
		    	     excludes="**/*.class"/>
		</copy>
		<zip destfile="ocelet-compiler.zip" 
		     basedir="dist/"
		  />
		<delete dir="dist/"/>
	</target>
	
	<target name="clean">
		<delete dir="${classes}"/>
		<delete dir="${gen-src}"/>
		<!-- not to break eclipse source folders -->
		<mkdir dir="${gen-src}"/>
	</target>
</project>
