<?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="default-properties" default="netbeans" basedir=".">
  <dirname property="nb_all" file="${ant.file.default-properties}/.."/>

  <!-- Have to be read here, so that they will affect even module builds (e.g. when setting JDK): -->
  <property file="${nb_all}/nbbuild/user.build.properties"/>
  <property file="${nb_all}/nbbuild/site.build.properties"/>
  <property file="${user.home}/.nbbuild.properties"/>

  <property name="-nb.build.dir-default" location="${nb_all}/nbbuild/build"/>
  <property name="nb.build.dir" value="${-nb.build.dir-default}"/>
  <condition property="nb.build.dir.nondefault">
      <not>
          <equals arg1="${nb.build.dir}" arg2="${-nb.build.dir-default}"/>
      </not>
  </condition>

  <property name="nbantext.jar" location="${nb.build.dir}/nbantext.jar"/>

  <property name="license.file" location="${nb_all}/nbbuild/standard-nbm-license.txt"/>
  <property name="build.sysclasspath" value="ignore"/>

  <property name="clusters.list.file" location="${nb_all}/nbbuild/cluster.properties"/>
  <condition property="netbeans.dest.dir" value="${nb.build.dir}${file.separator}netbeans">
      <istrue value="${nb.build.dir.nondefault}"/>
  </condition>
  <property name="netbeans.dest.dir" location="${nb_all}/nbbuild/netbeans"/> <!-- historical location, too much work to change default -->
  <property name="netbeans.javadoc.dir" location="${nb.build.dir}/javadoc"/>
  <property name="moduleCluster.file" location="${netbeans.dest.dir}/moduleCluster.properties"/>

  <property name="autoupdate.catalog.url" value="http://bits.netbeans.org/dev/nbms-and-javadoc/lastSuccessfulBuild/artifact/nbbuild/nbms/updates.xml.gz"/>

  <macrodef name="resolve">
    <attribute name="name"/>
    <attribute name="value"/>
    <sequential>
      <property name="@{name}" value="${@{value}}"/>
    </sequential>
  </macrodef>
 
  <property file="${clusters.list.file}"/>

  <resolve name="nb.clusters.list" value="clusters.config.${cluster.config}.list"/>

  <property file="${moduleCluster.file}"/>

  <property name="test.dist.dir" location="${nb.build.dir}/testdist"/>
  
  <import file="binaries-default-properties.xml"/>

  <target name="-load-build-properties">
    <property file="${nb_all}/nbbuild/build.properties"/>
  </target>

  <xmlcatalog id="nbantextcatalog" classpath="${nbantext.jar}">
    <dtd publicId="-//W3C//DTD XHTML 1.0 Strict//EN" location="org/netbeans/nbbuild/xhtml1-strict.dtd" />
    <dtd publicId="-//W3C//ENTITIES Latin 1 for XHTML//EN" location="org/netbeans/nbbuild/xhtml-lat1.ent" />
    <dtd publicId="-//W3C//ENTITIES Symbols for XHTML//EN" location="org/netbeans/nbbuild/xhtml-symbol.ent" />
    <dtd publicId="-//W3C//ENTITIES Special for XHTML//EN" location="org/netbeans/nbbuild/xhtml-special.ent" />
    <dtd publicId="-//NetBeans//DTD Arch Answers//EN" location="org/netbeans/nbbuild/Arch.dtd" />
  </xmlcatalog>
</project>
