<!--
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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>
