<project name="dev" default="build" basedir=".">
  <property name="gwt.root" location=".."/>
  <property name="project.tail" value="dev"/>
  <property name="test.args" value="-ea"/>
  <property name="test.jvmargs" value="-ea"/>
  <import file="${gwt.root}/platforms.ant.xml"/>
  <import file="${gwt.root}/common.ant.xml"/>

  <property name="alldeps.jar" location="${project.build}/alldeps.jar"/>
  <property name="gwt.junit.testcase.dev.core.includes" value="**/com/google/**/*Test.class"/>
  <!-- BrowserManagerTest is brought in from user and is not instantiable. -->
  <property name="gwt.junit.testcase.dev.core.excludes"
            value="**/BrowserManagerTest.class"/>

  <target name="clean" description="Cleans this project's intermediate and output files">
    <delete dir="${project.build}" failonerror="false"/>
    <delete file="${project.lib}" failonerror="false"/>
    <delete failonerror="false">
      <fileset dir="${gwt.build.lib}" includes="gwt-dev.jar"/>
    </delete>
  </target>

  <target name="compile.tests" depends="build, compile.emma.if.enabled, build.alldeps.jar"
          description="Compiles the test code for this project">
    <mkdir dir="${javac.junit.out}"/>
    <gwt.javac srcdir="" destdir="${javac.junit.out}">
      <src path="core/src"/>
      <src path="core/test"/>
      <classpath>
        <pathelement location="${javac.out}"/>
        <pathelement location="${alldeps.jar}"/>
        <pathelement location="${gwt.tools.lib}/junit/junit-4.8.2.jar"/>
      </classpath>
    </gwt.javac>
    <gwt.javac srcdir="" destdir="${javac.junit.out}" excludes="**/EmulatedCharset.java">
      <src path="${gwt.root}/user/src" />
      <src path="${gwt.root}/user/super/com/google/gwt/emul/javaemul/internal"/>
      <classpath>
        <pathelement location="${javac.out}"/>
        <pathelement location="${gwt.tools.lib}/gss/2015-11-04/closure-stylesheets-library-20151104-rebased.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"/>
        <pathelement
            location="${gwt.tools.lib}/hibernate/validator/hibernate-validator-4.1.0.Final.jar"/>
        <pathelement
            location="${gwt.tools.lib}/javax/validation/validation-api-1.0.0.GA.jar"/>
        <pathelement
            location="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar"/>
        <pathelement location="${gwt.build.lib}/gwt-dev-${build.host.platform}.jar"/>
        <pathelement location="${alldeps.jar}"/>
      </classpath>
    </gwt.javac>

  </target>

  <target name="build.alldeps.jar" description="Merges all dependency jars into a single jar">
    <mkdir dir="${project.build}"/>
    <outofdate> <!-- saves rescanning all the source jars' contents -->
      <sourcefiles>
        <fileset dir="${gwt.tools.lib}">
          <include name="apache/tapestry-util-text-4.0.2.jar"/>
          <include name="apache/ant-1.6.5.jar"/>
          <include name="colt/colt-1.2.jar"/>
          <include name="eclipse/org.eclipse.jdt.core_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
          <include name="eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
          <include name="objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
          <include name="guava/guava-19.0/guava-19.0-rebased.jar"/>
          <include name="icu4j/50.1.1/icu4j.jar"/>
          <include name="jetty/jetty-9.2.14.v20151106/jetty-all-9.2.14.v20151106.jar"/>
          <include name="gson/gson-2.6.2.jar"/>
          <include name="jscomp/20160315/compiler-rebased.jar"/>
          <include name="jscomp/20160315/sourcemap-rebased.jar"/>
          <include name="jsr305/jsr305.jar"/>
          <include name="protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
          <!-- dependencies needed for JSP support in DevMode: BEGIN -->
          <include name="jetty/jetty-9.2.14.v20151106/mortbay-apache-jsp-8.0.9.M3.jar"/>
          <include name="jetty/jetty-9.2.14.v20151106/mortbay-apache-el-8.0.9.M3.jar"/>
          <include name="jetty/jetty-9.2.14.v20151106/jetty-apache-jsp-9.2.14.v20151106.jar"/>
          <!-- dependencies needed for JSP support in DevMode: END -->
          <include name="tomcat/tomcat-servlet-api-8.0.28.jar"/>
          <include name="tomcat/tomcat-websocket-api-8.0.28.jar"/>
          <include name="tomcat/tomcat-annotations-api-8.0.28.jar"/>
          <include name="apache/commons/commons-collections-3.2.2.jar"/>
          <!-- htmlunit dependencies not already included: BEGIN -->
          <include name="apache/http/httpclient-4.5.1.jar"/>
          <include name="apache/http/httpcore-4.4.4.jar"/>
          <include name="apache/http/httpmime-4.5.1.jar"/>
          <include name="apache/james/apache-mime4j-0.6.jar"/>
          <include name="apache/commons/commons-codec-1.10.jar"/>
          <include name="apache/commons/commons-io-2.4.jar"/>
          <include name="apache/commons/commons-lang3-3.4"/>
          <include name="apache/commons/commons-logging-1.2.jar"/>
          <include name="cssparser/cssparser-0.9.18.jar"/>
         <include name="htmlunit/htmlunit-2.19/htmlunit-2.19.jar"/>
         <include name="htmlunit/htmlunit-2.19/htmlunit-core-js-2.15.jar"/>
          <include name="nekohtml/nekohtml-1.9.22.jar"/>
          <include name="cup/java-cup-11a.jar"/>
          <include name="xalan/xalan-2.7.1-nocup.jar"/>
          <include name="xerces/xerces-2_11_0/serializer-2.7.1.jar"/>
          <include name="xerces/xerces-2_11_0/xercesImpl-2.11.0.jar"/>
          <include name="xerces/xerces-2_11_0/xml-apis-1.4.01.jar"/>
          <include name="w3c/sac/sac-1.3.jar"/>
          <!-- htmlunit dependencies not already included: END -->
          <include name="json/android-sdk-19.1/json-android-rebased.jar"/>
        </fileset>
        <fileset file="build.xml"/>
      </sourcefiles>
      <targetfiles>
        <fileset file="${alldeps.jar}"/>
      </targetfiles>
      <sequential>
        <gwt.jar destfile="${alldeps.jar}" duplicate="preserve">
          <service type="javax.servlet.ServletContainerInitializer">
            <provider classname="org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer"/>
            <provider classname="org.eclipse.jetty.apache.jsp.JettyJasperInitializer"/>
          </service>
          <zipfileset src="${gwt.tools.lib}/objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/tapestry-util-text-4.0.2.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/ant-1.6.5.jar"/>
          <zipfileset src="${gwt.tools.lib}/colt/colt-1.2.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/eclipse/org.eclipse.jdt.core_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
          <zipfileset src="${gwt.tools.lib}/guava/guava-19.0/guava-19.0-rebased.jar"/>
          <zipfileset src="${gwt.tools.lib}/icu4j/50.1.1/icu4j.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/jetty/jetty-9.2.14.v20151106/jetty-all-9.2.14.v20151106.jar"/>
          <zipfileset src="${gwt.tools.lib}/gson/gson-2.6.2.jar"/>
          <zipfileset src="${gwt.tools.lib}/jscomp/20160315/compiler-rebased.jar"/>
          <zipfileset src="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar"/>
          <zipfileset src="${gwt.tools.lib}/jsr305/jsr305.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
          <!-- dependencies needed for JSP support in DevMode: BEGIN -->
          <zipfileset src="${gwt.tools.lib}/jetty/jetty-9.2.14.v20151106/mortbay-apache-jsp-8.0.9.M3.jar"/>
          <zipfileset src="${gwt.tools.lib}/jetty/jetty-9.2.14.v20151106/mortbay-apache-el-8.0.9.M3.jar"/>
          <zipfileset src="${gwt.tools.lib}/jetty/jetty-9.2.14.v20151106/jetty-apache-jsp-9.2.14.v20151106.jar"/>
          <!-- dependencies needed for JSP support in DevMode: END -->
          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-servlet-api-8.0.28.jar"/>
          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-websocket-api-8.0.28.jar"/>
          <zipfileset src="${gwt.tools.lib}/tomcat/tomcat-annotations-api-8.0.28.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/apache/commons/commons-collections-3.2.2.jar"/>
          <!-- htmlunit dependencies not already included: BEGIN -->
          <zipfileset src="${gwt.tools.lib}/apache/http/httpclient-4.5.1.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/http/httpcore-4.4.4.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/http/httpmime-4.5.1.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/james/apache-mime4j-0.6.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-codec-1.10.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-io-2.4.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-lang3-3.4.jar"/>
          <zipfileset src="${gwt.tools.lib}/apache/commons/commons-logging-1.2.jar"/>
          <zipfileset src="${gwt.tools.lib}/cssparser/cssparser-0.9.18.jar"/>
          <zipfileset src="${gwt.tools.lib}/htmlunit/htmlunit-2.19/htmlunit-2.19.jar"/>
          <zipfileset
              src="${gwt.tools.lib}/htmlunit/htmlunit-2.19/htmlunit-core-js-2.15.jar"/>
          <zipfileset src="${gwt.tools.lib}/nekohtml/nekohtml-1.9.22.jar"/>
          <zipfileset src="${gwt.tools.lib}/cup/java-cup-11a.jar"/>
          <zipfileset src="${gwt.tools.lib}/xalan/xalan-2.7.1-nocup.jar"/>
          <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/serializer-2.7.1.jar"/>
          <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/xercesImpl-2.11.0.jar"/>
          <zipfileset src="${gwt.tools.lib}/xerces/xerces-2_11_0/xml-apis-1.4.01.jar"/>
          <zipfileset src="${gwt.tools.lib}/w3c/sac/sac-1.3.jar"/>
          <!-- htmlunit dependencies not already included: END -->
          <zipfileset src="${gwt.tools.lib}/json/android-sdk-19.1/json-android-rebased.jar"/>
        </gwt.jar>
      </sequential>
    </outofdate>
  </target>

  <property name="filter.pattern" value="com/google/gwt/dev/About.properties"/>

  <target name="-filter.props" description="Creates filtered About.properties with version info"
          unless="filter.uptodate">
    <gwt.revfilter todir="${javac.out}">
      <fileset dir="core/src" includes="${filter.pattern}"/>
    </gwt.revfilter>
    <touch file="${filter.sentinel}"/>
  </target>

  <target name="compiler.standalone"
          description="Validates that the standalone gwt-compiler project can build.">
    <mkdir dir="${javac.out}"/>
    <gwt.javac srcdir="core/super" excludes="com/google/gwt/dev/jjs/intrinsic/"/>
    <gwt.javac srcdir="core/src">
      <include name="com/google/gwt/core/ext/**"/>
      <include name="com/google/gwt/core/linker/**"/>
      <include name="com/google/gwt/dev/About.java"/>
      <include name="com/google/gwt/dev/GwtVersion.java"/>
      <include name="com/google/gwt/dev/Permutation.java"/>
      <include name="com/google/gwt/dev/cfg/**"/>
      <include name="com/google/gwt/dev/javac/**"/>
      <include name="com/google/gwt/dev/jdt/**"/>
      <include name="com/google/gwt/dev/jjs/**"/>
      <include name="com/google/gwt/dev/js/**"/>
      <include name="com/google/gwt/dev/json/**"/>
      <include name="com/google/gwt/dev/resource/**"/>
      <include name="com/google/gwt/dev/util/**"/>
      <include name="com/google/gwt/soyc/**"/>
      <include name="com/google/gwt/util/**"/>
      <include name="org/eclipse/jdt/**"/>
      <classpath>
        <pathelement location="${gwt.tools.lib}/apache/ant-1.6.5.jar"/>
        <pathelement location="${gwt.tools.lib}/colt/colt-1.2.jar"/>
        <pathelement location="${gwt.tools.lib}/objectweb/asm-5.0.3/lib/asm-all-5.0.3.jar"/>
        <pathelement
            location="${gwt.tools.lib}/apache/commons/commons-collections-3.2.2.jar"/>
        <pathelement
            location="${gwt.tools.lib}/eclipse/org.eclipse.jdt.core_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
        <pathelement
            location="${gwt.tools.lib}/eclipse/jdtCompilerAdapter_3.11.2-CUSTOM-GWT-2.8-20160205.jar"/>
        <pathelement
            location="${gwt.tools.lib}/guava/guava-19.0/guava-19.0-rebased.jar"/>
        <pathelement location="${gwt.tools.lib}/gson/gson-2.6.2.jar"/>
        <pathelement location="${gwt.tools.lib}/jscomp/20160315/compiler-rebased.jar"/>
        <pathelement location="${gwt.tools.lib}/jscomp/20160315/sourcemap-rebased.jar"/>
        <pathelement location="${gwt.tools.lib}/json/android-sdk-19.1/json-android-rebased.jar"/>
        <pathelement location="${gwt.tools.lib}/jsr305/jsr305.jar"/>
        <pathelement
            location="${gwt.tools.lib}/protobuf/protobuf-2.5.0/protobuf-java-rebased-2.5.0.jar"/>
      </classpath>
    </gwt.javac>
  </target>

  <target name="compile" depends="compiler.standalone, build.alldeps.jar"
          description="Compiles this project">
    <gwt.javac srcdir="" excludes="${filter.pattern}">
      <src path="core/src"/>
      <classpath>
        <pathelement location="${alldeps.jar}"/>
      </classpath>
    </gwt.javac>
    <copy todir="${javac.out}">
      <fileset dir="core/src" includes="**/*.properties" excludes="${filter.pattern}"/>
    </copy>

    <!-- Files with hardcoded version information must be filtered -->
    <gwt.getgitinfo/>
    <condition property="filter.uptodate">
      <and>
        <available file="${filter.sentinel}"/>
        <uptodate>
          <srcfiles dir="core/src" includes="${filter.pattern}"/>
          <globmapper from="*" to="${javac.out}/*"/>
        </uptodate>
      </and>
    </condition>
    <antcall target="-filter.props"/>
  </target>

  <target name="generate.remotemessageproto.java">
    <!-- Generate the java code -->
    <exec executable="protoc" failonerror="true">
      <arg value="--java_out=core/src"/>
      <arg value="./core/src/com/google/gwt/dev/shell/remoteui/remotemessage.proto"/>
    </exec>

    <!-- Rebase the java code to match the rebased protobuf library -->
    <replace file="./core/src/com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java">
      <replacefilter token="com.google.protobuf" value="com.google.gwt.dev.protobuf"/>
    </replace>
  </target>

  <target name="checkstyle-source" description="Static analysis of source">
    <gwt.checkstyle>
      <fileset dir="core/src">
        <filename name="com/google/gwt/dev/shell/remoteui/RemoteMessageProto.java"
                  negate="yes"/>
        <filename name="com/google/gwt/dev/js/rhino/**/*.java" negate="yes"/>
        <filename name="org/eclipse/**/*.java" negate="yes"/>
        <filename name="org/apache/**/*.java" negate="yes"/>
      </fileset>
      <fileset dir="core/super"/>
    </gwt.checkstyle>
  </target>

  <target name="checkstyle-tests" description="Static analysis of tests">
    <gwt.checkstyle.tests>
      <fileset dir="core/test">
        <filename name="com/google/gwt/dev/js/rhino/**/*.java" negate="yes"/>
        <filename name="org/eclipse/**/*.java" negate="yes"/>
        <filename name="org/apache/**/*.java" negate="yes"/>
      </fileset>
    </gwt.checkstyle.tests>
  </target>

  <target name="checkstyle" description="Static analysis of source"
          depends="checkstyle-tests,checkstyle-source">
  </target>

  <target name="test" depends="build, compile.tests"
          unless="test.dev.disable"
          description="Run unit tests for this project.">
    <fileset id="tests.dev.core" dir="${javac.junit.out}"
             includes="${gwt.junit.testcase.dev.core.includes}"
             excludes="${gwt.junit.testcase.dev.core.excludes}"/>
    <gwt.junit test.name="dev" test.out="${junit.out}"
               test.args="${test.args} -devMode"
               test.jvmargs="${test.jvmargs}"
               test.cases="tests.dev.core">
      <extraclasspaths>
        <pathelement location="${alldeps.jar}"/>
        <!-- TODO: the following six items are needed because dev (alone) does
            not adhere to the .../{src,super,test} convention, having a split
            between core and (historically) oophm and the OS platforms.  When
            that unifies, these should go away. -->
        <pathelement location="${gwt.root}/${project.tail}/core/src"/>
        <pathelement location="${gwt.root}/${project.tail}/core/super"/>
        <pathelement location="${gwt.root}/${project.tail}/core/test"/>
        <!-- Pull in gwt-dev and gwt-user sources for .gwt.xml files -->
        <pathelement location="${gwt.root}/user/src/"/>
        <pathelement location="${gwt.root}/user/super/"/>
        <!-- CompilerTest compiles the hello sample. -->
        <pathelement location="${gwt.root}/samples/hello/src/"/>
        <!-- CompilerTest needs the dependecies to compile a project that uses UiBinder. -->
	<pathelement location="${gwt.tools.lib}/streamhtmlparser/streamhtmlparser-jsilver-r10/streamhtmlparser-jsilver-r10-1.5-rebased.jar"/>
        <pathelement location="${gwt.tools.lib}/gss/2015-11-04/closure-stylesheets-library-20151104-rebased.jar"/>
      </extraclasspaths>
    </gwt.junit>
  </target>

  <target name="build" depends="compile" description="Build and package this project">
    <mkdir dir="${gwt.build.lib}"/>
    <outofdate>
      <sourcefiles>
        <fileset dir="core/src">
          <exclude name="**/package.html"/>
          <exclude name="**/*.properties"/> <!-- copied and/or filtered into bin -->
          <exclude name="org/apache/COPYING"/> <!-- already in alldeps.jar -->
        </fileset>
        <fileset dir="core/super" excludes="**/package.html"/>
        <fileset dir="${javac.out}"/>
        <fileset dir="${project.build}/bin"/>
        <fileset file="${project.build}/alldeps.jar"/>
      </sourcefiles>
      <targetfiles>
        <fileset file="${project.lib}"/>
      </targetfiles>
      <sequential>
        <gwt.jar>
          <fileset dir="core/src">
            <exclude name="**/package.html"/>
            <exclude name="**/*.properties"/> <!-- copied and/or filtered into bin -->
            <exclude name="org/apache/COPYING"/> <!-- already in alldeps.jar -->
          </fileset>
          <fileset dir="core/super" excludes="**/package.html"/>
          <fileset dir="${javac.out}"/>
          <zipfileset src="${alldeps.jar}"/>

          <manifest>
            <attribute name="Main-Class" value="com.google.gwt.dev.GWTMain"/>
          </manifest>
        </gwt.jar>
      </sequential>
    </outofdate>
  </target>
</project>

