<?xml version="1.0" encoding="UTF-8" standalone="no"?>

 <!--
   Copyright 2011, Big Switch Networks, Inc.
   
   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.
-->

<!--
    The build uses pregenerated Thrift code by default to reduce build
    dependencies. To generate it locally run the gen-thrift target.
    If you change the Thrift files be sure to also commit the updated
    generated code.
-->

<project default="jar" name="Floodlight">
    <property name="target" location="target"/>
    <property name="build" location="${target}/bin"/>
    <property name="build-test" location="${target}/bin-test"/>
    <property name="build-coverage" location="${target}/bin-coverage"/>
    <property name="test-output" location="${target}/test"/>
    <property name="coverage-output" location="${target}/coverage"/>
    <property name="source" location="src/main/java"/>
    <property name="resources" location="src/main/resources/"/>
    <property name="source-test" location="src/test/java"/>
    <property name="python-src" location="src/main/python"/>
    <property name="docs" location="${target}/docs"/>
    <property name="main-class" value="net.floodlightcontroller.core.Main"/>
    <property name="floodlight-jar" location="${target}/floodlight.jar"/>
    <property name="floodlight-test-jar" location="${target}/floodlight-test.jar"/>
    <property name="floodlight-only-jar" location="${target}/floodlight-only.jar"/>
    <property name="thrift.dir" value="${basedir}/src/main/thrift"/>
    <property name="thrift.out.dir" value="lib/gen-java"/>
    <property name="thrift.package" value="net/floodlightcontroller/packetstreamer/thrift"/>
    <property name="ant.build.javac.source" value="1.6"/>
    <property name="ant.build.javac.target" value="1.6"/>
    <property name="lib" location="lib"/>
    <property name="titanlib" location="lib/titan/"/>

    <patternset id="lib">
        <include name="logback-classic-1.0.0.jar"/>
        <include name="logback-core-1.0.0.jar"/>
        <include name="jackson-core-asl-1.9.11.jar"/>
        <include name="jackson-mapper-asl-1.9.11.jar"/>
        <include name="slf4j-api-1.6.4.jar"/>
        <include name="org.restlet-2.1-RC1.jar"/>
        <include name="org.restlet.ext.jackson-2.1-RC1.jar"/>
        <include name="org.restlet.ext.simple-2.1-RC1.jar"/>
        <include name="org.restlet.ext.slf4j-2.1-RC1.jar"/>
        <include name="simple-4.1.21.jar"/>
        <include name="netty-3.2.6.Final.jar"/>
        <include name="args4j-2.0.16.jar"/>
        <include name="concurrentlinkedhashmap-lru-1.3.jar"/>
        <include name="jython-2.5.2.jar"/>
        <include name="libthrift-0.7.0.jar"/>
	<include name="curator-client-1.3.5-SNAPSHOT.jar"/>
	<include name="curator-framework-1.3.5-SNAPSHOT.jar"/>
	<include name="curator-recipes-1.3.5-SNAPSHOT.jar"/>
	<include name="curator-x-discovery-1.3.5-SNAPSHOT.jar"/>
	<include name="zookeeper-3.4.5.jar"/>
	<include name="ezmorph-1.0.6.jar"/>	
 	<include name="json-lib-2.4-jdk15.jar"/>
    </patternset>

    <patternset id="titanlib">
	<include name="**/*.jar"/>
    </patternset>

    <path id="classpath">
        <fileset dir="${lib}">
            <patternset refid="lib"/>
        </fileset>
        <fileset dir="${titanlib}">
            <patternset refid="titanlib"/>
        </fileset>
    </path>

    <patternset id="lib-cobertura">
        <include name="cobertura-1.9.4.1.jar"/>
        <include name="asm-3.0.jar"/>
        <include name="asm-tree-3.0.jar"/>
        <include name="oro/jakarta-oro-2.0.8.jar"/>
        <include name="log4j-1.2.9.jar"/>
    </patternset>
    <path id="classpath-cobertura">
        <fileset dir="${lib}">
            <patternset refid="lib-cobertura"/>
    </fileset>
    </path>

    <patternset id="lib-test">
        <include name="junit-4.8.2.jar"/>
        <include name="org.easymock-3.1.jar"/>
        <include name="objenesis-1.2.jar"/>  <!-- required by easymock to mock classes -->
        <include name="cglib-nodep-2.2.2.jar"/>    <!-- required by easymock to mock classes -->
    </patternset>
    <path id="classpath-test">
        <fileset dir="${lib}">
            <patternset refid="lib-test"/>
            <patternset refid="lib-cobertura"/>
            <patternset refid="lib"/>
            <patternset refid="titanlib"/>
        </fileset>
    </path>

    <target name="init">
        <mkdir dir="${build}"/>
        <mkdir dir="${build-test}"/>
        <mkdir dir="${target}/lib"/>
        <mkdir dir="${thrift.out.dir}"/>
        <mkdir dir="${test-output}"/>
    </target>

    <target name="compile" depends="init">
        <javac includeAntRuntime="false" 
           classpathref="classpath" 
           debug="true" 
           srcdir="${source}:${thrift.out.dir}"
           destdir="${build}">
	  <compilerarg value="-Xlint:unchecked"/>
        </javac>
    </target>

    <target name="compile-tests" depends="compile-test"/>
    <target name="compile-test" depends="compile">
        <fileset dir="${resources}"/>
        <javac includeAntRuntime="false" debug="true" 
           srcdir="${source-test}"
           classpath="${build}"
           classpathref="classpath-test"
           destdir="${build-test}"/>
    </target>

    <!-- Thrift build based on http://www.flester.com/blog/2009/04/26/using-thrift-from-ant -->
    <fileset id="thrift.files" dir="${thrift.dir}">
        <include name="**/*.thrift"/>
    </fileset>

    <target name="gen-thrift" depends="init">
        <pathconvert property="thrift.file.list" refid="thrift.files"
            pathsep=" " dirsep="/">
        </pathconvert>
        <echo message="Running thrift generator on ${thrift.file.list}"/>
        <exec executable="thrift" dir="${basedir}" failonerror="true">
            <arg line="--strict -v --gen java -o ${thrift.out.dir}/.. ${thrift.file.list}"/>
        </exec>
        <!-- Get rid of annoying warnings in thrift java: at annotations -->
        <echo message="Adding @SuppressWarning annotations"/>
        <replaceregexp byline="true">
            <regexp pattern="^public "/>
            <substitution expression='@SuppressWarnings("all") public '/>
            <fileset id="thrift.output.files" dir="${thrift.out.dir}/..">
                <include name="**/*.java"/>
            </fileset>
        </replaceregexp>
    </target>

    <target name="clean">
        <delete dir="${target}"/>
    </target>

    <target name="run" depends="dist">
        <java fork="true" jar="${floodlight-jar}" classpathref="classpath">
            <jvmarg value="-server"/>
            <jvmarg value="-Xms1024M"/>
            <jvmarg value="-Xmx1024M"/>
        </java>
    </target>

    <target name="tests" depends="test"/>
    <target name="test" depends="compile-test">
        <junit fork="true" forkmode="once"
           failureproperty="junit.failure"
           printsummary="on">
        <sysproperty key="net.sourceforge.cobertura.datafile"
             file="${target}/cobertura.ser" />
            <classpath>
                <pathelement location="${build-coverage}"/>
                <pathelement location="${build}"/>
                <pathelement location="${build-test}"/>
                <pathelement location="${floodlight-jar}"/>
                <path refid="classpath-test"/>
            </classpath>
            <formatter type="brief" usefile="true" />
            <batchtest todir="${test-output}">
                <fileset dir="${source-test}">
                    <exclude name="**/storage/tests/StorageTest.java"/>
				    <include name="**/*Test*.java"/>
                    <exclude name="**/core/test/**"/>
                    <exclude name="**/core/module/**"/>
                </fileset>
            </batchtest>
        </junit>
        <fail if="junit.failure" message="Unit test(s) failed.  See reports!"/>
    </target>

    <taskdef classpathref="classpath-cobertura" resource="tasks.properties"/>
    <target name="clean-instrument">
        <delete file="${target}/cobertura.ser"/>
        <delete dir="${build-coverage}"/>
    </target>
    <target name="instrument" depends="compile,compile-test,clean-instrument">
      <cobertura-instrument datafile="${target}/cobertura.ser"
                todir="${build-coverage}"
                classpathref="classpath-cobertura">
    <fileset dir="${build}">
      <include name="**/*.class"/>
    </fileset>
      </cobertura-instrument>
    </target>
    <target name="coverage-report">
        <cobertura-report format="html"
              datafile="${target}/cobertura.ser"
              destdir="${coverage-output}"
              srcdir="${source}"/>
        <cobertura-report format="xml"
              datafile="${target}/cobertura.ser"
              destdir="${coverage-output}"
              srcdir="${source}"/>
    </target>
    <target name="coverage" depends="instrument,test,coverage-report"/>

    <target name="jar" depends="compile">
        <jar destfile="${floodlight-only-jar}">
	    <fileset dir="${build}"/>
	    <fileset dir="${resources}"/>
	    <fileset dir="${python-src}">
	        <include name="**/*.py"/>
	    </fileset>
        </jar>
    </target>

    <target name="dist" depends="compile,compile-test">
        <jar destfile="${floodlight-jar}" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="${build}"/>
            <fileset dir="${resources}"/>
            <fileset dir="${python-src}">
                <include name="**/*.py"/>
            </fileset>
            <zipgroupfileset dir="${titanlib}">
                <patternset refid="titanlib"/>
            </zipgroupfileset>
            <zipgroupfileset dir="${lib}">
                <patternset refid="lib"/>
            </zipgroupfileset>
        </jar>
        <jar destfile="${floodlight-test-jar}" filesetmanifest="mergewithoutmain">
            <manifest>
                <attribute name="Class-Path" value="."/>
            </manifest>
            <fileset dir="${build-test}"/>
            <fileset dir="${resources}"/>
            <zipgroupfileset dir="${lib}">
                <patternset refid="lib-test"/>
                <patternset refid="lib-cobertura"/>
            </zipgroupfileset>
            <zipgroupfileset dir="${titanlib}">
                <patternset refid="titanlib"/>
            </zipgroupfileset>
        </jar>
    </target>

    <target name="javadoc">
        <javadoc access="protected"
            author="true"
            classpathref="classpath"
            destdir="${docs}"
            doctitle="Floodlight"
            nodeprecated="false"
            nodeprecatedlist="false"
            noindex="false"
            nonavbar="false"
            notree="false"
            source="1.6"
            sourcepath="${source}"
            splitindex="true"
            use="true"
            version="true"/>
    </target>

    <target name="eclipse" depends="init">
        <pathconvert property="eclipse-lib">
            <map from="${basedir}/" to=""/>
            <fileset dir="${lib}">
                <patternset refid="lib"/>
                <patternset refid="lib-test"/>
            </fileset>
            <fileset dir="${titanlib}">
                <patternset refid="titanlib"/>
            </fileset>
        </pathconvert>
        <exec executable="${basedir}/setup-eclipse.sh">
            <arg value="${main-class}"/>
            <arg value="${eclipse-lib}"/>
        </exec>
    </target>

</project>
