<?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="collation" default="default">

  <description>
    CollationKeyFilter, ICUCollationKeyFilter, CollationKeyAnalyzer, and
    ICUCollationKeyAnalyzer - converts tokens into indexable collation keys
  </description>


  <path id="additional.dependencies">
    <fileset dir="lib" includes="icu4j-*.jar"/>
    <pathelement location="../../build/contrib/misc/classes/java"/>
  </path>

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

  <import file="../contrib-build.xml"/>

  <target name="compile-misc">
    <subant target="compile">
       <fileset dir="${common.dir}/contrib/misc" includes="build.xml"/>
    </subant>
  </target>

  <target name="init" depends="common.init,compile-misc"/>

  <target name="compile" depends="init">
    <antcall target="common.compile" inheritRefs="true" />
  </target>

</project>
