Files
narya/build.xml
T
Michael Bayne 0a522606c9 Since TestClient is used outside of Narya, it gets to live in with the rest of
the real source code. That's where reusable classes live. Amazing!

Also cleaned up some build.xml bits and nixed the Retroweaver stuff. I thought
we might have still been using that, but then I saw the hardcoded path to
/usr/local/jdk1.4 and knew that it couldn't be so.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@6285 542714f4-19e9-0310-aa3c-eee0fc999fb1
2010-11-18 05:34:49 +00:00

354 lines
16 KiB
XML

<?xml version="1.0" standalone="yes"?>
<!-- build configuration -->
<project name="narya" default="compile" xmlns:artifact="urn:maven-artifact-ant">
<property name="lib.name" value="narya"/>
<property name="deploy.dir" value="dist"/>
<property name="src.dir" value="src/main/java"/>
<property name="rsrc.dir" value="src/main/resources"/>
<property name="tsrc.dir" value="src/test/java"/>
<property name="classes.dir" value="${deploy.dir}/classes"/>
<property name="tclasses.dir" value="${deploy.dir}/test-classes"/>
<property name="gwtjar.dir" value="${deploy.dir}/gwt-jar"/>
<property name="maven-ant.vers" value="2.1.1"/>
<property name="maven-ant.dir" value="${user.home}/.m2/ant-support"/>
<property name="maven-ant.jar" value="${maven-ant.dir}/maven-ant-tasks-${maven-ant.vers}.jar"/>
<property name="maven-ant.url"
value="http://mirrors.ibiblio.org/pub/mirrors/apache/maven/binaries"/>
<condition property="maven-ant.exists"><available file="${maven-ant.jar}"/></condition>
<target name="-download-maven-ant" unless="maven-ant.exists">
<mkdir dir="${maven-ant.dir}"/>
<get src="${maven-ant.url}/maven-ant-tasks-${maven-ant.vers}.jar"
dest="${maven-ant.jar}" usetimestamp="true"/>
</target>
<target name="-init-maven-ant" depends="-download-maven-ant">
<taskdef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="urn:maven-artifact-ant" classpath="${maven-ant.jar}"/>
<artifact:pom id="pom" file="pom.xml"/>
<artifact:dependencies pathId="compile.classpath" pomRefId="pom" useScope="compile"/>
<artifact:dependencies pathId="testlibs.classpath" pomRefId="pom" useScope="test"/>
</target>
<target name="-prepare" depends="-init-maven-ant">
<mkdir dir="${deploy.dir}"/>
<mkdir dir="${deploy.dir}/lib"/>
<mkdir dir="${classes.dir}"/>
<copy todir="${classes.dir}">
<fileset dir="${rsrc.dir}" includes="**/*.properties"/>
<fileset dir="${rsrc.dir}" includes="**/*.mustache"/>
<fileset dir="${rsrc.dir}" includes="**/*.tmpl"/>
</copy>
<path id="built.classpath">
<path refid="compile.classpath"/>
<pathelement location="${classes.dir}"/>
</path>
<path id="test.classpath">
<path refid="testlibs.classpath"/>
<pathelement location="${classes.dir}"/>
<pathelement location="${tclasses.dir}"/>
</path>
<!-- TEMP: needed for ActionScript library build -->
<property name="libs.dir" value="lib"/>
<copy todir="${deploy.dir}/lib" flatten="true">
<fileset dir="${libs.dir}">
<include name="aspirin*.swc"/>
<include name="asunit.swc"/>
<include name="corelib.swc"/>
</fileset>
</copy>
<!-- END TEMP -->
</target>
<target name="-preptools" depends="-prepare">
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" deprecation="on"
source="1.5" target="1.5" classpathref="compile.classpath">
<compilerarg value="-Xlint"/>
<compilerarg value="-Xlint:-serial"/>
<include name="com/threerings/presents/tools/**"/>
</javac>
<taskdef resource="com/threerings/presents/tools.properties" classpathref="built.classpath"/>
</target>
<target name="clean" description="Cleans out build results">
<delete dir="${classes.dir}"/>
<delete dir="${tclasses.dir}"/>
<delete dir="${deploy.dir}/docs"/>
<delete dir="${gwtjar.dir}"/>
<delete failonerror="false"><fileset dir="${deploy.dir}" includes="*.jar"/></delete>
<delete failonerror="false"><fileset dir="${deploy.dir}" includes="*.swc"/></delete>
</target>
<target name="distclean" description="Scorched earth clean">
<delete dir="${deploy.dir}"/>
</target>
<target name="compile" depends="-prepare" description="Builds the Java code.">
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" deprecation="on"
source="1.5" target="1.5" classpathref="compile.classpath">
<compilerarg value="-Xlint"/>
<compilerarg value="-Xlint:-serial"/>
</javac>
<mkdir dir="${tclasses.dir}"/>
<copy todir="${tclasses.dir}"><fileset dir="src/test/resources" includes="**"/></copy>
<javac srcdir="${tsrc.dir}" destdir="${tclasses.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" source="1.5" target="1.5"
encoding="utf-8" classpathref="test.classpath">
<compilerarg value="-Xlint"/>
<compilerarg value="-Xlint:-serial"/>
</javac>
</target>
<target name="-checkaslib">
<condition property="no_build_aslib">
<not><available file="${flexsdk.dir}/lib/compc.jar"/></not>
</condition>
<condition property="no_rebuild_aslib"><or>
<isset property="no_build_aslib"/>
<uptodate targetfile="${deploy.dir}/${lib.name}lib.swc">
<srcfiles dir="src/as" includes="**/*.as"/>
</uptodate>
</or></condition>
</target>
<target name="aslib" unless="no_rebuild_aslib" depends="-checkaslib"
description="Builds the ActionScript code">
<!-- generate aslib-config.xml for Flash Player and general compilation -->
<copy file="etc/aslib-config.xml.in" tofile="${deploy.dir}/aslib-config.xml">
<filterset>
<filter token="flex_sdk_dir" value="${flexsdk.dir}"/>
<filter token="lib_name" value="${lib.name}"/>
</filterset>
</copy>
<java jar="${flexsdk.dir}/lib/compc.jar" fork="true" failonerror="true">
<arg value="-load-config"/>
<arg value="${deploy.dir}/aslib-config.xml"/>
<arg value="-compiler.optimize"/>
<arg value="-compiler.source-path=src/as/"/>
<arg value="-include-sources=src/as/"/>
<arg value="-output"/>
<arg value="${deploy.dir}/${lib.name}lib.swc"/>
</java>
<delete file="${deploy.dir}/aslib-config.xml"/>
</target>
<target name="javadoc" depends="-prepare" description="Builds the Java documentation">
<mkdir dir="${deploy.dir}/docs"/>
<javadoc sourcepath="${src.dir}" packagenames="com.threerings.*"
destdir="${deploy.dir}/docs" stylesheetfile="docs/stylesheet.css"
link="http://www.threerings.net/code/narya/docs/api"
additionalparam="-breakiterator" classpathref="compile.classpath">
<link href="http://java.sun.com/j2se/1.5/docs/api/"/>
<!-- ant documentation is not available online, sorry kids -->
<link href="file:///usr/share/doc/ant-doc/javadocs"/>
<link href="http://samskivert.com/code/samskivert/samskivert/docs/api"/>
</javadoc>
</target>
<target name="asdoc" unless="no_build_aslib" depends="-checkaslib"
description="Builds the ActionScript documention">
<mkdir dir="${deploy.dir}/asdocs"/>
<java classpath="${flexsdk.dir}/lib/asdoc.jar" classname="flex2.tools.ASDoc" fork="true">
<jvmarg value="-Xmx1024m"/>
<jvmarg value="-Dsun.io.useCanonCashes=false"/>
<jvmarg value="-Xbootclasspath/p:${flexsdk.dir}/asdoc/lib/xalan.jar"/>
<arg value="+flexlib=${flexsdk.dir}/frameworks"/>
<arg line="-library-path ${flexsdk.dir}/frameworks/libs"/>
<arg line="-templates-path ${flexsdk.dir}/asdoc/templates"/>
<arg line="-library-path ${deploy.dir}/lib"/>
<arg line="-doc-sources src/as"/>
<arg line="-output ${deploy.dir}/asdocs"/>
</java>
</target>
<property name="test" value=""/>
<target name="tests" depends="compile"
description="Runs unit tests. Use -Dtest=Foo to run only FooTest.">
<taskdef name="unit" classpathref="test.classpath"
classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"/>
<mkdir dir="${deploy.dir}/test-reports"/>
<unit printsummary="off" haltonfailure="yes">
<classpath refid="test.classpath"/>
<sysproperty key="test_dir" value="${tclasses.dir}"/>
<formatter type="brief" usefile="false"/>
<formatter type="xml"/>
<batchtest todir="${deploy.dir}/test-reports">
<fileset dir="${tsrc.dir}" includes="**/*${test}*Test.java"/>
</batchtest>
</unit>
</target>
<target name="dist" depends="compile,procstream,aslib" description="Builds jar files.">
<!-- build our main jar file -->
<jar destfile="${deploy.dir}/${lib.name}.jar">
<fileset dir="${classes.dir}" includes="**"/>
</jar>
<!-- we export a small selection of classes for use by GWT -->
<mkdir dir="${gwtjar.dir}"/>
<copy todir="${gwtjar.dir}">
<fileset dir="${src.dir}">
<include name="**/web/server/*Exception.java"/>
<include name="**/web/client/*.java"/>
<include name="**/web/gwt/*.java"/>
<include name="**/web/*.gwt.xml"/>
</fileset>
</copy>
<jar basedir="${gwtjar.dir}" destfile="${deploy.dir}/${lib.name}-gwt.jar"/>
<delete dir="${gwtjar.dir}"/>
</target>
<target name="genrecord" depends="-prepare"
description="Generates fields for persistent record classes.">
<taskdef name="grecord" classname="com.samskivert.depot.tools.GenRecordTask"
classpathref="compile.classpath"/>
<!-- make sure the record class files are all compiled -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="on" optimize="${build.optimize}"
includeAntRuntime="false" deprecation="on" source="1.5" target="1.5"
classpathref="compile.classpath">
<include name="**/*Record.java"/>
</javac>
<!-- now update the source files -->
<grecord classpathref="built.classpath">
<fileset dir="${src.dir}" includes="**/*Record.java"/>
</grecord>
</target>
<target name="gendobj" depends="-preptools"
description="Generates additional methods for distributed object classes">
<!-- make sure the dobject class files are all compiled -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false" debug="on"
optimize="${build.optimize}" deprecation="on" source="1.5" target="1.5"
classpathref="compile.classpath">
<include name="**/*Object.java"/>
</javac>
<!-- now generate the associated files -->
<gendobj classpathref="built.classpath">
<fileset dir="${src.dir}" includes="**/*Object.java"/>
</gendobj>
</target>
<target name="genservice" depends="-preptools"
description="Generates marshaller and dispatcher classes for all invocation services">
<!-- make sure the service class files are all compiled -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false" debug="on"
optimize="${build.optimize}" deprecation="on" source="1.5" target="1.5"
classpathref="compile.classpath">
<include name="**/*Service.java"/>
<exclude name="**/InvocationService.java"/>
</javac>
<!-- generate services with an actionscript counterpart-->
<genservice header="lib/SOURCE_HEADER" asroot="src/as" classpathref="built.classpath">
<fileset dir="${src.dir}" includes="**/*Service.java">
<exclude name="**/RegistrationService.java"/>
<exclude name="**/InvocationService.java"/>
<exclude name="**/peer/**"/>
<exclude name="**/admin/**"/>
</fileset>
<providerless service="ChatService"/>
<providerless service="SimulatorService"/>
<providerless service="TimeBaseService"/>
</genservice>
<!-- generate java-only services -->
<genservice header="lib/SOURCE_HEADER" classpathref="built.classpath">
<fileset dir="${src.dir}" includes="**/RegistrationService.java"/>
<fileset dir="${src.dir}" includes="**/peer/**/*Service.java"/>
<fileset dir="${src.dir}" includes="**/admin/**/*Service.java"
excludes="**/gwt/ConfigService.java"/>
</genservice>
<gencppservice classpathref="built.classpath" cpproot="src/cpp">
<fileset dir="${src.dir}" includes="**/RegistrationService.java"/>
</gencppservice>
</target>
<target name="genreceiver" depends="-preptools"
description="Generates sender and decoder classes for all invocation receivers">
<!-- make sure the receiver class files are all compiled -->
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeAntRuntime="false"
debug="on" optimize="${build.optimize}" deprecation="on" source="1.5" target="1.5"
classpathref="compile.classpath">
<include name="**/*Receiver.java"/>
<exclude name="**/InvocationReceiver.java"/>
</javac>
<!-- now generate the associated files -->
<genreceiver header="lib/SOURCE_HEADER" classpathref="built.classpath">
<fileset dir="${src.dir}" includes="**/*Receiver.java"
excludes="**/InvocationReceiver.java"/>
</genreceiver>
</target>
<target name="genstream" depends="-preptools" description="Generates C++ streamable classes.">
<gencppstreamable classpathref="built.classpath" cpproot="src/cpp">
<generate class="com.threerings.presents.client.InvocationReceiver$Registration"/>
<generate class="com.threerings.presents.data.ClientObject"/>
<generate class="com.threerings.presents.data.PermissionPolicy"/>
<generate class="com.threerings.presents.dobj.DEvent"/>
<generate class="com.threerings.presents.dobj.DObject"/>
<generate class="com.threerings.presents.dobj.EntryAddedEvent"/>
<generate class="com.threerings.presents.dobj.EntryEvent"/>
<generate class="com.threerings.presents.dobj.EntryRemovedEvent"/>
<generate class="com.threerings.presents.dobj.EntryUpdatedEvent"/>
<generate class="com.threerings.presents.dobj.InvocationNotificationEvent"/>
<generate class="com.threerings.presents.dobj.InvocationRequestEvent"/>
<generate class="com.threerings.presents.dobj.NamedEvent"/>
<generate class="com.threerings.presents.net.AuthRequest"/>
<generate class="com.threerings.presents.net.AuthResponse"/>
<generate class="com.threerings.presents.net.AuthResponseData"/>
<generate class="com.threerings.presents.net.BootstrapData"/>
<generate class="com.threerings.presents.net.BootstrapNotification"/>
<generate class="com.threerings.presents.net.Credentials"/>
<generate class="com.threerings.presents.net.DownstreamMessage"/>
<generate class="com.threerings.presents.net.EventNotification"/>
<generate class="com.threerings.presents.net.ForwardEventRequest"/>
<generate class="com.threerings.presents.net.ObjectResponse"/>
<generate class="com.threerings.presents.net.PingRequest"/>
<generate class="com.threerings.presents.net.PongResponse"/>
<generate class="com.threerings.presents.net.UpstreamMessage"/>
<generate class="com.threerings.presents.net.UsernamePasswordCreds"/>
<generate class="com.threerings.util.Name"/>
</gencppstreamable>
</target>
<target name="procstream" depends="-preptools"
description="Adds readField and writeField methods to Streamable classes">
<instream outdir="${classes.dir}">
<path refid="built.classpath"/>
<fileset dir="${classes.dir}" includes="**/data/*.class"/>
<fileset dir="${classes.dir}" includes="**/net/*.class"/>
<fileset dir="${classes.dir}" includes="**/dobj/*.class"/>
<fileset dir="${classes.dir}" includes="**/util/*.class"/>
</instream>
</target>
<target name="genascript" depends="-preptools"
description="Generates ActionScript versions of our Streamable classes">
<genascript header="lib/SOURCE_HEADER" asroot="src/as">
<fileset dir="${src.dir}" includes="**/data/*.java"/>
</genascript>
</target>
<target name="snapshot" description="Creates a zipfile with our source distribution">
<delete file="${deploy.dir}/${lib.name}-snapshot.zip"/>
<mkdir dir="${deploy.dir}/snapshot/${lib.name}"/>
<copy todir="${deploy.dir}/snapshot/${lib.name}">
<fileset dir=".">
<include name="**"/>
<exclude name="${deploy.dir}/**"/>
<exclude name="${lib.name}-*.zip"/>
</fileset>
</copy>
<copy todir="${deploy.dir}/snapshot/${lib.name}/lib">
<fileset dir="${deploy.dir}/lib" includes="*.jar"/>
</copy>
<copy todir="${deploy.dir}/snapshot/${lib.name}/docs/api">
<fileset dir="${deploy.dir}/docs" includes="**"/>
</copy>
<zip destfile="${deploy.dir}/${lib.name}-snapshot.zip" basedir="${deploy.dir}/snapshot"/>
<delete dir="${deploy.dir}/snapshot"/>
</target>
</project>