<project name="benchmark-viewer" default="build" basedir=".">

        <!--
          TODO(tobyr) 

          Once we have more than a single tool, this build should be re-examined
          to see if several of the targets should be lifted into common.ant.xml.
          The simple targets, like tests*, clean, and checkstyle are good
          candidates, while the other targets depend heavily on the actual
          makeup of the future tools.
        -->

        <property name="gwt.root" location="../.." />
	<property name="project.tail" value="tools/benchmark-viewer" />
	<import file="${gwt.root}/common.ant.xml" />

        <property name="tools.build" value="${gwt.build.out}/${project.tail}" />
        <property name="tools.module" value="com.google.gwt.junit.viewer.ReportViewer" />
        <property name="tools.module.path" value="com/google/gwt/junit/viewer/public" />

	<!--
		Default hosted mode test cases
	-->
	<fileset id="default.hosted.tests" dir="${javac.junit.out}">
		<include name="**/*Test.class" />
	</fileset>

	<!--
		Default web mode test cases
	-->
	<fileset id="default.web.tests" dir="${javac.junit.out}">
		<include name="**/*Test.class" />
	</fileset>

	<!-- Platform shouldn't matter here, just picking one -->
	<property.ensure name="gwt.dev.jar" location="${gwt.build.lib}/gwt-dev-linux.jar" />
	<property.ensure name="gwt.user.jar" location="${gwt.build.lib}/gwt-user.jar" />

	<target name="compile" description="Compile all class files">
		<mkdir dir="${javac.out}" />
		<gwt.javac>
			<classpath>
				<pathelement location="${gwt.tools.lib}/tomcat/servlet-api-2.4.jar" />
				<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
				<pathelement location="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar" />
				<pathelement location="${gwt.tools.lib}/jfreechart/jcommon-1.0.6.jar" />
				<pathelement location="${gwt.dev.jar}" />
				<pathelement location="${gwt.user.jar}" />
			</classpath>
		</gwt.javac>
	</target>

	<target name="compile.tests" description="Compiles the test code for this project">
		<mkdir dir="${javac.junit.out}" />
		<gwt.javac srcdir="test" destdir="${javac.junit.out}">
			<classpath>
				<pathelement location="${javac.out}" />
				<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
				<pathelement location="${gwt.dev.staging.jar}" />
			</classpath>
		</gwt.javac>
	</target>

	<target name="build" depends="compile, gwtc" description="Build and package this project">
		<mkdir dir="${gwt.build.lib}" />
                <copy todir="${tools.build}/www-new/${tools.module.path}" flatten="true" >
                  <fileset dir="${tools.build}/www/${tools.module}" />
                </copy>
                    
		<gwt.jar>
			<fileset dir="src" excludes="**/package.html" />
			<fileset dir="${javac.out}" />
                        <fileset dir="${tools.build}/www-new" />
                        <zipfileset src="${gwt.tools.lib}/jfreechart/itext-1.4.6.jar"/>
                        <zipfileset src="${gwt.tools.lib}/jfreechart/jcommon-1.0.6.jar"/>
                        <zipfileset src="${gwt.tools.lib}/jfreechart/jfreechart-1.0.3.jar"/>
		</gwt.jar>
	</target>

	<target name="checkstyle" description="Static analysis of source">
		<gwt.checkstyle>
			<fileset dir="src"/>
		</gwt.checkstyle>
	</target>

	<target name="gwtc" description="Compile to JavaScript">
	  	<mkdir dir="${tools.build}/www" />
		<java dir="${tools.build}" classname="com.google.gwt.dev.GWTCompiler" classpath="src:${gwt.user.jar}:${gwt.dev.jar}" fork="yes" failonerror="true">
			<arg value="-out" />
			<arg file="${tools.build}/www" />
			<arg value="${tools.module}" />
		</java>
	</target>

	<target name="remoteweb-test" description="Run a remoteweb test at the given host and path">
		<echo message="Performing remote browser testing at rmi://${gwt.remote.browser}" />
		<gwt.junit test.args="-port ${gwt.junit.port} -out www -web -remoteweb rmi://${gwt.remote.browser}" test.out="${junit.out}/${gwt.remote.browser}" test.cases="default.web.tests" />
	</target>

	<target name="test" depends="compile, compile.tests" description="Run hosted-mode, web-mode and remoteweb tests for this project.">
		<property.ensure name="distro.built" location="${gwt.dev.staging.jar}" message="GWT must be built before performing any tests.  This can be fixed by running ant in the ${gwt.root} directory." />

		<!--
			Run hosted and web mode tests for the platform on which this build
			is executing
		-->
		<parallel threadcount="1">
			<gwt.junit test.args="-port ${gwt.junit.port}" test.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.tests" />

			<gwt.junit test.args="-port ${gwt.junit.port} -out www -web" test.out="${junit.out}/${build.host.platform}-web-mode" test.cases="default.web.tests" />

			<!--
				Run remote browser testing for the comma delimited list of remote browsers
			-->
			<foreach list="${gwt.remote.browsers}" delimiter="," parallel="true" maxThreads="1" target="remoteweb-test" param="gwt.remote.browser" />
		</parallel>
	</target>

	<target name="clean" description="Cleans this project's intermediate and output files">
		<delete dir="${project.build}" />
		<delete file="${project.lib}" />
	</target>
</project>

