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

<!--+
    |
    |  Gridworks Build File    
    |                
    +-->
    
<!--+
    | NOTE: this script expects the 'build.dir' and 'dist.dir' properties to be set 
    | when invoking it. This is done like this
    |
    |   ant -f build.xml -Dbuild.dir="/path/to/build/dir" -Ddist.dir="/path/to/dist/dir"
    |
    | the 'gridworks' shell script does this and it's meant to be the way to invoke ant,
    | so running this script directly in ant is not suggested.
    +-->

<project name="gridworks" default="build" basedir=".">

    <property environment="env"/>

    <property name="src.dir" value="${basedir}/src/main/java" />
    <property name="graphics.dir" value="${basedir}/src/graphics" />
    <property name="lib.dir" value="${basedir}/lib" />
    <property name="tools.dir" value="${basedir}/thirdparty" />
    
    <property name="classes.dir" value="${build.dir}/classes" />
    <property name="bundle.dir" value="${build.dir}/bundle" />
    <property name="exe.dir" value="${build.dir}/exe" />
    
    <path id="class.path">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar" />
        </fileset>
    </path>
            
    <target name="build">
        <mkdir dir="${classes.dir}" />
        <javac srcdir="${src.dir}" destdir="${classes.dir}"  debug="true" includeAntRuntime="no">
            <classpath refid="class.path" />
        </javac>
    </target>

    <target name="jar" depends="build">
        <jar destfile="${build.dir}/gridworks.jar" basedir="${classes.dir}"/>
    </target>
    
    <target name="bundle" depends="jar">
        <taskdef 
            name="jarbundler" 
            classname="net.sourceforge.jarbundler.JarBundler" 
            classpath="${tools.dir}/jarbundler-2.1.0.jar" 
        />
        <mkdir dir="${bundle.dir}"/>
        <jarbundler 
                dir="${bundle.dir}"
                name="Gridworks"
                mainclass="com.metaweb.gridworks.Gridworks" 
                icon="${graphics.dir}/icon/gridworks.icns"
                version="${version}"
                infostring="Gridworks ${version}"
                aboutmenuname="Gridworks"
                workingdirectory="$APP_PACKAGE/Contents/Resources"
                jvmversion="1.6+"
                bundleid="com.metaweb.gridworks.Gridworks"
                vmoptions="${java.options}"
                antialiasedgraphics="true"
                antialiasedtext="true"
                liveresize="true"
                growboxintrudes="true"
                screenmenu="true">
            <jarfileset dir="${lib.dir}">
                <exclude name="**/.svn" />
                <include name="**/*.jar" />
            </jarfileset>
            <jarfilelist dir="${build.dir}" files="gridworks.jar" />
            <resourcefileset dir="${basedir}/src/main/">
                <include name="webapp/**" />
            </resourcefileset>
        </jarbundler>
    </target>
    
    <target name="exe" depends="jar">
        <mkdir dir="${exe.dir}"/>
		<taskdef 
		      name="launch4j" 
		      classname="net.sf.launch4j.ant.Launch4jTask" 
		      classpath="${tools.dir}/launch4j/launch4j.jar:${tools.dir}/launch4j/lib/xstream.jar" 
	    />
        <launch4j>
          <config 
               headerType="console" 
               outfile="${exe.dir}/Gridworks.exe" 
               jarPath="lib/gridworks-${version}.jar" 
               dontWrapJar="true"
               icon="${graphics.dir}/icon/gridworks.ico">
            <classPath mainClass="com.metaweb.gridworks.Gridworks">
                <cp>lib/*.jar</cp>
            </classPath>
            <jre minVersion="1.6.0" jdkPreference="preferJre" initialHeapPercent="10" maxHeapPercent="80">
                <opt>-Djava.library.path=lib/native/windows</opt>
            </jre>
            <versionInfo
                fileVersion="${num_version}.0.0"
                txtFileVersion="${version}"
                fileDescription="gridworks"
                copyright="Copyright (c) 2010, Metaweb Technologies, Inc."
                productVersion="${num_version}.0.0"
                txtProductVersion="${num_version}.0.0"
                productName="Gridworks"
                companyName="Metaweb Technologies, Inc."
                internalName="gridworks"
                originalFilename="gridworks.exe" 
            />
          </config>
        </launch4j>		
        <copy todir="${exe.dir}/lib">
            <fileset dir="${lib.dir}">
                <include name="**/*.jar"/>
            </fileset>
        </copy>
        <copy todir="${exe.dir}/lib/native/windows">
            <fileset dir="${lib.dir}/native/windows">
                <include name="*.dll"/>
            </fileset>
        </copy>
        <copy file="${build.dir}/gridworks.jar" tofile="${exe.dir}/lib/gridworks-${version}.jar"/>
        <copy todir="${exe.dir}/webapp">
            <fileset dir="${basedir}/src/main/webapp">
                <include name="**/*"/>
            </fileset>
        </copy>
        <zip destfile="${dist.dir}/gridworks-${version}.zip" basedir="${exe.dir}"/>                
	</target>

    <target name="clean">
        <delete file="${build.dir}/gridworks.jar" />
        <delete dir="${classes.dir}" />
    </target>

    <target name="distclean">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
    </target>

</project>