<project name="common">
	<property name="test.ant.file" location="${gwt.root}/${project.tail}/build.xml" />
	<condition property="project.valid">
		<equals arg1="${ant.file}" arg2="${test.ant.file}" />
	</condition>
	<fail unless="project.valid" message="This build file is in an inconsistent state." />

	<!-- Global Properties -->
	<property environment="env" />
	<condition property="gwt.version" value="${env.GWT_VERSION}" else="0.0.0">
		<isset property="env.GWT_VERSION" />
	</condition>
	<condition property="gwt.tools.check" value="${env.GWT_TOOLS}" else="${gwt.root}/../tools">
		<isset property="env.GWT_TOOLS" />
	</condition>
	<property name="gwt.tools" location="${gwt.tools.check}" />
	<property name="gwt.tools.lib" location="${gwt.tools}/lib" />
	<property name="gwt.tools.antlib" location="${gwt.tools}/antlib" />
	<property name="gwt.tools.redist" location="${gwt.tools}/redist" />
	<property name="gwt.build" location="${gwt.root}/build" />
	<property name="gwt.build.out" location="${gwt.build}/out" />
	<property name="gwt.build.lib" location="${gwt.build}/lib" />
	<property name="gwt.build.jni" location="${gwt.build}/jni" />
	<property name="gwt.build.staging" location="${gwt.build}/staging" />
	<property name="gwt.build.dist" location="${gwt.build}/dist" />
	<property name="project.build" location="${gwt.build.out}/${project.tail}" />
	<property name="project.lib" location="${gwt.build.lib}/gwt-${ant.project.name}.jar" />
	<property name="project.jni" location="${gwt.build}/${project.tail}" />
	<property name="javac.out" location="${project.build}/bin" />
	<property name="javac.junit.out" location="${project.build}/bin-test" />
	<property name="javac.debug" value="true" />
	<property name="javac.debuglevel" value="lines,vars,source" />
	<property name="javac.encoding" value="utf-8" />
	<property name="javac.source" value="1.4" />
	<property name="javac.nowarn" value="true" />
	<property name="junit.out" location="${project.build}/test" />

	<!-- Sanity check -->
	<available file="${gwt.tools}" type="dir" property="gwt.tools.exists" />
	<fail unless="gwt.tools.exists" message="Cannot find '${gwt.tools}' tools directory; perhaps you should define the GWT_TOOLS environment variable" />

	<!-- JUnit support -->
	<condition property="build.host.platform" value="linux">
		<and>
			<os family="unix" />
			<not>
				<contains string="${os.name}" substring="mac" casesensitive="false" />
			</not>
		</and>
	</condition>

	<condition property="build.host.platform" value="mac">
		<and>
			<os family="unix" />
			<contains string="${os.name}" substring="mac" casesensitive="false" />
		</and>
	</condition>

	<condition property="build.host.platform" value="windows">
		<os family="windows" />
	</condition>
	<fail unless="build.host.platform" message="Building on ${os.name} is not supported" />

	<condition property="junit.platform.args" value="-XstartOnFirstThread" else="">
		<equals arg1="${build.host.platform}" arg2="mac" casesensitive="false" />
	</condition>

	<property name="gwt.dev.staging.jar" location="${gwt.build.staging}/gwt-${build.host.platform}-${gwt.version}/gwt-dev-${build.host.platform}.jar" />
	<property name="gwt.junit.port" value="8888" />

	<!--
		Comma delimited list of host and path components on which to run remote browser testing.
	-->
	<property name="gwt.remote.browsers" value="" />


	<!-- Pulls in tasks defined in ant-contrib, i.e. foreach -->
	<taskdef resource="net/sf/antcontrib/antlib.xml">
		<classpath>
			<pathelement location="${gwt.tools.antlib}/ant-contrib-1.0b3.jar" />
		</classpath>
	</taskdef>

	<!-- Global Custom Tasks -->
	<presetdef name="gwt.ant">
		<ant inheritall="false" target="${target}">
			<propertyset>
				<propertyref name="gwt.version" />
				<propertyref name="gwt.junit.port" />
				<propertyref name="gwt.remote.browsers" />
			</propertyset>
		</ant>
	</presetdef>

	<presetdef name="gwt.javac">
		<javac srcdir="src" destdir="${javac.out}" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="${javac.source}" nowarn="${javac.nowarn}" encoding="${javac.encoding}" />
	</presetdef>

	<presetdef name="gwt.jar">
		<jar destfile="${project.lib}" update="true" duplicate="preserve" index="true" />
	</presetdef>

	<macrodef name="gwt.junit">
		<attribute name="test.args" default="" />
		<attribute name="test.out" default="" />
		<attribute name="test.reports" default="@{test.out}/reports" />
		<attribute name="test.cases" default="" />
		<sequential>
			<taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
				<classpath>
					<pathelement location="${gwt.tools.lib}/junit/junit-3.8.1.jar" />
					<pathelement location="${gwt.tools.antlib}/ant-junit-1.6.5.jar" />
				</classpath>
			</taskdef>

			<echo message="Writing test results to @{test.reports} for @{test.cases}" />
			<mkdir dir="@{test.reports}" />

			<echo message="${javac.out} ${javac.junit.out}" />
			<junit dir="@{test.out}" fork="yes" printsummary="yes" haltonfailure="true">
				<jvmarg line="${junit.platform.args}" />
				<sysproperty key="gwt.args" value="@{test.args}" />
				<sysproperty key="gwt.devjar" value="${gwt.dev.staging.jar}" />
				<sysproperty key="java.awt.headless" value="true" />

				<classpath>
					<pathelement location="${gwt.root}/${project.tail}/src" />
					<pathelement location="${gwt.root}/${project.tail}/super" />
					<pathelement location="${gwt.root}/${project.tail}/test" />
					<pathelement location="${javac.junit.out}" />
					<pathelement location="${javac.out}" />
					<pathelement location="${gwt.dev.staging.jar}" />
				</classpath>

				<formatter type="plain" />
				<formatter type="xml" />

				<batchtest todir="@{test.reports}">
					<fileset refid="@{test.cases}" />
				</batchtest>
			</junit>
		</sequential>
	</macrodef>

	<macrodef name="gwt.tgz.cat">
		<attribute name="destfile" />
		<element name="tar.elements" implicit="true" optional="true" />
		<sequential>
			<taskdef name="tar.cat" classname="com.google.gwt.ant.taskdefs.TarCat" classpath="${gwt.build.lib}/ant-gwt.jar" />
			<tar.cat destfile="${project.dist}" compression="gzip" longfile="gnu">
				<tar.elements />
			</tar.cat>
		</sequential>
	</macrodef>

	<macrodef name="gwt.checkstyle">
		<element name="sourcepath" implicit="yes" optional="true" />
		<sequential>
			<taskdef resource="checkstyletask.properties" classpath="${gwt.tools.antlib}/checkstyle-all-4.2.jar;${gwt.build.lib}/gwt-customchecks.jar" />
			<checkstyle config="${gwt.root}/eclipse/settings/code-style/gwt-checkstyle.xml" maxWarnings="0">
				<property key="checkstyle.header.file" file="${gwt.root}/eclipse/settings/code-style/google.header" />
				<sourcepath />
			</checkstyle>
		</sequential>
	</macrodef>

	<macrodef name="property.ensure">
		<attribute name="name" />
		<attribute name="location" />
		<attribute name="message" default="Cannot find dependency ${@{name}}" />
		<sequential>
			<property name="@{name}" location="@{location}" />
			<available file="${@{name}}" property="@{name}.exists" />
			<fail unless="@{name}.exists" message="@{message}" />
		</sequential>
	</macrodef>

	<!-- Default implementations of the required targets; projects should
	override the ones that matter -->
	<target name="all" depends="verify" />
	<target name="verify" depends="checkstyle, test" description="Verify this project" />
	<target name="checkstyle" description="Static analysis of source" />
	<target name="test" depends="build" description="Test this project" />
	<target name="build" description="Build and (maybe) package this project" />

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

</project>
