<!--
 -
 - 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 Protocol Versions" default="generate">
  <property name="topDirectoryLocation" location=".." />
  <property name="project.build.directory" location="target" />
  <property name="gentools.home" location="${topDirectoryLocation}/../gentools" />
  <property name="generated.path" location="${project.build.directory}/generated-sources/gentools" />
  <property name="generated.package" value="org/apache/qpid/framing" />
  <property name="generated.dir" location="${generated.path}/${generated.package}" />
  <property name="generated.timestamp" location="${generated.dir}/timestamp" />
  <property name="xml.spec.dir" location="${topDirectoryLocation}/../specs" />
  <property name="xml.spec.deps" value="amqp.0-8.xml cluster.0-8.xml" />
  <property name="xml.spec.list" value="${xml.spec.dir}/amqp.0-8.xml ${xml.spec.dir}/cluster.0-8.xml" />
  	
  <target name="generate" depends="compile_generator,check_generate_deps" unless="generation.notRequired">
    <mkdir dir="${generated.dir}"/>
    <java classname="org.apache.qpid.gentools.Main" fork="true" dir="${gentools.home}/src" failonerror="true">
    	<arg line="-j -o ${generated.dir} -t ${gentools.home}/templ.java ${xml.spec.list}" />
        <classpath>
          <pathelement path="${gentools.home}/src" />
        </classpath>
    </java>
    <touch file="${generated.timestamp}" />
  </target>

  <target name="check_generate_deps">
	<uptodate property="generation.notRequired" targetfile="${generated.timestamp}">
  	  <srcfiles dir="${xml.spec.dir}" includes="${xml.spec.deps}" />
	</uptodate>
  </target>
  
  <target name="compile_generator">
  	<ant dir="${gentools.home}" />
  </target>

  <target name="precompile" depends="generate"/>
  
  <target name="clean">
  	<delete dir="${generated.path}" />
  </target>

</project>
