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

<project name="contrib-build" xmlns:artifact="antlib:org.apache.maven.artifact.ant">
  <echo>Building ${ant.project.name}...</echo>

  <!-- TODO: adjust build.dir/dist.dir appropriately when a contrib project is run individually -->
  <property name="build.dir" location="../../build/contrib/${ant.project.name}"/>
  <property name="dist.dir" location="../../dist/contrib/${ant.project.name}"/>
  <property name="maven.dist.dir" location="../../dist/maven"/>
  	
  <import file="../common-build.xml"/>

  <property name="lucene.jar" location="${common.dir}/build/lucene-core-${version}.jar"/>
  <available property="lucene.jar.present" type="file" file="${lucene.jar}"/>
  <available property="lucene.tests.present" type="dir"
             file="${common.dir}/build/classes/test" />
  <available property="contrib.has.tests" type="dir" file="src/test" />
  
  <path id="classpath">
   <pathelement path="${lucene.jar}"/>
   <pathelement path="${project.classpath}"/>
  </path>

  <path id="test.classpath">
    <path refid="classpath"/>
    <pathelement location="../../build/classes/test/"/>
    <path refid="junit-path"/>
    <pathelement location="${build.dir}/classes/java"/>
  </path>

  <path id="junit.classpath">
    <path refid="test.classpath"/>
    <pathelement location="${build.dir}/classes/test"/>
    <pathelement location="${build.dir}/classes/java"/>
    <pathelement path="${java.class.path}"/>
  </path>

  <target name="build-lucene" unless="lucene.jar.present">
    <ant dir="${common.dir}" target="jar-core" inheritAll="false"/>
  </target>

  <target name="build-lucene-tests" unless="lucene.tests.present">
    <ant dir="${common.dir}" target="compile-test" inheritAll="false"/>
  </target>

  
  <target name="init" depends="common.init,build-lucene,build-lucene-tests"/>
  <target name="compile-test" depends="init" if="contrib.has.tests">
    <antcall target="common.compile-test" inheritRefs="true" />
  </target>
  <target name="test" depends="init" if="contrib.has.tests">
    <antcall target="common.test" inheritRefs="true" />
  </target>
  <target name="build-artifacts-and-tests" depends="jar, compile-test" />
	
  <available 
    type="file" 
    file="${pom.xml}" 
    property="pom.xml.present">
  </available>
			
  <target name="dist-maven" if="pom.xml.present" depends="compile-core, jar-src">
    <sequential>
      <m2-deploy>
        <artifact-attachments>
          <attach file="${build.dir}/${final.name}-src.jar"
                  classifier="sources"/>
          <attach file="${build.dir}/${final.name}-javadoc.jar"
                  classifier="javadoc"/>
        </artifact-attachments>
      </m2-deploy>
    </sequential>
  </target>

  <target name="javadocs">
   	<sequential>
       <mkdir dir="${javadoc.dir}/contrib-${name}"/>
       <invoke-javadoc
         destdir="${javadoc.dir}/contrib-${name}"
       	title="${Name} ${version} contrib-${name} API">
         <sources>
           <link href=""/>
           <packageset dir="src/java"/>
        </sources>
      </invoke-javadoc>
      <jarify basedir="${javadoc.dir}/contrib-${name}" destfile="${build.dir}/${final.name}-javadoc.jar"/>
    </sequential>
  </target>	

  <target name="javadocs-index.html" description="Generate line for index.html of JavaDocs">
    <echo file="${javadoc.dir}/index.html" append="true">
<![CDATA[
  <li><a href="contrib-${name}/index.html">${name}</a></li>
]]></echo>
  </target>
  
</project>
