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

    <property name="nbm_alias" value="nb_ide"/>
    <property name="homepage.base" value="netbeans.org"/>
    <property name="dist.base" value="www.netbeans.org/download/nbms/40"/>
    <property name="nb_all" location="../../o.n.core/.."/>
    <property name="license.file" location="${nb_all}/nbbuild/standard-nbm-license.txt"/>

    <taskdef name="makenbm" classname="org.netbeans.nbbuild.MakeNBM" classpath="${nb_all}/nbbuild/build/nbantext.jar"/>
    <taskdef name="genlist" classname="org.netbeans.nbbuild.MakeListOfNBM" classpath="${nb_all}/nbbuild/build/nbantext.jar"/>
    <taskdef name="locjar" classname="org.netbeans.nbbuild.LocalizedJar" classpath="${nb_all}/nbbuild/build/nbantext.jar"/>

    <target name="compile">
        <javac srcdir="src" destdir="src" deprecation="${build.compiler.deprecation}" debug="${build.compiler.debug}">
            <classpath>
                <fileset dir="${nb_all}/openide/netbeans/lib">
                    <include name="openide*.jar" />
                </fileset>
            </classpath>
        </javac>
    </target>

    <target name="jars" depends="compile">
        <mkdir dir="netbeans/modules"/>
        <filter token="BUILD_NUMBER_SUBST" value="${buildnumber}"/>
        <copy file="manifest.mf" tofile="manifest-subst.mf" filtering="on"/>
        <locjar jarfile="netbeans/modules/core-settings-examples.jar"
                basedir="src"
                manifest="manifest-subst.mf"
                excludesfile="${nb_all}/nbbuild/standard-jar-excludes.txt"
	        compress="false">
            <locale name="ja"/>
        </locjar>
    </target>

    <target name="netbeans" depends="jars">
        <genlist targetname="nbm" outputfiledir="netbeans"/>
    </target>

    <target name="nbm" depends="netbeans">
        <makenbm file="core-settings-examples.nbm"
                 topdir="."
                 module="netbeans/modules/core-settings-examples.jar"
                 homepage="http://core.${homepage.base}/"
                 distribution="http://${dist.base}/core-settings-examples.nbm">
                 <license file="${license.file}"/>
                 <signature keystore="${keystore}" storepass="${storepass}" alias="${nbm_alias}"/>
        </makenbm>
    </target>

    <target name="clean">
      <delete>
        <fileset dir="src">
          <include name="**/*.class"/>
        </fileset>
      </delete>
      <delete file="manifest-subst.mf"/>
      <delete file="core-settings-examples.nbm"/>
      <delete dir="netbeans"/>
      <delete dir="Info"/>
    </target>

    <target name="real-clean" depends="clean">
        <delete dir="reload"/>
    </target>

</project>
