Blob Blame History Raw
<!-- ant build script by gil -->
<project
  name="akka"
  basedir="." default="build">

  <property name="name"                     value="${ant.project.name}"/>
  <property name="version"                  value="@VERSION@"/>

  <property name="actor.dir"                value="${basedir}/${name}-actor"/>
  <property name="actor.src.dir"            value="${actor.dir}/src/main"/>
  <property name="actor.build.dir"          value="${actor.dir}/build/classes"/>
  <property name="actor.resources.dir"      value="${actor.dir}/src/main/resources"/>

  <property name="cluster.dir"              value="${basedir}/${name}-cluster"/>
  <property name="cluster.src.dir"          value="${cluster.dir}/src/main"/>
  <property name="cluster.build.dir"        value="${cluster.dir}/build/classes"/>
  <property name="cluster.resources.dir"    value="${cluster.dir}/src/main/resources"/>
  <property name="cluster.protobuf.dir"     value="${cluster.src.dir}/protobuf"/>

  <property name="remote.dir"               value="${basedir}/${name}-remote"/>
  <property name="remote.src.dir"           value="${remote.dir}/src/main"/>
  <property name="remote.build.dir"         value="${remote.dir}/build/classes"/>
  <property name="remote.resources.dir"     value="${remote.dir}/src/main/resources"/>
  <property name="remote.protobuf.dir"      value="${remote.src.dir}/protobuf"/>

  <property name="slf4j.dir"                value="${basedir}/${name}-slf4j"/>
  <property name="slf4j.src.dir"            value="${slf4j.dir}/src/main"/>
  <property name="slf4j.build.dir"          value="${slf4j.dir}/build/classes"/>
  <property name="slf4j.resources.dir"      value="${slf4j.dir}/src/main/resources"/>

  <path id="scala.classpath">
    <fileset dir="/usr/share/java" includes="scala/*.jar"/>
  </path>

  <path id="actor.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="agent.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${agent.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="scala-stm.jar"/>
  </path>

  <path id="cluster.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${cluster.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <pathelement location="${remote.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-remote.jar"/>
    <fileset dir="/usr/share/java"   includes="protobuf.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="dataflow.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${dataflow.build.dir}"/>
  </path>

  <path id="kernel.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${kernel.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>
  
  <path id="osgi.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${osgi.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="osgi-compendium/osgi.cmpn.jar"/>
    <fileset dir="/usr/share/java"   includes="osgi-core/osgi.core.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="remote.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${remote.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="netty.jar"/>
    <fileset dir="/usr/share/java"   includes="protobuf.jar"/>
    <fileset dir="/usr/share/java"   includes="uncommons-maths.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="slf4j.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${slf4j.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="slf4j/slf4j-api.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="transactor.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${transactor.build.dir}"/>
    <pathelement location="${actor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="/usr/share/java"   includes="scala-stm.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
  </path>

  <path id="doc.classpath">
    <path refid="scala.classpath"/>
    <pathelement location="${actor.build.dir}"/>
    <pathelement location="${agent.build.dir}"/>
    <pathelement location="${cluster.build.dir}"/>
    <pathelement location="${dataflow.build.dir}"/>
    <pathelement location="${kernel.build.dir}"/>
    <pathelement location="${osgi.build.dir}"/>
    <pathelement location="${remote.build.dir}"/>
    <pathelement location="${slf4j.build.dir}"/>
    <pathelement location="${transactor.build.dir}"/>
    <fileset dir="${basedir}/target" includes="${name}-actor.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-agent.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-cluster.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-dataflow.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-kernel.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-osgi.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-remote.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-slf4j.jar"/>
    <fileset dir="${basedir}/target" includes="${name}-transactor.jar"/>
    <fileset dir="/usr/share/java"   includes="scala/scala-library.jar"/>
    <fileset dir="/usr/share/java"   includes="typesafe-config.jar"/>
    <fileset dir="/usr/share/java"   includes="osgi-compendium/osgi.cmpn.jar"/>
    <fileset dir="/usr/share/java"   includes="osgi-core/osgi.core.jar"/>
    <fileset dir="/usr/share/java"   includes="netty.jar"/>
    <fileset dir="/usr/share/java"   includes="protobuf.jar"/>
    <fileset dir="/usr/share/java"   includes="uncommons-maths.jar"/>
    <fileset dir="/usr/share/java"   includes="slf4j/slf4j-api.jar"/>
    <fileset dir="/usr/share/java"   includes="scala-stm.jar"/>
  </path>
  
  <taskdef resource="scala/tools/ant/antlib.xml" classpathref="scala.classpath"/>

  <target name="init">
    <mkdir dir="target"/>
    <mkdir dir="target/apidocs"/>
  </target>

  <target name="clean">
    <delete dir="target"/>
  </target>

  <target name="clean-all" depends="clean">
    <delete dir="project/build/target"/>
    <delete dir="project/boot"/>
  </target>

  <target name="dist" depends="init,build"
    description="generate the distribution" >
  </target>

  <!-- TODO  akka-camel akka-contrib akka-durable-mailboxes akka-persistence akka-samples akka-zeromq -->
  <target name="build" 
    depends="build.actor,build.kernel,build.agent,build.dataflow,build.osgi,build.remote,build.cluster,build.slf4j,build.transactor" 
    description="Compile the sources">
  </target>
  
  <target name="build.actor" description="Build Akka Actor">
    <echo message="Build Akka Actor" />

    <!--TODO create-bnd-file
      destfile="actor"
      bundlename="com.typesafe.akka.actor"
      symbolicname="com.typesafe.akka.actor"
      priv="reference.conf"/-->

    <compile-mix-mode
      buildclasspath="actor.classpath"
      dirsrc="${actor.src.dir}"
      destfile="${actor.build.dir}"/>

    <copy todir="${actor.build.dir}" overwrite="true">
      <fileset dir="${actor.resources.dir}" includes="**/*.conf"/>
    </copy>

    <create-jar
      basedir="${actor.build.dir}"
      destfile="actor"
      paramvalue="target"/>
    <!--TODO osgifi
      destfile="actor"
      basedir="${actor.build.dir}"
      bndfile="${name}-actor.bnd"
      paramvalue="target"/-->
  </target>

  <target name="build.agent" description="Build Akka Agent">
    <echo message="Build Akka Agent" />
    <compile-scala
      buildclasspath="agent.classpath"
      dirsrc="${agent.src.dir}"
      destfile="${agent.build.dir}"/>

    <copy todir="${agent.build.dir}" overwrite="true">
      <fileset dir="${agent.resources.dir}" includes="**/*.conf"/>
    </copy>

    <create-jar
      basedir="${agent.build.dir}"
      destfile="agent"
      paramvalue="target"/>
  </target>

  <target name="build.cluster" description="Build Akka Cluster">
    <echo message="Build Akka Cluster" />

    <path id="cluster.proto.path">
      <fileset dir="${cluster.protobuf.dir}">
        <include name="**/*.proto" />
      </fileset>
    </path>
    <pathconvert pathsep=" " property="cluster.proto.files" refid="cluster.proto.path" />
    <echo message="protoc --java_out=${cluster.src.dir}/java --proto_path=${cluster.protobuf.dir} ${cluster.proto.files}"/>
    <exec executable="protoc" searchpath="true">
      <arg value="--java_out=${cluster.src.dir}/java" />
      <arg value="--proto_path=${cluster.protobuf.dir}" />
      <arg line="${cluster.proto.files}" />
    </exec>

    <compile-mix-mode
      buildclasspath="cluster.classpath"
      dirsrc="${cluster.src.dir}"
      destfile="${cluster.build.dir}"/>

    <copy todir="${cluster.build.dir}" overwrite="true">
      <fileset dir="${cluster.resources.dir}" includes="**/*.conf"/>
    </copy>

    <create-jar
      basedir="${cluster.build.dir}"
      destfile="cluster"
      paramvalue="target"/>
  </target>

  <target name="build.dataflow" description="Build Akka Dataflow">
    <echo message="Build Akka Dataflow" />
    <compile-scala
      buildclasspath="dataflow.classpath"
      dirsrc="${dataflow.src.dir}"
      destfile="${dataflow.build.dir}"/>

    <create-jar
      basedir="${dataflow.build.dir}"
      destfile="dataflow"
      paramvalue="target"/>
  </target>

  <target name="build.kernel" description="Build Akka Kernel">
    <echo message="Build Akka Kernel" />
    <compile-scala
      buildclasspath="kernel.classpath"
      dirsrc="${kernel.src.dir}"
      destfile="${kernel.build.dir}"/>

    <create-jar
      basedir="${kernel.build.dir}"
      destfile="kernel"
      paramvalue="target"/>
  </target>

  <target name="build.osgi" description="Build Akka OSGi">
    <echo message="Build Akka OSGi" />
    <compile-scala
      buildclasspath="osgi.classpath"
      dirsrc="${osgi.src.dir}"
      destfile="${osgi.build.dir}"/>

    <create-jar
      basedir="${osgi.build.dir}"
      destfile="osgi"
      paramvalue="target"/>
  </target>

  <target name="build.remote" description="Build Akka Remote">
    <echo message="Build Akka Remote" />

    <path id="remote.proto.path">
      <fileset dir="${remote.protobuf.dir}">
        <include name="**/*.proto" />
      </fileset>
    </path>
    <pathconvert pathsep=" " property="remote.proto.files" refid="remote.proto.path" />
    <echo message="protoc --java_out=${remote.src.dir}/java --proto_path=${remote.protobuf.dir} ${remote.proto.files}"/>
    <exec executable="protoc" searchpath="true">
      <arg value="--java_out=${remote.src.dir}/java" />
      <arg value="--proto_path=${remote.protobuf.dir}" />
      <arg line="${remote.proto.files}" />
    </exec>

    <compile-mix-mode
      buildclasspath="remote.classpath"
      dirsrc="${remote.src.dir}"
      destfile="${remote.build.dir}"/>

    <copy todir="${remote.build.dir}" overwrite="true">
      <fileset dir="${remote.resources.dir}" includes="**/*.conf"/>
    </copy>

    <create-jar
      basedir="${remote.build.dir}"
      destfile="remote"
      paramvalue="target"/>
  </target>

  <target name="build.slf4j" description="Build Akka slf4j">
    <echo message="Build Akka slf4j" />
    <compile-scala
      buildclasspath="slf4j.classpath"
      dirsrc="${slf4j.src.dir}"
      destfile="${slf4j.build.dir}"/>

    <create-jar
      basedir="${slf4j.build.dir}"
      destfile="slf4j"
      paramvalue="target"/>
  </target>

  <target name="build.transactor" description="Build Akka transactor">
    <echo message="Build Akka transactor" />
    <compile-scala
      buildclasspath="transactor.classpath"
      dirsrc="${transactor.src.dir}"
      destfile="${transactor.build.dir}"/>

    <copy todir="${transactor.build.dir}" overwrite="true">
      <fileset dir="${transactor.resources.dir}" includes="**/*.conf"/>
    </copy>

    <create-jar
      basedir="${transactor.build.dir}"
      destfile="transactor"
      paramvalue="target"/>
  </target>

  <macrodef name="compile-mix-mode">
    <attribute name="destfile"/>
    <attribute name="dirsrc"/>
    <attribute name="buildclasspath" default=""/>
    <sequential>
      <mkdir dir="@{destfile}"/>
      <scalac
        addParams="-deprecation"
        srcdir="@{dirsrc}"
        destdir="@{destfile}"
        classpathref="@{buildclasspath}">
      </scalac>
      <javac
        srcdir="@{dirsrc}"
        destdir="@{destfile}"
        includes="**/*.java"
        debug="true"
        classpathref="@{buildclasspath}"
        target="1.8" source="1.8" encoding="utf-8">
      </javac>
    </sequential>
  </macrodef>

  <macrodef name="compile-scala">
    <attribute name="destfile"/>
    <attribute name="dirsrc"/>
    <attribute name="buildclasspath" default=""/>
    <sequential>
      <mkdir dir="@{destfile}"/>
      <scalac
        addParams="-deprecation"
        srcdir="@{dirsrc}"
        destdir="@{destfile}"
        classpathref="@{buildclasspath}">
      </scalac>
    </sequential>
  </macrodef>

  <macrodef name="create-jar">
    <attribute name="destfile"/>
    <attribute name="basedir"/>
    <attribute name="excludes" default=""/>
    <attribute name="includes" default=""/>
    <attribute name="resources" default=""/>
    <attribute name="paramvalue" default=""/>
    <sequential>
      <jar destfile="@{paramvalue}/${name}-@{destfile}.jar"
        basedir="@{basedir}"
        excludes="@{excludes}"
        includes="@{includes}">
      </jar>
    </sequential>
  </macrodef>

  <!-- TODO macrodef for generate OSGi manifest macrodef name="create-bnd-file">
    <attribute name="destfile"/>
    <attribute name="bundlename" default=""/>
    <attribute name="symbolicname" default=""/>
    <attribute name="priv" default=""/>
    <sequential>
      <echo file="${name}-@{destfile}.bnd"><![CDATA[
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: @{bundlename}
Bundle-SymbolicName: @{symbolicname}
Bundle-Version: ${version}
Created-By: ${java.version} (${java.vendor})
DynamicImport-Package: *
Export-Package: *;version="${version}"
Import-Package: *
Private-Package: @{priv}
      ]]></echo>
    </sequential>
  </macrodef>

  <taskdef resource="aQute/bnd/ant/taskdef.properties" >
    <classpath>
     <fileset dir="/usr/share/java" includes="aqute-bnd.jar" />
    </classpath>
  </taskdef>

  <macrodef name="osgifi">
    <attribute name="destfile"/>
    <attribute name="basedir"/>
    <attribute name="bndfile" default=""/>
    <attribute name="paramvalue" default=""/>
    <sequential>
      <bnd
         classpath="@{basedir}"
         failok="false"
         exceptions="false"
         files="@{bndfile}"
         output="@{paramvalue}/${name}-@{destfile}.jar"/>
    </sequential>
  </macrodef-->

  <!-- TODO  akka-camel akka-contrib akka-durable-mailboxes akka-persistence akka-samples akka-zeromq -->
  <target name="doc" depends="init">
    <copy todir="target/apidocs">
      <fileset dir=".">
        <include name="LICENSE"/>
      </fileset>
    </copy>
    <scaladoc
      srcdir="${actor.src.dir}:${agent.src.dir}:${kernel.src.dir}:${dataflow.src.dir}:${osgi.src.dir}:${remote.src.dir}:${cluster.src.dir}:${slf4j.src.dir}:${transactor.src.dir}"
      destdir="target/apidocs"
      doctitle="${name} ${version}"
      classpathref="doc.classpath">
      <include name="**/*.scala"/>
      <include name="**/*.java"/>
    </scaladoc>
  </target>

</project>