<project default="Java2" name="Vexi Build in Ant" >
	<property name="classdir" location="build/class" />
	<property name="Java2dir" location="build/Java2" />

	<target name="init">
		<mkdir dir="${classdir}" />
		<mkdir dir="${Java2dir}" />
	</target>
	<target name="clean-init">
		<delete dir="${classdir}" />
		<delete dir="${Java2dir}" />
	</target>
 
	<target name="download_crypto">
		<exec executable="make">
			<arg value=".download_org.ibex.crypto"/>
		</exec>
	</target>

	<target name="download_regexp">
		<exec executable="make">
			<arg value=".download_gnu.regexp-1.1.4"/>
		</exec>
	</target>

	<target name="download_vera">
		<exec executable="make">
			<arg value=".download_vera-1.10"/>
		</exec>
	</target>

	<target name="download_libmspack">
		<exec executable="make">
			<arg value=".download_libmspack-20030726"/>
		</exec>
	</target>

	<target name="install_libmspack" depends="download_libmspack">
		<exec executable="make">
			<arg value=".install_libmspack-20030726_mips-unknown-elf"/>
			<arg value="target=mips-unknown-elf"/>
		</exec>
	</target>

	<target name="download_freetype">
		<exec executable="make">
			<arg value=".download_freetype-2.1.4"/>
		</exec>
	</target>

	<target name="install_freetype" depends="download_freetype">
		<exec executable="make">
			<arg value=".install_freetype-2.1.4_mips-unknown-elf"/>
			<arg value="target=mips-unknown-elf"/>
		</exec>
	</target>

	<target name="Java2" depends="init,preprocess,upstream,compile,builtin">
		<jar destfile="build/Java2/vexi.jar" manifest="MANIFEST.MF">
			<fileset dir="${classdir}"/>
 		</jar> 
	</target>
	<target name="clean" depends="clean-init"/>
	
	<target name="preprocess" depends="build_preprocessor" >
		<java classpath="${classdir}" classname="org.ibex.util.Preprocessor" failonerror="true">
			<arg value="src/org/vexi/core/Box.jpp"/>
			<arg value="src/org/vexi/core/Box.java"/>
		</java>
	</target>
	<target name="upstream"/>
	<target name="build_preprocessor" depends="init,download_regexp">
		<javac classpath="upstream/gnu.regexp-1.1.4/src/lib/gnu-regexp-1.1.4.jar"
			debug="true" destdir="${classdir}" listfiles="true" srcdir="src" includes="org/ibex/util/Preprocessor.java"
			/>
	</target>
	
	<target name="compile" depends="preprocess,nestedvm_classes,download_crypto">
		<javac destdir="${classdir}" srcdir="src">
			<sourcepath path="src"/>
			<sourcepath path="upstream/org.ibex.crypto/src"/>
			<sourcepath path="upstream/org.ibex.nestedvm/upstream/build/classgen/src"/>
			<sourcepath path="upstream/org.ibex.nestedvm/src"/>
			<sourcepath path="upstream/gnu.regexp-1.1.4/src/src"/>
			
			<exclude name="org/ibex/util/NanoGoat.java"/>
			<exclude name="org/ibex/plat/Darwin.java"/>
			<exclude name="org/ibex/plat/Solaris.java"/>
			<exclude name="org/ibex/plat/Linux.java"/>
			<exclude name="org/ibex/plat/GCJ.java"/>
			<exclude name="org/ibex/plat/OpenGL.java"/>			
			<exclude name="org/ibex/plat/X11.java"/>			
			
			<classpath path="upstream/ksoap"/>
		</javac>
	</target>
	
	<target name="nestedvm_classes" depends="freetype,mspack">
		<mkdir dir="build/class/org/ibex/util/"/>
		<exec executable="upstream/install/bin/mips-unknown-elf-gcc" >
			<arg value="--static"/>
			<arg value="-march=mip1"/>
			<arg value="-T"/><arg value="upstream/org.ibex.nestedvm/src/org/ibex/nestedvm/linker.ld"/>
			<arg value="-L"/><arg value="upstream/org.ibex.nestedvm/build/org/ibex/nestedvm/"/>
			<arg value="-L"/><arg value="upstream/freetype-2.1.4/src/objs"/>
			<arg value="-L"/><arg value="upstream/libmspack-20030726/build-mips-unknown-elf/"/>
			<arg value="-o"/><arg value="build/mips/mipsapps.mips"/>
			<arg value="build/mips/org/ibex/graphics/Freetype.c.o"/>
			<arg value="build/mips/org/ibex/util/MSPack.c.o"/>
			<arg value="-lfreetype"/>
			<arg value="-lmspack"/>
			<arg value="-Wl"/>
			<arg value="--gc-sections"/>
		</exec>
		<java classname="org.ibex.nestedvm.Compiler">
			<classpath path="upstream/org.ibex.nestedvm/build"/>
			<classpath path="upstream/org.ibex.nestedvm/upstream/build/classgen/build"/>
			<arg value="org.ibex.util.MIPSApps"/>
			<arg value="build/mips/mipsapps.mips"/>
			<arg value="-outfile"/>
			<arg value="build/class/org/ibex/util/MIPSApps.class"/>
		</java>
	</target>

	<target name="freetype" depends="init,mipscross,install_freetype">
		<mkdir dir="build/mips/org/ibex/graphics"/>
		<exec executable="upstream/install/bin/mips-unknown-elf-gcc">
			<arg value="-Wall"/>
			<arg value="-Werror"/>
			<arg value="-march=r3000"/>
			<arg value="-Iupstream/freetype-2.1.4/src/include"/>
			<arg value="-c"/>
			<arg value="-o"/>
			<arg value="build/mips/org/ibex/graphics/Freetype.c.o"/>
			<arg value="src/org/ibex/graphics/Freetype.c"/>
		</exec>
	</target>

	<target name="mspack" depends="init,mipscross,install_libmspack">
		<mkdir dir="build/mips/org/ibex/util"/>
		<exec executable="upstream/install/bin/mips-unknown-elf-gcc">
			<arg value="-Wall"/>
			<arg value="-Werror"/>
			<arg value="-march=r3000"/>
			<arg value="-Iupstream/libmspack-20030726/src/mspack"/>
			<arg value="-c"/>
			<arg value="-o"/>
			<arg value="build/mips/org/ibex/util/MSPack.c.o"/>
			<arg value="src/org/ibex/util/MSPack.c"/>
		</exec>
	</target>

	<target name="mipscross" depends="init">
		<exec executable="make">
			<arg value=".install_gcc-3.4.2_mips-unknown-elf"/>
		</exec>
	</target>
	
<target name="builtin" depends="download_vera">
		<copy todir="build/res/fonts/vera">
			<fileset dir="upstream/vera-1.10/ttf-bitstream-vera-1.10/" includes="Vera.ttf,VeraSe.ttf,VeraMono.ttf"/>
		</copy>
		<jar destfile="${classdir}/org/vexi/builtin.jar">
			<fileset dir="src" includes="org/vexi/core/builtin/*"/>
			<fileset dir="build/res"/>
		</jar>
	</target>
</project>

