<?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="harness/apisupport.harness" default="build" basedir=".">

    <import file="../../nbbuild/templates/projectized.xml"/>

    <target name="nbantext" depends="build-init">
        <nb-ext-jar jarfile="${cluster}/tasks.jar" compress="${build.package.compress}" index="${build.package.index}">
            <manifest>
                <attribute name="NetBeans-Own-Library" value="true"/>
            </manifest>
            <!-- XXX would be more maintainable to use depfind.sf.net / genjar.sf.net / sadun-util.sf.net/pack.html -->
            <zipfileset src="${nbantext.jar}" includes="${bundled.tasks}"/>
            <zipfileset file="taskdefs.properties" fullpath="org/netbeans/nbbuild/taskdefs.properties"/>
        </nb-ext-jar>
        
        <!-- verify that the DownloadBinaries task is properly functional -->
        <taskdef name="TestDownload" classname="org.netbeans.nbbuild.extlibs.DownloadBinaries">
            <classpath>
                <pathelement location="${cluster}/tasks.jar"></pathelement>
            </classpath>
        </taskdef>
        <echo file="build/binaries-list">8E6300EF51C1D801A7ED62D07CD221ACA3A90640 org.ow2.asm:asm:9.3</echo>
        <TestDownload>
            <manifest dir="build">
                <include name="binaries-list"/>
            </manifest>
        </TestDownload>
        <delete file="build/asm-9.3.jar"/>
    </target>

    <target name="compile-jnlp-launcher" depends="init,compile">
        <mkdir dir="${build.dir}/jnlp-launcher-classes"/>
        <nb-javac srcdir="jnlp-src" destdir="${build.dir}/jnlp-launcher-classes" deprecation="${build.compiler.deprecation}" debug="${build.compiler.debug}" release="8" includeantruntime="false">
            <classpath>
                <path path="${jnlp.cp}"/>
            </classpath>
            <processorpath refid="processor.cp"/>
        </nb-javac>
        <copy todir="${build.dir}/jnlp-launcher-classes">
            <fileset dir="jnlp-src" excludes="${jar-excludes}"/>
        </copy>
    </target>
   
    <target name="jar-jnlp-launcher" depends="compile-jnlp-launcher">
        <mkdir dir="${cluster}/jnlp/"/>
        <nb-ext-jar jarfile="${cluster}/jnlp/jnlp-launcher.jar" compress="false" manifest="jnlp-manifest.mf" >
            <fileset dir="${build.dir}/jnlp-launcher-classes"/>
        </nb-ext-jar>
    </target>

    <target name="netbeans-extra" depends="nbantext,jar-jnlp-launcher"/>

</project>
