<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 * 
 * 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="XMergeBridge" default="all" basedir=".">

    <property file="../inc/antbuild.properties"/>

    <path id="classpath">
        <pathelement location="${build.dir}/xmerge.jar"/>
        <pathelement location="${solar.jar}/unoil.jar"/>
        <pathelement location="${solar.jar}/ridl.jar"/>
        <pathelement location="${solar.jar}/jurt.jar"/>
        <pathelement location="${solar.jar}/juh.jar"/>
    </path>


    <target name="init" >
        <mkdir dir="${target.dir}"/>
		<echo message="--------------------------------------------------------------------------------" />
        <echo message="debug is ${debug}"/>
		<echo message="--------------------------------------------------------------------------------" />
    </target>

    <!-- compile java sources in ${package} -->
    <target name="compile" depends="init">
        <javac srcdir="${src.dir}"
               destdir="${target.dir}"
			   debug="${debug}"
               deprecation="${deprecation}"
               optimize="${optimize}">
            <classpath refid="classpath"/>
        </javac>
    </target>

    <!-- package to jar -->
    <target name="jar" depends="compile">
        <jar destfile="${target.jar}"
             manifest="manifest.mf">
            <fileset dir="${target.dir}"
                     includes="**/*.class" />
         </jar>
    </target>

    <!-- clean up -->
    <target name="clean">
        <delete dir="${class.dir}"/>
        <delete file="${target.jar}"/>
    </target>

    <target name="all" depends="jar">
    </target>

</project>

