<project name="common">
  <!-- it's okay for this not to exist, but it gives a place to store
       personal property settings, if any, persistently.  For example, you
       might use it to set gwt.junit.testcase.includes to a narrower subset
       of test cases to exercise. -->
  <property file="local.ant.properties" />

  <!-- gwt.build.iscasesensitivefs is true if the filesystem of the
    build machine is case-sensitive, false otherwise.  Update with
    new lines for any supported platforms with case-insensitive
    filesystems
  -->
  <condition property="gwt.build.iscasesensitivefs" else="false">
    <not>
      <or>
        <os family="windows"/>
      </or>
    </not>
  </condition>

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

  <!-- 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" />
  <!-- gwt.threadsPerProcessor supercedes gwt.threadCount unless set to 0 --> 
  <property name="gwt.threadsPerProcessor" value="1" />
  <property name="gwt.threadCount" value="1" />
  <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.emma.out" location="${project.build}/bin-emma" />
  <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.6" />
  <property name="javac.target" value="1.6" />
  <property name="javac.nowarn" value="true" />
  <property name="junit.out" location="${project.build}/test" />
  <property name="emma.dir" value="${gwt.tools.redist}/emma" />
  <property name="emma.filter.exclude" value="" />
  
  <!-- 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" />

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

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

  <condition property="build.host.iswindows">
    <os family="windows" />
  </condition>
  <condition property="build.host.platform" value="windows">
    <isset property="build.host.iswindows" />
  </condition>
  <fail unless="build.host.platform" message="Building on ${os.name} is not supported" />
  
  <!-- JVM -->
  <condition property="build.jvm.is15">
     <equals arg1="${ant.java.version}" arg2="1.5"/>
  </condition>  

  <condition property="build.jvm.is16">
     <equals arg1="${ant.java.version}" arg2="1.6"/>
  </condition> 
  
  <!-- JUnit support -->
  <property name="gwt.dev.staging.jar" location="${gwt.build.staging}/gwt-${gwt.version}/gwt-dev.jar" />
  <property name="gwt.junit.port" value="8888" />
  <property name="gwt.junit.testcase.includes" value="**/*Suite.class"/>

  <!-- Benchmark support -->
  <property name="gwt.benchmark.testcase.includes" value="**/*SuiteBenchmark.class"/>

  <!-- Shared class paths -->
  <path id="project.classpath.class">
    <pathelement location="${javac.out}" />
  </path>
  <path id="project.classpath.src">
    <pathelement location="${gwt.root}/${project.tail}/src" />
  </path>

  <!-- 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>
  
  
  <!-- Pulls in tasks defined in antcount, i.e. countfilter -->
  <taskdef resource="net/sf/antcount/antlib.xml">
    <classpath>
      <pathelement location="${gwt.tools.antlib}/antcount-1.2.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" />
        <propertyref name="emma.enabled" />
        <propertyref name="emma.compiled" />
      </propertyset>
    </ant>
  </presetdef>

  <presetdef name="gwt.javac">
    <javac srcdir="src" destdir="${javac.out}" debug="${javac.debug}" debuglevel="${javac.debuglevel}" source="${javac.source}" target="${javac.target}" nowarn="${javac.nowarn}" encoding="${javac.encoding}" fork="true" memoryMaximumSize="1024m" includeantruntime="false" />
  </presetdef>

  <macrodef name="gwt.jar">
    <attribute name="destfile" default="${project.lib}"/>
    <attribute name="duplicate" default="fail"/>
    <attribute name="update" default="true"/>
    <element name="jarcontents" implicit="true"/>
    <sequential>
      <taskdef name="jar.bydate"
          classname="com.google.gwt.ant.taskdefs.LatestTimeJar"
          classpath="${gwt.build.lib}/ant-gwt.jar" />

      <jar.bydate destfile="@{destfile}" duplicate="@{duplicate}" filesonly="false"
          index="true" update="@{update}">
        <jarcontents/>
      </jar.bydate>
    </sequential>
  </macrodef>

  <macrodef name="gwt.junit">
    <!-- TODO: Because dev has core, oophm splits, the "common pattern" here doesn't work
         for it (and we use extraclasspaths entries instead).  Once we lose SWT, we can
         consolidate dev/core and dev/oophm, and that can instead more to the normal
         pattern.  Note also special casing regarding (dev/) core/test. -->
    <attribute name="test.args" default="" />
    <attribute name="test.jvmargs" default="" />
    <attribute name="test.out" default="" />
    <attribute name="test.reports" default="@{test.out}/reports" />
    <attribute name="test.emma.coverage" default="@{test.out}/emma-coverage" />
    <attribute name="test.cases" default="" />
    <attribute name="test.name" default="" />
    <attribute name="test.extra.jvmargs" default="" />
    <attribute name="haltonfailure" default="true" />
    <element name="extraclasspaths" optional="true" />
    <sequential>
      <taskdef name="junit" classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask">
        <classpath>
          <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
          <pathelement location="${gwt.tools.antlib}/ant-junit-1.6.5.jar" />
          <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
        </classpath>
      </taskdef>

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

      <antcall target="-create.emma.coverage.if.enabled">
    	  <param name="test.emma.coverage" value="@{test.emma.coverage}"/>
      </antcall>
      <condition property="emma.lib" value="${emma.dir}/emma-2.0.5312-patched.jar"
            else="${emma.dir}/no-emma-requested">
        <isset property="emma.enabled" />
      </condition>

      <junit dir="@{test.out}" fork="yes" printsummary="yes"
             failureproperty="junit.failure" tempdir="@{test.out}">
        <jvmarg line="-Xmx1024m" />
        <jvmarg line="-Xss4M" />
        <jvmarg value="-Demma.coverage.out.file=@{test.emma.coverage}/coverage.emma" />
        <jvmarg value="-Demma.coverage.out.merge=true" />
        <jvmarg value="-Dcom.google.gwt.junit.reportPath=reports" />
        <jvmarg line="@{test.jvmargs}" />
        <sysproperty key="gwt.args" value="@{test.args}" />
        <sysproperty key="java.awt.headless" value="true" />
        <classpath>
          <path refid="project.classpath.src" />
          <pathelement location="${gwt.root}/${project.tail}/super" />
          <pathelement location="${gwt.root}/${project.tail}/test" />
          <!-- TODO: this is here because e.g. ClassPathEntryTest otherwise fails,
               expecting the src entry (core/test) to be earlier than the bin entry
               (${javac.junit.out}). -->
          <pathelement location="${gwt.root}/${project.tail}/core/test" />
          <!-- Emma compiled classes must appear before non-emma compiled
               classes to generate code coverage stats.  javac.emma.out is
               empty unless emma is enabled. -->
          <pathelement location="${javac.emma.out}" />
          <pathelement location="${javac.junit.out}" />
          <path refid="project.classpath.class" />
          <pathelement location="${emma.lib}" />
          <pathelement location="${gwt.dev.staging.jar}" />
          <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar" />
          <pathelement location="${gwt.tools.lib}/selenium/selenium-java-client-driver.jar" />
          <pathelement location="${gwt.tools.lib}/w3c/sac/sac-1.3.jar" />
          <pathelement location="${gwt.tools.lib}/w3c/flute/flute-1.3-gg2.jar" />
          <extraclasspaths />
        </classpath>

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

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

      <emma enabled="${emma.enabled}">
        <report sourcepath="${project.classpath.src}">
          <fileset file="${javac.emma.out}/metadata.emma" />
          <fileset dir="@{test.emma.coverage}">
            <include name="*.emma" />
          </fileset>
          <txt outfile="@{test.emma.coverage}/coverage.txt" />
          <html outfile="@{test.emma.coverage}/coverage.html" />
          <xml outfile="@{test.emma.coverage}/coverage.xml" />
        </report>
      </emma>

      <condition property="junit.stop.build" value="true"> 
        <and>
          <istrue value="@{haltonfailure}"/>
          <isset property="junit.failure"/>
        </and>
      </condition>
      <fail
          message="One or more junit tests failed for target: @{test.name} @{test.args}"
          if="junit.stop.build" status="2" />
    </sequential>
  </macrodef>

  <macrodef name="gwt.tgz.cat">
    <attribute name="destfile" />
    <attribute name="compression" default="gzip" />
    <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="@{destfile}" compression="@{compression}" longfile="gnu">
        <tar.elements />
      </tar.cat>
    </sequential>
  </macrodef>

  <macrodef name="gwt.getsvninfo" description="Identifies the SVN info of a workspace">
    <sequential>
      <taskdef name="svninfo"
         classname="com.google.gwt.ant.taskdefs.SvnInfo"
         classpath="${gwt.build.lib}/ant-gwt.jar" />
      <svninfo directory="${gwt.root}" outputproperty="gwt.svnrev"
          outputfileproperty="gwt.svnrev.filename" />
      <!-- Generally, filtering requires a sentinel file so that changes to svn rev will
         be noticed as invalidating the previously-generated filter output.  This property
         names where such a sentinel lives; it is tested with <available/> and created
         with <touch/> -->
      <mkdir dir="${project.build}/sentinels" /> 
      <property name="filter.sentinel" 
          location="${project.build}/sentinels/gwt-${gwt.version}-svn-${gwt.svnrev.filename}" /> 
    </sequential>
  </macrodef>
  
  <macrodef name="gwt.revfilter" description="Filters files for versioning">
    <attribute name="todir" description="Destination for the filtered copy"/>
    
    <element name="src.fileset" implicit="true" 
      description="Source for the filtered copy"/>
    <sequential>
      <!-- These files must be filtered for versioning -->
      <echo message="Branding as GWT version ${gwt.version}, SVN rev ${gwt.svnrev}"/>
      <mkdir dir="@{todir}" />
      <copy todir="@{todir}" overwrite="true">
        <src.fileset/>
        <filterset>
          <filter token="GWT_VERSION" value="${gwt.version}" />
          <filter token="GWT_SVNREV" value="${gwt.svnrev}" />
        </filterset>
      </copy>
    </sequential>
  </macrodef>

  <macrodef name="gwt.timer">
    <attribute name="name"/>
    <element name="timer.elements" implicit="true" optional="false"/>
    <sequential>
      <taskdef name="timer" 
        classname="com.google.gwt.ant.taskdefs.Timer"
        classpath="${gwt.build.lib}/ant-gwt.jar" />
      <timer name="@{name}">
        <timer.elements/>
      </timer>
    </sequential>
  </macrodef>

  <macrodef name="gwt.checkstyle">
    <attribute name="outputdirectory" default="${project.build}"/>
    <element name="sourcepath" implicit="yes" optional="true" />
    <sequential>
      <taskdef resource="checkstyletask.properties" classpath="${gwt.tools.antlib}/checkstyle-all-4.2.jar" />
      <mkdir dir="@{outputdirectory}"/>
      <checkstyle config="${gwt.root}/eclipse/settings/code-style/gwt-checkstyle.xml" maxErrors="0" failOnViolation="false" failureProperty="gwt.checkstyle.failed">
        <formatter type="xml" toFile="@{outputdirectory}/checkstyle_log.xml"/>
        <property key="checkstyle.header.file" file="${gwt.root}/eclipse/settings/code-style/google.header" />
        <sourcepath />
      </checkstyle>
      <fail message="Checkstyle errors exist, and are reported at @{outputdirectory}/checkstyle_log.xml" if="gwt.checkstyle.failed" />
    </sequential>
  </macrodef>

  <macrodef name="gwt.checkstyle.tests">
    <attribute name="outputdirectory" default="${project.build}"/>
    <element name="sourcepath" implicit="yes" optional="true" />
    <sequential>
      <taskdef resource="checkstyletask.properties" classpath="${gwt.tools.antlib}/checkstyle-all-4.2.jar" />
      <mkdir dir="@{outputdirectory}"/>
      <checkstyle config="${gwt.root}/eclipse/settings/code-style/gwt-checkstyle-tests.xml" maxErrors="0" failOnViolation="false" failureProperty="gwt.checkstyle-tests.failed">
        <formatter type="xml" toFile="@{outputdirectory}/checkstyle_tests_log.xml"/>
        <property key="checkstyle.header.file" file="${gwt.root}/eclipse/settings/code-style/google.header" />
        <sourcepath />
      </checkstyle>
      <fail message="Checkstyle errors exist in tests, and are reported at @{outputdirectory}/checkstyle_tests_log.xml" if="gwt.checkstyle-tests.failed" />
    </sequential>
  </macrodef>

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

  <!-- Targets for emma support.  To run tests with emma enabled, use 
       ant <test-target> -Demma.enabled=true -->
  <path id="emma.taskdef.lib">
    <pathelement location="${emma.dir}/emma-2.0.5312-patched.jar" />
    <pathelement location="${emma.dir}/emma_ant-2.0.5312.jar" />
  </path>

  <taskdef resource="emma_ant.properties" classpathref="emma.taskdef.lib" />

  <!-- Instruments emma classes -->
  <target name="compile.emma.if.enabled" unless="emma.compiled">
    <delete dir="${javac.emma.out}" />
    <property name="emma.compiled" value="true" />
    <antcall target="-compile.emma.if.enabled" />
  </target>

  <!-- Instruments emma classes -->
  <target name="-compile.emma.if.enabled" if="emma.enabled">
    <mkdir dir="${javac.emma.out}" />
    <path id="emma.classpath">
      <pathelement location="${javac.out}" />
    </path>
    <emma enabled="${emma.enabled}" >
      <instr instrpathref="emma.classpath" destdir="${javac.emma.out}" metadatafile="${javac.emma.out}/metadata.emma" merge="false">
        <filter includes="com.google.*" />
        <filter excludes="${emma.filter.exclude}" />
      </instr>
    </emma>
  </target>

  <!-- Create the emma coverage directory -->
  <target name="-create.emma.coverage.if.enabled" if="emma.enabled">
    <delete dir="${test.emma.coverage}" />
    <mkdir dir="${test.emma.coverage}" />
  </target>

  <!-- 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="Runs tests and checkstyle static analysis" />
  <target name="checkstyle" />
  <target name="test" depends="build" />
  <target name="build" />

  <target name="clean">
    <delete dir="${project.build}" />
  </target>

</project>
