blob: 3d5761b5bfab93b88124d214620d54aff654fd81 [file] [log] [blame]
<!--
Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
for details. All rights reserved. Use of this source code is governed by a
BSD-style license that can be found in the LICENSE file.
-->
<project default="dist">
<import file="sources.xml"/>
<import file="test_sources.xml"/>
<!--
The file build.properties does not exist. If provided, properties can be customized.
-->
<property file="build.properties" />
<!--
Configuration properties.
-->
<property name="build.dir" value="out"/>
<property name="build.classes.dir" value="${build.dir}/classes"/>
<property name="build.test.classes.dir" value="${build.dir}/test/classes"/>
<property name="dartc.jar" value="${build.dir}/dartc.jar"/>
<property name="dist.dir" value="${build.dir}/dist"/>
<property name="test.report.dir" value="${build.dir}/test"/>
<property name="third_party.dir" value="../third_party"/>
<property name="test_py" location="../tools/test.py"/>
<!--
Define buildtime and runtime classpaths.
-->
<path id="classpath.compile">
<pathelement location="${third_party.dir}/args4j/2.0.12/args4j-2.0.12.jar"/>
<pathelement location="${third_party.dir}/guava/r09/guava-r09.jar"/>
<pathelement location="${third_party.dir}/json/r2_20080312/json.jar"/>
</path>
<path id="classpath.runtime">
<path refid="classpath.compile"/>
</path>
<path id="classpath.compile.tests">
<path refid="classpath.compile"/>
<pathelement location="${build.classes.dir}"/>
<pathelement location="${third_party.dir}/junit/v4_8_2/junit.jar"/>
</path>
<path id="classpath.run.tests">
<path refid="classpath.compile.tests"/>
<pathelement location="${build.test.classes.dir}"/>
<pathelement location="${third_party.dir}/hamcrest/v1_3/hamcrest-core-1.3.0RC2.jar"/>
<pathelement location="${third_party.dir}/hamcrest/v1_3/hamcrest-generator-1.3.0RC2.jar"/>
<pathelement location="${third_party.dir}/hamcrest/v1_3/hamcrest-integration-1.3.0RC2.jar"/>
<pathelement location="${third_party.dir}/hamcrest/v1_3/hamcrest-library-1.3.0RC2.jar"/>
<pathelement location="${third_party.dir}/fest/fest-util-1.1.6.jar"/>
<pathelement location="${third_party.dir}/fest/fest-assert-1.4.jar"/>
</path>
<target name="compile" description="Compiles all of the java source and copies resources to the classes directory.">
<!--
Ensure the necessary subdirectories exist.
-->
<mkdir dir="${build.classes.dir}"/>
<javac destdir="${build.classes.dir}"
sourcepath=""
srcdir="java"
includes="${java_sources}"
fork="true"
debug="true">
<classpath refid="classpath.compile"/>
</javac>
<!--
Copy all non-java resources.
-->
<copy todir="${build.classes.dir}">
<filelist refid="java_resources"/>
</copy>
</target>
<!--
We rely on GYP to call these targets when the dartc dependencies change, hence this
ant file cannot be used standalone.
-->
<target name="compile-tests" depends="compile" description="Compiles all of the java tests and copies the resources to the test classes directory." >
<mkdir dir="${build.test.classes.dir}"/>
<javac destdir="${build.test.classes.dir}"
sourcepath=""
srcdir="javatests"
includes="${javatests_sources}"
excludes="com/google/dart/compiler/vm/**"
fork="true"
debug="true">
<classpath refid="classpath.compile.tests"/>
</javac>
<!--
Copy the non-java resources.
-->
<copy todir="${build.test.classes.dir}">
<filelist refid="javatests_resources"/>
</copy>
</target>
<target name="dartc.jar" depends="compile" description="Creates a jar for dartc without bundling the dependencies.">
<jar destfile="${dartc.jar}" basedir="${build.classes.dir}" manifest="dartc.mf"/>
</target>
<target name="dist" depends="dartc.jar" description="Creates a directory that contains a standalone distribution for dartc.">
<!--
Ensure the necessary subdirectories exist.
-->
<mkdir dir="${dist.dir}/bin"/>
<mkdir dir="${dist.dir}/lib"/>
<!--
Copy the dart jar to the lib folder.
-->
<copy file="${dartc.jar}" todir="${dist.dir}/lib"/>
<!--
Re-root the classpaths from third_party into the lib folder of the distro.
-->
<pathconvert property="dartc.classpath.runtime.unix" targetos="unix" refid="classpath.runtime">
<regexpmapper from="${third_party.dir}/(.*)" to="$DARTC_LIBS/\1"/>
</pathconvert>
<copy file="scripts/dartc.sh" tofile="${dist.dir}/bin/dartc">
<filterset>
<filter token="CLASSPATH" value="$DARTC_LIBS/dartc.jar:${dartc.classpath.runtime.unix}"/>
</filterset>
</copy>
<chmod file="${dist.dir}/bin/dartc" perm="a+rx"/>
<!--
TODO: The following files are not strictly due to dist, move them out.
-->
<copy todir="${build.dir}">
<fileset dir="scripts">
<include name="dartc_run.sh"/>
<include name="dartc_metrics.sh"/>
</fileset>
<filterset>
<filter token="CLASSPATH" value="$DARTC_LIBS/dartc.jar:${dartc.classpath.runtime.unix}"/>
</filterset>
</copy>
<chmod file="${build.dir}/dartc_run.sh" perm="a+rx"/>
<chmod file="${build.dir}/dartc_metrics.sh" perm="a+rx"/>
<!--
Copy of all of the dartc dependencies to the lib folder.
-->
<copy todir="${dist.dir}/lib">
<path refid="classpath.runtime"/>
<regexpmapper from="${third_party.dir}/(.*)" to="\1"/>
</copy>
</target>
<target name="clean" description="Deletes the build output directory.">
<delete dir="${build.dir}"/>
<delete dir="${dist.dir}"/>
</target>
<target name="tests.jar" depends="compile-tests">
<jar destfile="${build.dir}/tests.jar" basedir="${build.test.classes.dir}"/>
</target>
</project>