<!--
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 * Author: soren@google.com (Soren Lassen)
 -->
<project name="waveinabox_proto" default="all">
  <description>Generation of Protocol Buffers</description>

  <property file="build.properties" />
  <property file="build-proto.properties" />
  <property name="protoc" location="${protoc_dist}/src/protoc" />

  <!-- Macros. -->
  <macrodef name="protoc" description="Runs the protobuf compiler">
    <attribute name="proto" description="The protobuf source"/>
    <sequential>
      <exec executable="${protoc}">
        <arg value="--proto_path=${src.dir}" />
        <arg value="--proto_path=${protoc_dist}/src" />
        <arg value="--java_out=proto_src" />
        <arg value="@{proto}" />
      </exec>
    </sequential>
  </macrodef>

  <!-- Targets. -->
  <target name="init">
    <mkdir dir="proto_src" />
  </target>

  <target name="all" depends="compile" description="Compiles Java
      and Javascript classes from protocol buffers" />

  <target name="compile" depends="init" description="Compiles Java files from protocol buffers">
    <protoc proto="${src.dir}/org/waveprotocol/box/common/comms/waveclient-rpc.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/box/profile/profiles.proto"/>
    <protoc proto="${src.dir}/org/waveprotocol/box/search/search.proto"/>
    <protoc proto="${src.dir}/org/waveprotocol/box/server/persistence/protos/account-store.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/box/server/persistence/protos/delta-store.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/box/server/rpc/rpc.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/box/attachment/attachment.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/wave/concurrencycontrol/clientserver.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/wave/diff/diff.proto" />
    <protoc proto="${src.dir}/org/waveprotocol/wave/federation/federation.protodevel"/>
    <protoc proto="${src.dir}/org/waveprotocol/wave/federation/federation_error.protodevel" />
    <protoc proto="${src.dir}/org/waveprotocol/protobuf/extensions.proto" />
  </target>
</project>
