<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
 ~ Licensed to the Apache Software Foundation (ASF) under one
 ~ or more contributor license agreements.  See the NOTICE file
 ~ distributed with this work for additional information
 ~ regarding copyright ownership.  The ASF licenses this file
 ~ to you under the Apache License, Version 2.0 (the
 ~ "License"); you may not use this file except in compliance
 ~ with the License.  You may obtain a copy of the License at
 ~
 ~    http://www.apache.org/licenses/LICENSE-2.0
 ~
 ~ Unless required by applicable law or agreed to in writing,
 ~ software distributed under the License is distributed on an
 ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 ~ KIND, either express or implied.  See the License for the
 ~ specific language governing permissions and limitations
 ~ under the License.
 -->
<project basedir="." default="build" name="apache-cassandra-incubating">
    <property environment="env"/>
    <property name="debuglevel" value="source,lines,vars"/>

    <property name="basedir" value="."/>
    <property name="build.src" value="${basedir}/src/java"/>
    <property name="build.src.gen-java" value="${basedir}/src/gen-java"/>
    <property name="build.lib" value="${basedir}/lib"/>
    <property name="build.dir" value="${basedir}/build"/>
    <property name="build.test.dir" value="${build.dir}/test"/>
    <property name="build.classes" value="${build.dir}/classes"/>
    <property name="javadoc.dir" value="${build.dir}/javadoc"/>
    <property name="interface.dir" value="${basedir}/interface"/>
    <property name="interface.src.dir" value="${interface.dir}/gen-java"/>
    <property name="test.dir" value="${basedir}/test"/>
    <property name="test.classes" value="${build.dir}/test/classes"/>
    <property name="test.conf" value="${test.dir}/conf"/>
    <property name="test.name" value="*Test"/>
    <property name="test.unit.src" value="${test.dir}/unit"/>
    <property name="dist.dir" value="${build.dir}/dist"/>
    <property name="version" value="0.3.0"/>
    <property name="final.name" value="${ant.project.name}-${version}"/>

    <!-- http://cobertura.sourceforge.net/ -->
    <property name="cobertura.build.dir" value="${build.dir}/cobertura"/>
    <!-- can't include due to licensing, specify jar via command line -->
    <property name="cobertura.dir" value="/tmp"/>
    <property name="cobertura.report.dir" value="${cobertura.build.dir}/report"/>
    <property name="cobertura.classes.dir" value="${cobertura.build.dir}/classes"/>
    <property name="cobertura.datafile" value="${cobertura.build.dir}/cobertura.ser"/>
	
    <!-- 
	 Add all the dependencies.
    -->
    <path id="cassandra.classpath">
        <pathelement location="${cobertura.classes.dir}"/>
        <pathelement location="${build.classes}"/>
        <fileset dir="${build.lib}">
          <include name="**/*.jar" />
        </fileset>
    </path>

    <!--
	Setup the output directories.
    -->
    <target name="init">
        <mkdir dir="${build.classes}"/>
        <mkdir dir="${test.classes}"/>
        <mkdir dir="${build.src.gen-java}"/>
    </target>

    <target name="clean">
        <delete dir="${build.dir}" />
        <delete dir="${build.src.gen-java}" />
    </target>
    <target depends="clean" name="cleanall"/>

    <!--
       This generates the CLI grammar files from Cli.g
    -->
    <target name="check-gen-cli-grammar">
        <uptodate property="cliUpToDate" 
                srcfile="${build.src}/org/apache/cassandra/cli/Cli.g" 
                targetfile="${build.src.gen-java}/org/apache/cassandra/cli/Cli.tokens"/>
    </target>
 
    <target name="gen-cli-grammar" depends="check-gen-cli-grammar" unless="cliUpToDate">
      <echo>Building Grammar ${build.src}/org/apache/cassandra/cli/Cli.g  ....</echo>
      <java classname="org.antlr.Tool"
            classpath="${build.lib}/antlr-3.1.3.jar"
            fork="true">
         <arg value="${build.src}/org/apache/cassandra/cli/Cli.g" />
         <arg value="-fo" />
         <arg value="${build.src.gen-java}/org/apache/cassandra/cli/" />
      </java> 
    </target>

    <!--
       This generates the CQL grammar files from Cql.g
    -->
    <target name="check-gen-cql-grammar">
        <uptodate property="cqlUpToDate" 
                srcfile="${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g" 
                targetfile="${build.src.gen-java}/org/apache/cassandra/cql/compiler/parse/Cql.tokens"/>
    </target>
 
    <target name="gen-cql-grammar" depends="check-gen-cql-grammar" unless="cqlUpToDate">
      <echo>Building Grammar ${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g  ....</echo>
      <java classname="org.antlr.Tool"
            classpath="${build.lib}/antlr-3.1.3.jar"
            fork="true">
         <arg value="${build.src}/org/apache/cassandra/cql/compiler/parse/Cql.g" />
         <arg value="-fo" />
         <arg value="${build.src.gen-java}/org/apache/cassandra/cql/compiler/parse/" />
      </java> 
    </target>

    <!--
	The build target builds all the .class files
    -->
    <target name="build" depends="build-subprojects,build-project"/>
    <target name="build-subprojects"/>
    <target name="codecoverage" depends="cobertura-instrument,test,cobertura-report"/>
    	
    <target depends="init,gen-cli-grammar,gen-cql-grammar" name="build-project">
        <echo message="${ant.project.name}: ${ant.file}"/>
        <javac debug="true" debuglevel="${debuglevel}" destdir="${build.classes}">
            <src path="${build.src}"/>
            <src path="${build.src.gen-java}"/>
            <src path="${interface.src.dir}"/>
            <classpath refid="cassandra.classpath"/>
        </javac>
    </target>

    <!--
	The jar target makes cassandra.jar output.
    -->
    <target name="jar" depends="build">
    <jar jarfile="${build.dir}/${final.name}.jar"
         basedir="${build.classes}">
      <manifest>
        <!-- <section name="org/apache/cassandra/infrastructure"> -->
          <attribute name="Implementation-Title" value="Cassandra"/>
          <attribute name="Implementation-Version" value="${version}"/>
          <attribute name="Implementation-Vendor" value="Facebook"/>
	        <attribute name="Premain-Class" value="org.apache.cassandra.infrastructure.continuations.CAgent"/>
        <!-- </section> -->
      </manifest>
    </jar>
  </target>

    <!-- creates a release tarball -->	
    <target name="release" depends="jar,javadoc">
      <mkdir dir="${dist.dir}"/>
      <copy todir="${dist.dir}/lib">
        <fileset dir="${build.lib}"/>
        <fileset dir="${build.dir}">
          <include name="*.jar" />
        </fileset>
      </copy>
      <copy todir="${dist.dir}/javadoc">
        <fileset dir="${javadoc.dir}"/>
      </copy>
      <copy todir="${dist.dir}/bin">
        <fileset dir="bin"/>
      </copy>
      <copy todir="${dist.dir}/conf">
        <fileset dir="conf"/>
      </copy>   
      <copy todir="${dist.dir}/interface">
        <fileset dir="interface">
          <include name="**/*.thrift" />
        </fileset>
      </copy>      
      <copy todir="${dist.dir}/">
        <fileset dir="${basedir}">
          <include name="*.txt" />
        </fileset>
      </copy> 
      
      <tar compression="gzip" longfile="gnu"
        destfile="${build.dir}/${final.name}-bin.tar.gz">

        <tarfileset dir="${dist.dir}"
          prefix="${final.name}">
          <include name="**"/>
          <exclude name="bin/cassandra" />
        </tarfileset>
        <tarfileset dir="${dist.dir}"
          prefix="${final.name}"
          mode="755">
          <include name="bin/cassandra"/>
        </tarfileset>	
      </tar>
      <tar compression="gzip" longfile="gnu"
        destfile="${build.dir}/${final.name}-src.tar.gz">

        <tarfileset dir="${basedir}"
          prefix="${final.name}-src">
          <include name="**"/>
          <exclude name="build/**" />
        </tarfileset>
      </tar>
    </target>

  <target name="build-test" depends="build" description="Build the Cassandra classes">
    <javac
     debug="true"
     debuglevel="${debuglevel}"
     destdir="${test.classes}"
    >
      <classpath refid="cassandra.classpath"/>
      <src path="${test.unit.src}"/>
    </javac>
  </target>

   <target name="test" depends="build-test">
    <echo message="running tests"/>
    <mkdir dir="${build.test.dir}/cassandra"/>
    <mkdir dir="${build.test.dir}/output"/>
    <junit fork="on" failureproperty="testfailed">
      <sysproperty key="net.sourceforge.cobertura.datafile" file="${cobertura.datafile}"/>
      <formatter type="xml" usefile="true"/>
      <formatter type="brief" usefile="false"/>
      <jvmarg value="-Dstorage-config=${test.conf}"/>
      <jvmarg value="-ea"/>
      <classpath>
        <path refid="cassandra.classpath" />
        <pathelement location="${test.classes}"/>
        <pathelement location="${cobertura.dir}/cobertura.jar"/>
        <pathelement location="${test.conf}"/>
      </classpath>
      <batchtest todir="${build.test.dir}/output">
        <fileset dir="${test.classes}" includes="**/${test.name}.class" />
      </batchtest>
    </junit>

    <fail if="testfailed" message="Some test(s) failed."/>
  </target>
	
  <!-- instruments the classes to later create code coverage reports -->
  <target name="cobertura-instrument" depends="build,build-test">
    <taskdef resource="tasks.properties">
      <classpath>
        <fileset dir="${cobertura.dir}">
            <include name="cobertura.jar" />
            <include name="lib/**/*.jar" />
        </fileset>
      </classpath>
    </taskdef>
    
    <delete file="${cobertura.datafile}"/>
    
    <cobertura-instrument todir="${cobertura.classes.dir}" datafile="${cobertura.datafile}">
      <ignore regex="org.apache.log4j.*"/>
      
      <fileset dir="${build.classes}">
        <include name="**/*.class"/>
        <exclude name="**/*Test.class"/>
        <exclude name="**/*TestCase.class"/>
        <exclude name="**/test/*.class"/>
        <exclude name="${cobertura.excludes}"/>
      </fileset>
     
    </cobertura-instrument>
  </target>	

  <!-- create both html and xml code coverage reports -->
  <target name="cobertura-report">
    <cobertura-report format="html" destdir="${cobertura.report.dir}" srcdir="${build.src}"
      datafile="${cobertura.datafile}"/>
    <cobertura-report format="xml" destdir="${cobertura.report.dir}" srcdir="${build.src}"
      datafile="${cobertura.datafile}"/>
  </target>	
	
  <target name="javadoc" depends="init">
    <tstamp>
      <format property="YEAR" pattern="yyyy"/>
    </tstamp>
    <javadoc destdir="${javadoc.dir}" author="true" version="true" use="true"
      windowtitle="${ant.project.name} API" classpathref="cassandra.classpath"
      bottom="Copyright &amp;copy; ${YEAR} The Apache Software Foundation">

      <fileset dir="${build.src}" defaultexcludes="yes">
        <include name="org/apache/**/*.java"/>
      </fileset>
    </javadoc>
   </target>

</project>
