<?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="dist" 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="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"/>

    <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.8.6.jar"/>
        <include name="jackson-mapper-asl-1.8.6.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.2.jar"/>
        <include name="jython-2.5.2.jar"/>
        <include name="libthrift-0.7.0.jar"/>
    </patternset>

    <path id="classpath">
        <fileset dir="${lib}">
            <patternset refid="lib"/>
        </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"/>
        </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}">
        </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="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="${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>
        </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>
        </pathconvert>
        <exec executable="${basedir}/setup-eclipse.sh">
            <arg value="${main-class}"/>
            <arg value="${eclipse-lib}"/>
        </exec>
    </target>

</project>
