<!--
 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="common-solr" default="default">
  <description>
    This file is designed for importing into a main build file, and not intended
    for standalone use.
  </description>

  <dirname file="${ant.file.common-solr}" property="common-solr.dir"/>
  
  <property name="Name" value="Solr" />
  <property name="version" value="4.0-SNAPSHOT"/>
  <property name="fullname" value="apache-${ant.project.name}"/>
  <property name="fullnamever" value="${fullname}-${version}"/>
  <property name="final.name" value="${fullnamever}"/>
  
  <!-- solr uses 1.6 -->
  <property name="javac.source" value="1.6"/>
  <property name="javac.target" value="1.6"/>
  
  <property name="dest" value="${common-solr.dir}/build" />
  <property name="build.dir" location="${dest}/${ant.project.name}"/>
  <property name="dist" location="${common-solr.dir}/dist"/>
  <property name="package.dir" location="${common-solr.dir}/package"/>
  <property name="maven.dist.dir" location="${package.dir}/maven"/>
  <property name="lucene-libs" location="${dest}/lucene-libs" />
  <property name="manifest.file" location="${dest}/META-INF/MANIFEST.MF"/>
  <property name="tests.userdir" value="src/test-files"/>
  <property name="example" value="${common-solr.dir}/example" />
  <property name="javadoc.dir" location="${build.dir}/docs/api"/>
  <property name="javadoc.link" value="http://java.sun.com/javase/6/docs/api/"/>
  <property name="tests.loggingfile" value="${common-solr.dir}/testlogging.properties"/>
  <property name="tests.threadspercpu" value="2"/>

  <path id="additional.dependencies">
  	<fileset dir="${common-solr.dir}/lib" includes="**/*.jar"/>
  	<fileset dir="${common-solr.dir}/example/lib" includes="**/*.jar"/>
  	<fileset dir="lib" includes="**/*.jar" erroronmissingdir="false"/>
  </path>

  <pathconvert property="project.classpath" targetos="unix" refid="additional.dependencies"/>

  <import file="${common-solr.dir}/../lucene/contrib/contrib-build.xml"/>

  <!-- Solr Specification Version

       This will be used in the Manifest file, and therefore must
       match the pattern "digit+{.digit+}*"

       By default, this should be set to "X.Y.M.${dateversion}"
       where X.Y.M is the last version released (on this branch).
    -->
  <property name="solr.spec.version" value="4.0.0.${dateversion}" />

  <!-- solr depends on the following modules/contribs -->	
  <module-uptodate name="analysis/common" jarfile="${common.dir}/../modules/analysis/build/common/lucene-analyzers-common-${version}.jar"
        property="analyzers-common.uptodate" classpath.property="analyzers-common.jar"/>
  <module-uptodate name="analysis/phonetic" jarfile="${common.dir}/../modules/analysis/build/phonetic/lucene-analyzers-phonetic-${version}.jar"
        property="analyzers-phonetic.uptodate" classpath.property="analyzers-phonetic.jar"/>
  <module-uptodate name="suggest" jarfile="${common.dir}/../modules/suggest/build/lucene-suggest-${version}.jar"
        property="suggest.uptodate" classpath.property="suggest.jar"/>
  <module-uptodate name="grouping" jarfile="${common.dir}/../modules/grouping/build/lucene-grouping-${version}.jar"
        property="grouping.uptodate" classpath.property="grouping.jar"/>
  <module-uptodate name="queries" jarfile="${common.dir}/../modules/queries/build/lucene-queries-${version}.jar"
        property="queries.uptodate" classpath.property="queries.jar"/>
  <contrib-uptodate name="highlighter" property="highlighter.uptodate" classpath.property="highlighter.jar"/>
  <contrib-uptodate name="memory" property="memory.uptodate" classpath.property="memory.jar"/>
  <contrib-uptodate name="misc" property="misc.uptodate" classpath.property="misc.jar"/>
  <contrib-uptodate name="queries-contrib" contrib-src-name="queries" property="queries-contrib.uptodate" classpath.property="queries-contrib.jar"/>
  <contrib-uptodate name="spatial" property="spatial.uptodate" classpath.property="spatial.jar"/>

  <target name="compile-analyzers-common" unless="analyzers-common.uptodate">
  	<ant dir="${common.dir}/../modules/analysis/common" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-analyzers-phonetic" unless="analyzers-phonetic.uptodate">
  	<ant dir="${common.dir}/../modules/analysis/phonetic" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-suggest" unless="suggest.uptodate">
  	<ant dir="${common.dir}/../modules/suggest" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-grouping" unless="grouping.uptodate">
  	<ant dir="${common.dir}/../modules/grouping" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-queries" unless="queries.uptodate">
  	<ant dir="${common.dir}/../modules/queries" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-highlighter" unless="highlighter.uptodate">
  	<ant dir="${common.dir}/contrib/highlighter" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-memory" unless="memory.uptodate">
  	<ant dir="${common.dir}/contrib/memory" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-misc" unless="misc.uptodate">
  	<ant dir="${common.dir}/contrib/misc" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-queries-contrib" unless="queries-contrib.uptodate">
  	<ant dir="${common.dir}/contrib/queries" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <target name="compile-spatial" unless="spatial.uptodate">
  	<ant dir="${common.dir}/contrib/spatial" target="default" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>
  <!-- xml-query-parser contrib is required by the "luke" target -->
  <target name="compile-xml-query-parser" unless="xml-query-parser.uptodate">
  	<ant dir="${common.dir}/contrib/xml-query-parser" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <path id="solr.base.classpath">
  	<pathelement path="${analyzers-common.jar}"/>
  	<pathelement path="${analyzers-phonetic.jar}"/>
  	<pathelement path="${highlighter.jar}"/>
  	<pathelement path="${memory.jar}"/>
  	<pathelement path="${misc.jar}"/>
  	<pathelement path="${queries-contrib.jar}"/>
  	<pathelement path="${spatial.jar}"/>
  	<pathelement path="${suggest.jar}"/>
    <pathelement path="${grouping.jar}"/>
    <pathelement path="${queries.jar}"/>
    <pathelement location="${common-solr.dir}/build/solr-solrj/classes/java"/>
    <pathelement location="${common-solr.dir}/build/solr-core/classes/java"/>
    <path refid="base.classpath"/>
  </path>

  <path id="classpath" refid="solr.base.classpath"/>

  <path id="solr.test.base.classpath">
    <pathelement path="${common-solr.dir}/build/solr-test-framework/classes/java"/>
    <pathelement path="${common-solr.dir}/build/solr-core/classes/test"/>
  	<pathelement path="${tests.userdir}"/>
  	<path refid="test.base.classpath"/>
  </path>
 
  <path id="test.classpath" refid="solr.test.base.classpath"/>

  <macrodef name="solr-contrib-uptodate">
    <attribute name="name"/>
    <attribute name="property" default="@{name}.uptodate"/>
    <attribute name="classpath.property" default="@{name}.jar"/>
    <!-- set jarfile only, if the target jar file has no generic name -->
    <attribute name="jarfile" default="${common-solr.dir}/build/contrib/@{name}/@{name}-${version}.jar"/>
  	<sequential>
      <!--<echo message="Checking '@{jarfile}' against source folder '${common.dir}/contrib/@{name}/src/java'"/>-->
      <property name="@{classpath.property}" location="@{jarfile}"/>
      <uptodate property="@{property}" targetfile="@{jarfile}">
        <srcfiles dir="${common-solr.dir}/contrib/@{name}/src/java" includes="**/*.java"/>
      </uptodate>
    </sequential>
  </macrodef>

  <target name="validate" depends="validate-solr"/>
  <target name="validate-solr" depends="check-legal-solr" unless="validated-solr"/>

  <target name="check-legal-solr" depends="compile-tools">
    <java classname="org.apache.lucene.validation.DependencyChecker" failonerror="true" fork="true">
      <classpath>
        <path refid="tools.runtime.classpath" />
      </classpath>
      <!-- TODO: it might be better to just automatically find all directories that contain jar files, but that could take a
       long time.  This should be faster, but we could miss a directory
       -->
      <!-- Solr -->
      <arg value="-c" />
      <arg value="${common-solr.dir}/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/analysis-extras/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/clustering/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/dataimporthandler/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/dataimporthandler-extras/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/extraction/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/contrib/uima/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/example/example-DIH/solr/db/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/example/example-DIH/solr/mail/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/example/example/lib" />
      <arg value="-c" />
      <arg value="${common-solr.dir}/core/src/test-files/solr/lib" />
    </java>
    <property name="validated-solr" value="true"/>
  </target>
  <path id="tools.runtime.classpath">
    <pathelement location="${common.dir}/build/classes/tools"/>
  </path>

  <target name="init-dist" >
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${package.dir}"/>
    <mkdir dir="${dist}"/>
    <mkdir dir="${maven.dist.dir}"/>
  </target>

  <target name="prep-lucene-jars"
          depends="compile-analyzers-common, compile-analyzers-phonetic, compile-suggest,
                   compile-highlighter, compile-memory, compile-misc, compile-queries-contrib,
                   compile-spatial, compile-grouping, compile-queries">
    <ant dir="${common.dir}" target="default" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <target name="lucene-jars-to-solr" depends="prep-lucene-jars">
    <copy todir="${lucene-libs}" preservelastmodified="true" flatten="true" failonerror="true" overwrite="true">
      <fileset file="${common.dir}/build/lucene-core-${version}.jar" />
      <fileset file="${analyzers-common.jar}" />
      <fileset file="${analyzers-phonetic.jar}" />
      <fileset file="${suggest.jar}" />
      <fileset file="${grouping.jar}" />
      <fileset file="${common-module.jar}" />
      <fileset file="${queries.jar}" />
      <fileset file="${highlighter.jar}" />
      <fileset file="${memory.jar}" />
      <fileset file="${misc.jar}" />
      <fileset file="${queries-contrib.jar}" />
      <fileset file="${spatial.jar}" />
    </copy>
  </target>

  <!-- Shared core/solrj/test-framework/contrib targets -->
  <target name="jar-core" depends="compile-core">
    <mkdir dir="${dest}/META-INF/"/>
    <jarify title="Apache Solr Search Server: ${ant.project.name}"
            metainf.source.dir="${common-solr.dir}"
            implementation.title="org.apache.solr"
            spec.version="${solr.spec.version}"/>
  </target>

  <target name="dist" depends="jar-core">
    <copy file="${build.dir}/${fullnamever}.jar" todir="${dist}"/>
  </target>

  <target name="javadocs" depends="compile-core">
   	<sequential>
      <mkdir dir="${javadoc.dir}"/>
      <invoke-javadoc destdir="${javadoc.dir}"
                      title="${Name} ${version} ${name} API">
        <sources>
          <link href=""/>
          <packageset dir="${src.dir}"/>
        </sources>
      </invoke-javadoc>
      <jarify basedir="${javadoc.dir}"
              destfile="${build.dir}/${final.name}-javadoc.jar"
              title="Apache Solr Search Server: ${ant.project.name}"
              metainf.source.dir="${common-solr.dir}"
              implementation.title="org.apache.solr"
              spec.version="${solr.spec.version}"/>
     </sequential>
  </target>

  <target name="jar-src" depends="init">
  	<jarify basedir="${src.dir}"
            destfile="${build.dir}/${final.name}-src.jar"
            implementation.title="org.apache.solr"
            metainf.source.dir="${common-solr.dir}"
            spec.version="${solr.spec.version}"/>
  </target>

  <!-- Solr core targets -->
  <target name="compile-solr-core" description="Compile Solr core." unless="solr.core.compiled">
    <ant dir="${common-solr.dir}/core" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.core.compiled" value="true"/>
  </target>
  <target name="compile-test-solr-core" description="Compile solr core tests">
    <ant dir="${common-solr.dir}/core" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.core.compiled" value="true"/>
  </target>
  <target name="dist-core" depends="init-dist"
          description="Creates the Solr JAR Distribution file.">
    <ant dir="${common-solr.dir}/core" target="dist" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- Solrj targets -->
  <target name="compile-solrj" description="Compile the java client." unless="solrj.compiled">
    <ant dir="${common-solr.dir}/solrj" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solrj.compiled" value="true"/>
  </target>
  <target name="compile-test-solrj" description="Compile java client tests">
    <ant dir="${common-solr.dir}/solrj" target="compile-test" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solrj.compiled" value="true"/>
  </target>
  <target name="dist-solrj" depends="init-dist"
          description="Creates the Solr-J JAR Distribution file.">
    <ant dir="${common-solr.dir}/solrj" target="dist" inheritall="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
  </target>

  <!-- Solr test-framework targets -->
  <target name="compile-solr-test-framework" description="Compile the Solr test-framework" unless="solr.test.framework.compiled">
    <ant dir="${common-solr.dir}/test-framework" target="compile-core" inheritAll="false">
      <propertyset refid="uptodate.and.compiled.properties"/>
    </ant>
    <property name="solr.test.framework.compiled" value="true"/>
  </target>

  <!-- Solr contrib targets -->
  <target name="build-contrib" depends="compile-test"
          description="Builds all contrib modules and their tests">
    <contrib-crawl target="build-artifacts-and-tests"/>
  </target>
  <target name="contribs-add-to-war">
    <mkdir dir="${dest}/web"/>
    <delete dir="${dest}/web" includes="**/*" failonerror="false"/>
    <contrib-crawl target="add-to-war"/>
  </target>
</project>
