<?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="Security Kernel Stub JAR Build"
         default="-warn" basedir=".">

    <description>Build for security kernel stub jar</description>

    <property name="hy.component" value="classlib" />
    <property name="hy.module" value="security-kernel" />
    <property name="hy.target" location="${basedir}/../../target" />
    <import file="${hy.target}/hdk/build/ant/properties.xml" />

    <property name="stub.jar"
              location="${hy.jdk}/jre/lib/boot/${hy.module}-stubs.jar" />

    <target name="-warn">
        <fail>...

This module is a non-functional stub.  It is intended only for use by
the top-level build.

        </fail>
    </target>

    <target name="build" depends="-build-no-check"/>
    <target name="-build-no-check" unless="skip.java.build"
            depends="-svn-info,-class-patternset">
        <hy.jar.bin destfile="${stub.jar}" manifest="META-INF/MANIFEST.MF">
            <fileset refid="classes" />
        </hy.jar.bin>
    </target>

    <target name="clean" depends="-clean-java" />

    <target name="-clean-java" unless="skip.java.build"
            depends="-class-patternset">
        <delete file="${stub.jar}" />
        <delete failonerror="false">
            <fileset refid="classes" />
        </delete>
        <delete-patternset module="${hy.module}" />
    </target>

    <target name="-class-patternset" unless="skip.java.build">
        <make-patternset module="${hy.module}" />
    </target>

</project>
