<?xml version="1.0"?>

<!--
   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.
-->

<!-- Imported by recipesb/*/build.xml files to share generic targets. -->

<project name="zookeeperbuildrecipes">

  <property name="name" value="${ant.project.name}"/>
  <property name="root" value="${basedir}"/>

  <property name="zk.root" location="${root}/../../../"/>

  <property name="src.dir"  location="${root}/src/java"/>
  <property name="src.test" location="${root}/src/test"/>

  <property name="build.dir" location="${zk.root}/build/recipes/${name}"/>
  <property name="build.classes" location="${build.dir}/classes"/>
  <property name="build.test" location="${build.dir}/test"/>

  <property name="javac.deprecation" value="on"/>
  <property name="javac.debug" value="on"/>

  <property name="build.encoding" value="ISO-8859-1"/>

  <!-- to be overridden by sub-projects -->
  <target name="check-recipes"/>
  <target name="init-recipes"/>

  <property name="lib.jars.includes" value="lib/*.jar" />
  <property name="lib.jars.excludes" value="" />

  <!-- prior to ant 1.7.1 fileset always fails if dir doesn't exist
       so just point to bin directory and provide settings that exclude
       everything - user can change as appropriate -->
  <property name="additional.lib.dir" value="${zk.root}/bin" />
  <property name="additional.lib.dir.includes" value="**/*.jar" />
  <property name="additional.lib.dir.excludes" value="**/*.jar" />

  <fileset id="lib.jars" dir="${root}">
    <include name="${lib.jars.includes}" />
    <exclude name="${lib.jars.excludes}" />
  </fileset>

  <path id="classpath">
    <pathelement location="${build.classes}"/>
    <!-- allow the user to override (e.g. if there are local versions) -->
    <fileset dir="${additional.lib.dir}">
      <include name="${additional.lib.dir.includes}" />
      <exclude name="${additional.lib.dir.excludes}" />
    </fileset>
    <fileset refid="lib.jars"/>
    <pathelement location="${zk.root}/build/classes"/>
    <fileset dir="${zk.root}/build/lib">
      <include name="**/*.jar" />
    </fileset>
    <fileset dir="${zk.root}/build/test/lib">
      <include name="**/*.jar"/>
    </fileset>
    <fileset dir="${zk.root}/src/java/lib">
      <include name="**/*.jar" />
    </fileset>
  </path>

  <!-- ====================================================== -->
  <!-- Stuff needed by all targets                            -->
  <!-- ====================================================== -->
  <target name="init" depends="check-recipes" unless="skip.recipes">
    <echo message="recipes: ${name}"/>
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.classes}"/>
    <mkdir dir="${build.test}"/>
    <antcall target="init-recipes"/>
  </target>

  <!-- ====================================================== -->
  <!-- Compile a recipes files                                -->
  <!-- ====================================================== -->
  <target name="compile" depends="init" unless="skip.contrib">
    <echo message="contrib: ${name}"/>

    <javac
     encoding="${build.encoding}"
     srcdir="${src.dir}"
     includes="**/*.java"
     destdir="${build.classes}"
     debug="${javac.debug}"
     deprecation="${javac.deprecation}">
      <classpath refid="classpath"/>
    </javac>
  </target>

  <!-- ====================================================== -->
  <!-- Make a recipes jar                                     -->
  <!-- ====================================================== -->
  <target name="jar" depends="compile" unless="skip.recipes">
    <echo message="recipes: ${name}"/>
    <jar
      jarfile="${build.dir}/zookeeper-${version}-recipes-${name}.jar"
      basedir="${build.classes}"      
    />
  </target>

  <!-- ====================================================== -->
  <!-- Package a recipes files                                -->
  <!-- ====================================================== -->
  <target name="package" depends="jar" unless="skip.recipes"> 
    <echo message="recipes: ${name}"/>

    <mkdir dir="${dist.dir}${package.share}/recipes/${name}"/>
    <copy todir="${dist.dir}${package.share}/recipes/${name}" includeEmptyDirs="false"
          flatten="true">
      <fileset dir="${build.dir}">
        <include name="zookeeper-${version}-recipes-${name}.jar" />
      </fileset>
    </copy>
  </target>

  <!-- ================================================================== -->
  <!-- Clean.  Delete the build files, and their directories              -->
  <!-- ================================================================== -->
  <target name="clean">
    <echo message="recipes: ${name}"/>
    <delete dir="${build.dir}"/>
  </target>

  <!-- ====================================================== -->
  <!-- rpm a contrib's files                                  -->
  <!-- ====================================================== -->
  <target name="rpm" depends="jar" unless="skip.contrib">
    <echo message="recipes: ${name}"/>

  </target>

  <!-- ====================================================== -->
  <!-- deb a contrib's files                                  -->
  <!-- ====================================================== -->
  <target name="deb" depends="jar" unless="skip.contrib">
    <echo message="recipes: ${name}"/>

  </target>

  <!-- ================================================================== -->
  <!-- Utility features                                                   -->
  <!-- ================================================================== -->

  <target name="checkMainIsAvailable">
    <available classname="org.apache.zookeeper.ZooKeeperMain"
               property="mainIsCompiled">
      <!-- we can't use id=classpath, because available fails if fileset directory
           doesn't exist -->
      <classpath>
        <pathelement location="${zk.root}/build/classes"/>
      </classpath>
    </available>
  </target>

  <target name="checkMainCompiled" unless="mainIsCompiled" depends="checkMainIsAvailable">
    <fail message="ZooKeeper main must first be compiled (toplevel build.xml)"/>
  </target>

</project>
