<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.benchmarks.viewer.ReportViewer" />
        <property name="tools.module.path" value="com/google/gwt/benchmarks/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" />
		<outofdate>
			<sourcefiles>
				<fileset dir="src" />
				<fileset file="${gwt.user.jar}" />
				<fileset file="${gwt.dev.jar}" />
			</sourcefiles>
			<targetfiles>
				<fileset dir="${tools.build}/www" />
			</targetfiles>
			<sequential>
				<java dir="${tools.build}" classname="com.google.gwt.dev.GWTCompiler" classpath="src:${gwt.user.jar}:${gwt.dev.jar}" fork="yes" failonerror="true">
					<jvmarg value="-Xmx256M"/>
					<arg value="-out" />
					<arg file="${tools.build}/www" />
					<arg value="${tools.module}" />
				</java>
			</sequential>
		</outofdate>
	</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="-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.out="${junit.out}/${build.host.platform}-hosted-mode" test.cases="default.hosted.tests" />

			<gwt.junit test.args="-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>

