<?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="core" default="default">
  <description>Lucene core library</description>

  <property name="build.dir" location="../build/core"/>

  <!-- lucene core can use the minimal JDK profile -->
  <property name="javac.profile.args" value="-profile compact1"/>
  <import file="../common-build.xml"/>

  <property name="moman.commit-hash" value="497c90e34e412b6494db6dabf0d95db8034bd325" />
  <property name="moman.url" value="https://github.com/jpbarrette/moman/archive/${moman.commit-hash}.zip" />

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

  <path id="junit.classpath">
    <path refid="test.classpath"/>
  </path>

  <target name="test-core" depends="common.test"/>

  <target name="javadocs-core" depends="javadocs"/>
  <target name="javadocs" description="Generate javadoc for core classes" 
          depends="check-javadocs-uptodate" unless="javadocs-uptodate-${name}">
     <sequential>
      <mkdir dir="${javadoc.dir}/core"/>
      <invoke-javadoc destdir="${javadoc.dir}/core" title="${Name} ${version} core API">
        <sources>
          <packageset dir="${src.dir}"/>
          <link href=""/>
        </sources>
      </invoke-javadoc>
      <mkdir dir="${build.dir}"/>
     <jarify basedir="${javadoc.dir}/core" destfile="${build.dir}/${final.name}-javadoc.jar"/>
    </sequential>
  </target>

  <target name="-dist-maven" depends="-dist-maven-src-java"/>

  <target name="-install-to-maven-local-repo" depends="-install-src-java-to-maven-local-repo"/>

  <macrodef name="createLevAutomaton">
      <attribute name="n"/>
      <sequential>
      <exec dir="src/java/org/apache/lucene/util/automaton"
            executable="${python3.exe}" failonerror="true">
        <!-- Tell Python not to write any bytecode cache into the filesystem: -->
        <arg value="-B"/>
        <arg value="createLevAutomata.py"/>
        <arg value="@{n}"/>
        <arg value="True"/>
        <!-- Hack while transitioning to Gradle build in 9.0 -->
        <arg value="../../../../../../../../build/core/moman/finenight/python"/>
      </exec>
      <exec dir="src/java/org/apache/lucene/util/automaton"
            executable="${python3.exe}" failonerror="true">
        <!-- Tell Python not to write any bytecode cache into the filesystem: -->
        <arg value="-B"/>
        <arg value="createLevAutomata.py"/>
        <arg value="@{n}"/>
        <arg value="False"/>
        <!-- Hack while transitioning to Gradle build in 9.0 -->
        <arg value="../../../../../../../../build/core/moman/finenight/python"/>
      </exec>
      <fixcrlf srcdir="src/java/org/apache/lucene/util/automaton" includes="*ParametricDescription.java" encoding="UTF-8"/>
    </sequential>
  </macrodef>

  <target name="createPackedIntSources">
    <exec dir="src/java/org/apache/lucene/util/packed"
          executable="${python3.exe}" failonerror="true">
      <!-- Tell Python not to write any bytecode cache into the filesystem: -->
      <arg value="-B"/>
      <arg value="gen_BulkOperation.py"/>
    </exec>
    <exec dir="src/java/org/apache/lucene/util/packed"
          executable="${python3.exe}" failonerror="true">
      <!-- Tell Python not to write any bytecode cache into the filesystem: -->
      <arg value="-B"/>
      <arg value="gen_Packed64SingleBlock.py"/>
    </exec>
    <fixcrlf srcdir="src/java/org/apache/lucene/util/packed" includes="BulkOperation*.java,Packed64SingleBlock.java" encoding="UTF-8"/>
  </target>

  <target name="createLevAutomata" depends="check-moman,download-moman">
    <createLevAutomaton n="1"/>
    <createLevAutomaton n="2"/>
  </target>
  
  <target name="check-moman">
    <available file="${build.dir}/moman" property="moman.downloaded"/>
  </target>

  <target name="download-moman" unless="moman.downloaded">
    <mkdir dir="${build.dir}/moman"/>
    <get src="${moman.url}" dest="${build.dir}/moman.zip"/>
    <unzip dest="${build.dir}/moman" src="${build.dir}/moman.zip">
      <cutdirsmapper dirs="1"/>
    </unzip>
    <delete file="${build.dir}/moman.zip"/>
  </target>

  <target name="regenerate" depends="createLevAutomata,createPackedIntSources,jflex"/>
  
  <macrodef name="startLockStressTestClient">
    <attribute name="clientId"/>
    <attribute name="lockFactoryImpl"/>
    <attribute name="lockFactoryDir"/>
    <sequential>
      <local name="lockverifyserver.port"/>
      <groovy><![CDATA[
        String port;
        while ((port = System.getProperty("lockverifyserver.port")) == null) {
          Thread.sleep(10L);
        }
        properties["lockverifyserver.port"] = port;
      ]]></groovy>
      <java taskname="lockStressTest@{clientId}" fork="true" classpathref="test-lock.classpath" classname="org.apache.lucene.store.LockStressTest" failOnError="true"> 
        <arg value="@{clientId}"/>
        <arg value="${lockverifyserver.host}"/>
        <arg value="${lockverifyserver.port}"/>
        <arg value="@{lockFactoryImpl}"/>
        <arg value="@{lockFactoryDir}"/>
        <arg value="${lockverify.delay}"/>
        <arg value="${lockverify.count}"/>
      </java>
    </sequential>
  </macrodef>
  
  <macrodef name="testLockFactory">
    <attribute name="lockFactoryImpl"/>
    <attribute name="lockFactoryDir"/>
    <sequential>
      <echo taskname="testLockFactory" message="Testing @{lockFactoryImpl}..."/>
      <mkdir dir="@{lockFactoryDir}"/>
      <parallel threadCount="3" failonany="false">
        <sequential>
          <!-- the server runs in-process, so we can wait for the sysproperty -->
          <java taskname="lockVerifyServer" fork="false" classpathref="test-lock.classpath" classname="org.apache.lucene.store.LockVerifyServer" failOnError="true">
            <arg value="${lockverifyserver.host}"/>
            <arg value="2"/>
          </java>
        </sequential>
        <sequential>
          <startLockStressTestClient clientId="1" lockFactoryImpl="@{lockFactoryImpl}" lockFactoryDir="@{lockFactoryDir}" />
        </sequential>
        <sequential>
          <startLockStressTestClient clientId="2" lockFactoryImpl="@{lockFactoryImpl}" lockFactoryDir="@{lockFactoryDir}" />
        </sequential>
      </parallel>
    </sequential>
  </macrodef>
  
  <condition property="-ignore-test-lock-factory">
    <or>
      <!-- We ignore our ant-based lock factory test, if user applies test filtering: -->
      <isset property="tests.class" />
      <isset property="tests.method" />
      <!-- Clover seems to deadlock if running instrumented code inside the Ant JVM: -->
      <isset property="run.clover" />
    </or>
  </condition>
  
  <target name="test-lock-factory" depends="resolve-groovy,compile-core" unless="-ignore-test-lock-factory"
    description="Run LockStressTest with multiple JVMs">
    <property name="lockverifyserver.host" value="127.0.0.1"/>
    <property name="lockverify.delay" value="1"/>
    <groovy taskname="lockVerifySetup"><![CDATA[
      System.clearProperty("lockverifyserver.port"); // make sure it is undefined
      
      if (!properties["lockverify.count"]) {
        int count = Boolean.parseBoolean(properties["tests.nightly"]) ?
          30000 : 500;
        count *= Integer.parseInt(properties["tests.multiplier"]);
        properties["lockverify.count"] = count;
      }
      
      task.log("Configuration properties:");
      ["lockverify.delay", "lockverify.count"].each {
        k -> task.log(" " + k + "=" + properties[k]);
      }
    ]]></groovy>
    <path id="test-lock.classpath">
      <path refid="classpath"/>
      <pathelement location="${build.dir}/classes/java"/>
    </path>
    <testLockFactory lockFactoryImpl="org.apache.lucene.store.NativeFSLockFactory" lockFactoryDir="${build.dir}/lockfactorytest/native" />
    <testLockFactory lockFactoryImpl="org.apache.lucene.store.SimpleFSLockFactory" lockFactoryDir="${build.dir}/lockfactorytest/simple" />
  </target>
  
  <target name="test" depends="common.test, test-lock-factory"/>

  <target name="clean-jflex">
    <delete>
      <fileset dir="src/java/org/apache/lucene/analysis/standard" includes="**/*.java">
        <containsregexp expression="generated.*by.*JFlex"/>
      </fileset>
    </delete>
  </target>

  <target name="jflex" depends="-install-jflex,clean-jflex,-jflex-StandardAnalyzer"/>
  
  <target name="-jflex-StandardAnalyzer" depends="init,-install-jflex">
    <run-jflex-and-disable-buffer-expansion 
        dir="src/java/org/apache/lucene/analysis/standard" name="StandardTokenizerImpl"/>
  </target>


</project>
