blob: 96ede84f44a24776ca9900ac4de71d11c10f46dc [file] [log] [blame]
<?xml version="1.0" encoding="utf-8" ?>
<project name="etch-chat-example" basedir="." default="help">
<description>Chat Example</description>
<target name="help"><echo>Please select a target...</echo></target>
<!-- TODO better computation of etch.home, etch.version -->
<property environment="env" />
<!-- compute ETCH_HOME -->
<property name="build.ETCH_HOME" location="${basedir}/../../target/Installers/dist" />
<condition property="etch.home" value="${env.ETCH_HOME}">
<isset property="${env.ETCH_HOME}" />
</condition>
<condition property="etch.home" value="${build.ETCH_HOME}" >
<not><isset property="etch.home" /></not>
</condition>
<!-- compute etch.version -->
<condition property="etch.version" value="1.0.0" >
<not><isset property="etch.version" /></not>
</condition>
<!-- Csharp Support -->
<condition property="USE.dotnet">
<and>
<os family="windows" />
<available file="${env.SystemRoot}/Microsoft.NET/Framework/v2.0.50727/msbuild.exe" />
</and>
</condition>
<condition property="USE.mono">
<and>
<not><os family="windows" /></not>
<available file="${env.MONO_HOME}/bin/mdtool" />
<!-- TODO mono support is not fully baked, use -DUSE.mono to test
-->
<isset property="USE.mono" />
</and>
</condition>
<condition property="BUILD.csharp">
<or>
<isset property="USE.dotnet" />
<isset property="USE.mono" />
</or>
</condition>
<!-- import etch task -->
<taskdef
name="etch"
onerror="report"
classname="etch.tools.ant.EtchCompileTask"
classpath="${etch.home}/lib/etch-ant-plugin-${etch.version}.jar" />
<!-- import dotnet task -->
<condition property="ant.dotnet.jar" value="ant-dotnet-1.0.jar" >
<not><isset property="ant.dotnet.jar" /></not>
</condition>
<taskdef
onerror="report"
resource="org/apache/ant/dotnet/antlib.xml"
classpath="${ant.dotnet.jar}" />
<macrodef name="mdtool">
<attribute name="dir" default="." />
<attribute name="failonerror" default="false" />
<attribute name="project" default="project.csproj" />
<attribute name="target" default="${build.target}" />
<sequential>
<exec executable="${env.MONO_HOME}/bin/mdtool" dir="@{dir}" failonerror="@{failonerror}" >
<arg value="build" />
<arg value="--buildfile:@{project}" />
</exec>
</sequential>
</macrodef>
<!-- set properties -->
<property name="target" location="${basedir}/target" />
<property name="src" location="${basedir}/src" />
<property name="bin" location="${target}/bin" />
<property name="generated-sources" location="${target}/generated-sources" />
<property name="classes" location="${target}/classes" />
<property name="test-results" location="${target}/test-results" />
<!-- initialize -->
<target name="init" >
<mkdir dir="${target}" />
<mkdir dir="${bin}" />
<mkdir dir="${generated-sources}" />
<mkdir dir="${classes}" />
<mkdir dir="${test-results}" />
</target>
<!-- build the server -->
<target name="generate-sources" depends="init" >
<!-- generate sources -->
<mkdir dir="${generated-sources}/main/etch/java" />
<etch home="${etch.home}"
file="${src}/main/etch/Chat.etch"
what="both"
binding="java"
output="${generated-sources}/main/etch/java"
/>
<mkdir dir="${generated-sources}/main/etch/csharp" />
<etch home="${etch.home}"
file="${src}/main/etch/Chat.etch"
what="both"
binding="csharp"
output="${generated-sources}/main/etch/csharp"
/>
</target>
<target name="build-java" depends="generate-sources" >
<!-- compile sources -->
<mkdir dir="${classes}" />
<javac target="1.5" destdir="${classes}">
<src path="${generated-sources}/main/etch/java" />
<src path="${src}/main/java" />
<classpath>
<pathelement location="${etch.home}/lib/etch-java-runtime-${etch.version}.jar" />
</classpath>
</javac>
<!-- Create Jar -->
<jar jarfile="${bin}/chat.jar" >
<manifest>
<attribute name="Class-Path" value="etch-java-runtime-${etch.version}.jar" />
</manifest>
<fileset dir="${classes}">
<include name="**/*" />
</fileset>
</jar>
<!-- copy in dependencies -->
<copy todir="${bin}">
<fileset dir="${etch.home}/lib">
<include name="etch-java-runtime-*.jar" />
</fileset>
</copy>
</target>
<target name="build-csharp-with-mono" depends="generate-sources" if="USE.mono" >
<mdtool dir="${src}/main/csharp/ChatClientProj" project="ChatClientProj.csproj" />
<mdtool dir="${src}/main/csharp/ChatListenerProj" project="ChatListenerProj.csproj" />
</target>
<target name="build-csharp-with-dotnet" depends="generate-sources" if="USE.dotnet" >
<msbuild buildfile="${src}/main/csharp/ChatListenerProj/ChatListenerProj.csproj">
<property name="Configuration" value="${build.target}" />
</msbuild>
<msbuild buildfile="${src}/main/csharp/ChatClientProj/ChatClientProj.csproj">
<property name="Configuration" value="${build.target}" />
</msbuild>
<copy todir="${bin}">
<fileset dir="${src}/main/csharp/ChatListenerProj/bin/${build.target}">
<include name="*" />
</fileset>
<fileset dir="${src}/main/csharp/ChatClientProj/bin/${build.target}">
<include name="*" />
</fileset>
</copy>
</target>
<target name="build-csharp" depends="build-csharp-with-mono,build-csharp-with-dotnet" />
<target name="build" depends="build-java,build-csharp" />
<!-- run unit tests -->
<target name="test" depends="build" >
<echo>
Build Complete!
To run the chat-test example, open three command-windows in this directory.
cmd-window-1:
> cd target/bin
> java -cp chat.jar etch.examples.chat.MainChatListener
cmd-window-2:
> cd target/bin
> java -cp chat.jar etch.examples.chat.MainChatClient
cmd-window-3:
> cd target/bin
> java -cp chat.jar etch.examples.chat.MainChatClient
cmd-window-2 and cmd-window-2 can now chat with each other !!!
</echo>
</target>
<!-- build everything -->
<target name="init-debug">
<property name="build.target" value="Debug" />
</target>
<target name="init-release">
<property name="build.target" value="Release" />
</target>
<target name="debug" depends="init-debug,test" />
<target name="release" depends="init-release,test" />
<!-- clean -->
<target name="clean">
<delete dir="${target}" quiet="true" />
</target>
</project>