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

<!-- ==================================================================== -->
<!--                       Apache Derby build file                        -->
<!-- ==================================================================== -->

<project default="optional" basedir="../..">

<!-- ==================================================================== -->
<!--                           Set properties                             -->
<!-- ==================================================================== -->

  <property name="properties.dir" value="tools/ant/properties"/>

  <!-- User settings -->
  <property file="${user.home}/ant.properties"/>

  <!-- Significant dirs -->
  <property file="${properties.dir}/dirs.properties"/>

  <!-- Compiler settings -->
  <property file="${properties.dir}/defaultcompiler.properties"/>
  <property file="${properties.dir}/${build.compiler}.properties"/>

  <!-- Parser properties -->
  <property file="${properties.dir}/parser.properties"/>

  <!-- Compile-time classpath properties files -->
  <property file="${properties.dir}/extrapath.properties"/>
  <property file="${properties.dir}/compilepath.properties"/>
  <property name="cur.dir" value="optional"/>

  <!-- Release and Version info -->
  <property file="${properties.dir}/release.properties"/>

<!--             ============ Begin Targets ==============                -->
 
  <target name="optional"
          description="Build Derby optional tools">

    <javac
      source="${min.version}"
      target="${min.version}"
      nowarn="on"
      debug="${debug}" debuglevel="${debuglevel}"
      depend="${depend}"
      deprecation="${deprecation}"
      optimize="${optimize}"
      proceed="${proceed}"
      verbose="${verbose}"
      srcdir="${derby.optional.src.dir}:${generated.src.dir}"
      destdir="${out.optional.dir}">
      <modulepath>
        <pathelement path="${out.shared.dir}"/>
        <pathelement path="${out.engine.dir}"/>
        <pathelement path="${out.tools.dir}"/>
        <pathelement path="${lucene_core}"/>
        <pathelement path="${lucene_a_co}"/>
        <pathelement path="${lucene_qp}"/>
        <pathelement path="${json_simple}"/>
      </modulepath>
      <include name="${derby.dir}/${cur.dir}/**"/>
      <compilerarg value="-Xlint:unchecked"/>
      <compilerarg value="-Xlint:deprecation"/>
    </javac>

  </target>

<!--             ============= End Targets ==============                -->

<!--             ============= End Project ==============                -->

</project>

