8015764c61
Java. Of course this is a very limited translation facility that is mainly focused on auto-generating Streamable ActionScript classes from their Java originals, and it doesn't actually convert method bodies, just field and method declarations, initial values, and such. Most of our Streamable classes don't have much in the way of real methods, and the autogenerator will stick new methods in when they show up on the Java side so at least we'll *know* that they need to be implemented. And the main thing: readObject and writeObject are in fact implemented by the code generator so at least we won't be plagued by annoying streaming errors when we change something on the Java side and forget to change the ActionScript side. Next up, auto-generating InvocationService interfaces and InvocationMarshaller implementations in ActionScript and ActionScript versions of DObjects. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4394 542714f4-19e9-0310-aa3c-eee0fc999fb1
280 lines
11 KiB
XML
280 lines
11 KiB
XML
<?xml version="1.0" standalone="yes"?>
|
|
<!-- build configuration -->
|
|
<project name="narya" default="compile" basedir=".">
|
|
|
|
<!-- import overriding properties -->
|
|
<property file="build.properties"/>
|
|
|
|
<!-- configuration parameters -->
|
|
<property name="app.name" value="narya"/>
|
|
<property name="deploy.dir" value="dist"/>
|
|
<property name="savedoc.dir" value="docs"/>
|
|
<property name="lib.version" value="1.0"/>
|
|
|
|
<!-- derived properties -->
|
|
<property name="javadoc.home" value="${deploy.dir}/docs"/>
|
|
<property name="classes.dir" value="${deploy.dir}/classes"/>
|
|
|
|
<!-- declare our classpath business -->
|
|
<path id="classpath">
|
|
<pathelement location="${classes.dir}"/>
|
|
<fileset dir="${deploy.dir}/lib" includes="**/*.jar"/>
|
|
</path>
|
|
|
|
<!-- generates additional methods for distributed object classes -->
|
|
<target name="gendobj" depends="prepare">
|
|
<taskdef name="dobj" classpathref="classpath"
|
|
classname="com.threerings.presents.tools.GenDObjectTask"/>
|
|
<!-- make sure the dobject class files are all compiled -->
|
|
<javac srcdir="src/java" destdir="${classes.dir}"
|
|
debug="on" optimize="${build.optimize}" deprecation="on"
|
|
source="1.5" target="1.5">
|
|
<classpath refid="classpath"/>
|
|
<include name="**/*Object.java"/>
|
|
</javac>
|
|
<!-- now generate the associated files -->
|
|
<dobj classpathref="classpath">
|
|
<fileset dir="src/java" includes="**/*Object.java"/>
|
|
</dobj>
|
|
</target>
|
|
|
|
<!-- generates marshaller and dispatcher classes for all invocation -->
|
|
<!-- service declarations -->
|
|
<target name="genservice">
|
|
<taskdef name="service" classpathref="classpath"
|
|
classname="com.threerings.presents.tools.GenServiceTask"/>
|
|
<!-- make sure the service class files are all compiled -->
|
|
<javac srcdir="src/java" destdir="${classes.dir}"
|
|
debug="on" optimize="${build.optimize}" deprecation="on"
|
|
source="1.5" target="1.5">
|
|
<classpath refid="classpath"/>
|
|
<include name="**/*Service.java"/>
|
|
<exclude name="**/InvocationService.java"/>
|
|
</javac>
|
|
<!-- now generate the associated files -->
|
|
<service header="lib/SOURCE_HEADER" classpathref="classpath">
|
|
<fileset dir="src/java" includes="**/*Service.java"
|
|
excludes="**/InvocationService.java"/>
|
|
<providerless service="AdminService"/>
|
|
<providerless service="ChatService"/>
|
|
<providerless service="SpeakService"/>
|
|
<providerless service="LocationService"/>
|
|
<providerless service="BodyService"/>
|
|
<providerless service="SimulatorService"/>
|
|
<providerless service="TimeBaseService"/>
|
|
</service>
|
|
</target>
|
|
|
|
<!-- generates sender and decoder classes for all invocation -->
|
|
<!-- receiver declarations -->
|
|
<target name="genreceiver">
|
|
<taskdef name="receiver" classpathref="classpath"
|
|
classname="com.threerings.presents.tools.GenReceiverTask"/>
|
|
<!-- make sure the receiver class files are all compiled -->
|
|
<javac srcdir="src/java" destdir="${classes.dir}"
|
|
debug="on" optimize="${build.optimize}" deprecation="on"
|
|
source="1.5" target="1.5">
|
|
<classpath refid="classpath"/>
|
|
<include name="**/*Receiver.java"/>
|
|
<exclude name="**/InvocationReceiver.java"/>
|
|
</javac>
|
|
<!-- now generate the associated files -->
|
|
<receiver header="lib/SOURCE_HEADER" classpathref="classpath">
|
|
<fileset dir="src/java" includes="**/*Receiver.java"
|
|
excludes="**/InvocationReceiver.java"/>
|
|
</receiver>
|
|
</target>
|
|
|
|
<!-- generates ActionScript versions of our Streamable classes -->
|
|
<target name="genascript">
|
|
<taskdef name="genscript" classpathref="classpath"
|
|
classname="com.threerings.presents.tools.GenActionScriptTask"/>
|
|
<!-- now generate the associated files -->
|
|
<genscript header="lib/SOURCE_HEADER" asroot="src/as"
|
|
classpathref="classpath">
|
|
<fileset dir="src/java" includes="**/data/*.java"/>
|
|
</genscript>
|
|
</target>
|
|
|
|
<!-- prepares the application directories -->
|
|
<target name="prepare">
|
|
<mkdir dir="${deploy.dir}"/>
|
|
<mkdir dir="${deploy.dir}/lib"/>
|
|
<mkdir dir="${classes.dir}"/>
|
|
<mkdir dir="${javadoc.home}"/>
|
|
<copy todir="${classes.dir}">
|
|
<fileset dir="src/java" includes="**/*.properties"/>
|
|
<fileset dir="src/java" includes="**/*.tmpl"/>
|
|
</copy>
|
|
<copy todir="${deploy.dir}/lib">
|
|
<fileset dir="lib" includes="**/*.jar"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- cleans out the installed application -->
|
|
<target name="clean">
|
|
<delete dir="${deploy.dir}"/>
|
|
<ant dir="tests" target="clean"/>
|
|
</target>
|
|
|
|
<!-- build the java class files -->
|
|
<target name="compile" depends="prepare">
|
|
<javac srcdir="src/java" destdir="${classes.dir}"
|
|
debug="on" optimize="{$build.optimize}" deprecation="on"
|
|
source="1.5" target="1.5">
|
|
<classpath refid="classpath"/>
|
|
<compilerarg value="-Xlint:unchecked"/>
|
|
</javac>
|
|
</target>
|
|
|
|
<!-- build the native libraries -->
|
|
<target name="ncompile" depends="prepare">
|
|
<echo message="Doing native compilation on ${os.name}..."/>
|
|
<exec dir="src/java/com/threerings/util/signal/${os.name}"
|
|
executable="make"><arg line="install"/></exec>
|
|
</target>
|
|
|
|
<!-- build the javadoc documentation -->
|
|
<target name="javadoc" depends="prepare">
|
|
<javadoc sourcepath="src/java" packagenames="com.threerings.*"
|
|
destdir="${javadoc.home}" stylesheetfile="docs/stylesheet.css"
|
|
additionalparam="-breakiterator"
|
|
link="http://www.threerings.net/code/narya/narya/docs/api">
|
|
<classpath refid="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>
|
|
<copy todir="${javadoc.home}">
|
|
<fileset dir="src/java" includes="**/*.png"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- builds the javadocs and stuffs them in a directory where they -->
|
|
<!-- won't be blown away when we do "clean" next time -->
|
|
<target name="savedoc" depends="javadoc">
|
|
<delete dir="${savedoc.dir}/api"/>
|
|
<copy todir="${savedoc.dir}/api">
|
|
<fileset dir="${javadoc.home}" includes="**/*"/>
|
|
</copy>
|
|
</target>
|
|
|
|
<!-- builds the various tests -->
|
|
<target name="tests">
|
|
<ant dir="tests" target="compile"/>
|
|
</target>
|
|
|
|
<!-- a target for rebuilding everything -->
|
|
<target name="all"
|
|
depends="clean,prepare,compile,ncompile,javadoc,tests,dist"/>
|
|
|
|
<!-- builds our distribution files (war and jar) -->
|
|
<target name="dist" depends="prepare,compile,ncompile,tests">
|
|
<!-- build our various jar files -->
|
|
<jar destfile="${deploy.dir}/${app.name}-base.jar">
|
|
<fileset dir="${classes.dir}" includes="com/threerings/NaryaLog**"/>
|
|
<fileset dir="${classes.dir}" includes="com/threerings/io/**"/>
|
|
<fileset dir="${classes.dir}" includes="com/threerings/util/**"/>
|
|
</jar>
|
|
<jar destfile="${deploy.dir}/${app.name}-distrib.jar">
|
|
<fileset dir="${classes.dir}" includes="com/threerings/presents/**"/>
|
|
<fileset dir="${classes.dir}" includes="com/threerings/crowd/**"/>
|
|
<fileset dir="${classes.dir}" includes="com/threerings/admin/**"/>
|
|
</jar>
|
|
<jar destfile="${deploy.dir}/${app.name}-tests.jar">
|
|
<fileset dir="tests/${classes.dir}" includes="com/threerings/**"/>
|
|
</jar>
|
|
</target>
|
|
|
|
<!-- various bits used by the retroweaver tasks -->
|
|
<property name="inpre" value="${deploy.dir}/${app.name}"/>
|
|
<property name="outpre" value="${deploy.dir}/retro/${app.name}"/>
|
|
|
|
<!-- a helper task for 'retro' -->
|
|
<target name="vweave">
|
|
<taskdef name="weave" classpathref="classpath"
|
|
classname="com.rc.retroweaver.ant.RetroWeaverTask"/>
|
|
<path id="retrocp">
|
|
<pathelement location="/usr/local/jdk1.4/jre/lib/rt.jar"/>
|
|
<fileset dir="lib" includes="**/*.jar"/>
|
|
<fileset dir="${deploy.dir}/retro" includes="*.jar"/>
|
|
</path>
|
|
<weave inputjar="${inpre}-${which}.jar" outputjar="${outpre}-${which}.jar"
|
|
failonerror="true">
|
|
<classpath refid="retrocp"/>
|
|
</weave>
|
|
</target>
|
|
|
|
<!-- converts our 1.5 code to a 1.4 compatible format -->
|
|
<target name="retro" depends="dist">
|
|
<taskdef name="weave" classpathref="classpath"
|
|
classname="com.rc.retroweaver.ant.RetroWeaverTask"/>
|
|
<mkdir dir="${deploy.dir}/retro"/>
|
|
|
|
<!-- we weave everything a first time without verification so that -->
|
|
<!-- interdependencies will resolve the second time -->
|
|
<weave inputjar="${inpre}-base.jar" outputjar="${outpre}-base.jar"/>
|
|
<weave inputjar="${inpre}-distrib.jar" outputjar="${outpre}-distrib.jar"/>
|
|
|
|
<!-- now weave again with the verifier to check for unweavable 1.5isms -->
|
|
<antcall target="vweave"><param name="which" value="base"/></antcall>
|
|
<antcall target="vweave"><param name="which" value="distrib"/></antcall>
|
|
</target>
|
|
|
|
<!-- generate a class hierarchy diagram -->
|
|
<target name="hierviz" depends="prepare,compile">
|
|
<taskdef name="viztool" classname="com.samskivert.viztool.DriverTask"/>
|
|
<viztool visualizer="com.samskivert.viztool.hierarchy.HierarchyVisualizer"
|
|
pkgroot="com.threerings.miso" classes="com.threerings.miso.*"
|
|
output="hierviz.ps">
|
|
<classpath refid="classpath"/>
|
|
</viztool>
|
|
</target>
|
|
|
|
<!-- generate a class hierarchy diagram -->
|
|
<target name="sumgen" depends="prepare,compile">
|
|
<taskdef name="viztool" classname="com.samskivert.viztool.DriverTask"/>
|
|
<viztool visualizer="com.samskivert.viztool.summary.SummaryVisualizer"
|
|
pkgroot="com.threerings.miso"
|
|
classes="com.threerings.miso.*Scene.*"
|
|
output="summary.ps">
|
|
<classpath refid="base.classpath"/>
|
|
</viztool>
|
|
</target>
|
|
|
|
<!-- creates a tarball and zipfile for source distribution -->
|
|
<target name="distrib">
|
|
<echo message="You may want to stop and run 'ant savedoc' first."/>
|
|
<echo message="Building ${lib.version} tar.gz distribution..."/>
|
|
<tar destfile="narya-${lib.version}.tar.gz" compression="gzip">
|
|
<tarfileset dir=".." mode="0775" dirmode="0775">
|
|
<include name="narya/bin/**"/>
|
|
<include name="narya/tests/bin/**"/>
|
|
<exclude name="**/CVS"/>
|
|
</tarfileset>
|
|
<tarfileset dir=".." mode="0664" dirmode="0775">
|
|
<include name="narya/**"/>
|
|
<exclude name="**/CVS"/>
|
|
<exclude name="narya/bin/**"/>
|
|
<exclude name="narya/tests/bin/**"/>
|
|
<exclude name="narya/tests/dist/**"/>
|
|
<exclude name="narya/dist/**"/>
|
|
<exclude name="narya/code/**"/>
|
|
<exclude name="narya/narya-*.*"/>
|
|
</tarfileset>
|
|
</tar>
|
|
<echo message="Building ${lib.version} zip distribution..."/>
|
|
<zip destfile="narya-${lib.version}.zip">
|
|
<fileset dir="..">
|
|
<include name="narya/**"/>
|
|
<exclude name="**/CVS"/>
|
|
<exclude name="narya/dist/**"/>
|
|
<exclude name="narya/code/**"/>
|
|
<exclude name="narya/narya-*.*"/>
|
|
</fileset>
|
|
</zip>
|
|
</target>
|
|
|
|
</project>
|