<!--
 -
 - 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.
 -
 -->
<project name="Qpid Common Generate Sources" default="generate-sources">

  <fail message="A required property was not set">
    <condition>
      <not>
        <isset property="generated-amqp-0-10-dir"/>
      </not>
    </condition>
  </fail>

  <condition property="generate.protocol.sources" value="true">
    <istrue value="${generate}"/>
  </condition>

  <property name="mllib.dir" value="${basedir}"/>
  <property name="xml.spec.dir" value="${basedir}/../specs"/>

  <property name="xml.spec.0-10" value="amqp.0-10-qpid-errata.stripped.xml"/>

  <property name="generated.package" value="org/apache/qpid/framing" />


  <target name="amqp-0-10-generation" if="generate.protocol.sources">
      <mkdir dir="${generated-amqp-0-10-dir}"/>
      <echo message="Generating AMQP 0-10 protocol classes..."/>
      <java classname="org.python.util.jython" dir="${generated-amqp-0-10-dir}" fork="true" failonerror="true">
        <arg value="${basedir}/codegen"/>
        <arg value="${generated-amqp-0-10-dir}"/>
        <arg value="${xml.spec.dir}/${xml.spec.0-10}"/>
        <arg value="${basedir}"/>
        <classpath>
          <path refid="source.generation.classpathref"/>
        </classpath>
        <sysproperty key="python.path" value ="${mllib.dir}"/>
      </java>
  </target>

  <target name="generate-sources" depends="amqp-0-10-generation"/>

</project>
