<?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="jurt-test" default="main" xmlns:if="ant:if" xmlns:unless="ant:unless">

    <property name="main.src.dir" value="../jurt/src/main/java"/>

    <property file="../../../ant.properties"/>
    <import file="${SRC_ROOT}/solenv/ant/aoo-ant.xml"/>

    <target name="init-project">

        <property name="jar.classpath" value="ridl.jar unoloader.jar ../../lib/ ../bin/"/>

        <path id="main.classpath">
            <pathelement location="${OUTDIR}/bin/ridl.jar"/>
            <pathelement location="${OUTDIR}/bin/unoloader.jar"/>
        </path>

        <filelist id="idl.files">
            <file name="${test.src.dir}/com/sun/star/lib/uno/protocols/urp/interfaces.idl"/>
        </filelist>

    </target>

    <target name="jar" depends="compile" if="${jar.enabled}">
        <jar destfile="${jar.dir}/${jar.name}.jar"
             duplicate="fail">
            <fileset dir="${main.build.dir}/" casesensitive="false">
                <include name="**/*.class"/>
            </fileset>
        </jar>
    </target>

</project>
