#
# 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.
# 

#####################################################################################
# Initialization. Properties that are used during build script initialization.

# location of the custom tasks' sources and the destination directory for their 
# build
custom.tasks.src=${common.dir}/../.ant-lib/src
custom.tasks.cls=${basedir}/.ant-lib

#####################################################################################
# Check-out. Properties that are used during check-out.

# whether to check out sources, or copy them from the location specified in 
# ${sources.dir}; 'true'/'false'
checkout.sources=true

# coordinates of the project's sources within the cvs repository
# * ${cvs.root} - obvious
# * ${cvs.branch} - the branch from which the sources should be checked out; if
#   this property is empty, then the sources will be checked out from trunk
# * ${cvs.timestamp} - the timestamp for which the sources should be checked out; if
#   this property is empty, then the latest sources will be checked out
# * ${cvs.module} - the module that should be checked out; at this point the
#   build framework is not compatible with modules which alias several other
#   modules
cvs.root=:pserver:anoncvs@netbeans.org:/cvs
cvs.branch=
cvs.module=nbi
cvs.timestamp=

# coordinates of the project's sources' localized files within the cvs 
# repository
# * ${translatedfiles.module} - name of the cvs module with the localized files
# * ${translatedfiles.path} - path to the localized files for the project 
#   within the cvs module
translatedfiles.module=translatedfiles
translatedfiles.path=src/${cvs.module}/${cvs.path}

# sources parameters; a search-and-replace will be run over the sources after 
# check-out, replacing [token] => [value]; regular expressions are not allowed
# * ${sources.params.length} - total number of the parameters
# * indices should start with 1
# * parameters are not i18n compliant
sources.params.length=0
#sources.params.1.token=
#sources.params.1.value=

# several simple shorthands for various directories
# * ${cvs.module.dir} - path to the root of the cvs module
# * ${cvs.dir} - path to the current project's sources root
# * ${translatedfiles.dir} - path to the localized files for the project
cvs.module.dir=${work.dir}/${cvs.module}
cvs.dir=${cvs.module.dir}/${cvs.path}
translatedfiles.dir=${work.dir}/${translatedfiles.module}/${translatedfiles.path}

#####################################################################################
# NB Projects. Properties related to cleaning/building netbeans projects.

# path to the netbeans project that should be built; relative to the 
# ${cvs.dir}
nbproject.path=.

# names of targets in component's (or engine's) build script that will be 
# called as part of the build process
# * ${nb.target.clean} - will be called when cleaning the netbeans project
# * ${nb.target.build} - will be called when building the netbeans project
nb.target.clean=clean
nb.target.build=jar

# additional properties which will be passed to the netbeans project build 
# script
# * ${nb.platform.home} - location of the jdk codenamed "JDK 1.5", this jdk
#   is expected to be used by all netbeans projects
# * ${nb.ignore.native} - tells the netbeans project's build script to skip
#   building native components, if it is able to do so - these will be built
#   as part of the project's global build script
# * ${nb.no.dependencies} - tells the netbeans project's build script to skip
#   building its dependencies, the dependencies are expected to be built by the
#   project's global build script
# * ${nb.dont.build.custom.tasks} - tells the netbeans project's build script 
#   to skip building custom tasks for it, as they will already be built by the
#   global script
# * ${nb.custom.tasks.cls} - points the netbeans project's build script to the 
#   location of the built custom tasks
nb.platform.home=-Dplatforms.JDK_1.5.home=${java.home}/..
nb.platform.home.macos=-Dplatforms.JDK_1.5.home=${java.home}
nb.ignore.native=-Dignore.native=true
nb.no.dependencies=-Dno.dependencies=true
nb.dont.build.custom.tasks=-Ddont.build.custom.tasks=true
nb.custom.tasks.cls=-Dcustom.tasks.cls=${custom.tasks.cls}

# default path to the distributives directory of the netbeans project; relative 
# to ${nbproject.path}
nb.dist.path=dist

# path to the classes directory of the netbeans project; relative to 
# ${nbproject.path}
nb.classes.dir=build/classes

# path to the manifest file of the netbeans project; relative to the 
# ${nbproject.path}
nbproject.manifest=manifest.mf

# path to the dist directory that the nbproject should use; since we do not use 
# the netbeans' packaging mechanism, we have the flexibility to specify any 
# distributives directory we want
nbproject.dist.dir=${cvs.dir}/${nbproject.path}/${nb.dist.path}

#####################################################################################
# Native. Properties related to cleaning/building native components.

# path to the directory with the sources for the native components; relative 
# to the root of the project's sources
native.path=${cvs.module}/${cvs.path}/native

# path to the directory with the localized files for the native components; 
# relative to the root of the project's localized files directory
translatedfiles.native.path=${translatedfiles.module}/${translatedfiles.path}/native

# list of platforms for which the native components should be built
# * the list should be space-separated
native.platforms=windows linux solaris-x86 solaris-sparc macosx

# directory on the remote machine where the build script should operate
# * this is the default value, the actual value is expected to be passed in 
#   through the environment properties
remote.work.dir=~/.nbi-build

# ssh properties: executable name, set of arguments and the command.
# * ${remote.host}, ${remote.port} and ${remote.user} are environment specific 
#   and are expected to be passed in through the environment properties
ssh.executable=ssh
ssh.arguments=-l ${remote.user} -p ${remote.port} ${remote.host}
ssh.command.clean=rm -rf ${remote.work.dir};
ssh.command.build=rm -rf ${remote.work.dir}; \
                  mkdir ${remote.work.dir}; \
                  cd ${remote.work.dir}; \
                  if [ "${cvs.branch}" = "" ]; then \
                      if [ "${cvs.timestamp}" = "" ]; then \
                          cvs -d ${cvs.root} co -P ${native.path}; \
                          cvs -d ${cvs.root} co -P ${translatedfiles.native.path}; \
                      else\
                          cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${native.path}; \
                          cvs -D ${cvs.timestamp} -d ${cvs.root} co -P ${translatedfiles.native.path}; \
                      fi;\
                  else \
                      if [ "${cvs.timestamp}" = "" ]; then \
                          cvs -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
                          cvs -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
                      else \
                          cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${native.path}; \
                          cvs -D ${cvs.timestamp} -d ${cvs.root} co -r ${cvs.branch} -P ${translatedfiles.native.path}; \
                      fi;\
                  fi; \
                  cp -r ${translatedfiles.native.path} ${native.path}; \
                  cd ${native.path}/${platform}; \
                  make

# scp properties: executable name, set of arguments, remote directory, local 
# directory
# * ${remote.host}, ${remote.port} and ${remote.user} are platform and 
#   environment specific and are expected to be passed in through the 
#   environment properties
# * name of the file to copy is platform specific and is defined elsewhere, 
#   most likely in the base build script for a project type (engine, product, 
#   etc.)
# * ${platform} will be defined at runtime, as these commands will be executed 
#   in loop over the list of platforms
scp.executable=scp
scp.arguments=-P ${remote.port}
scp.remote.dir=${remote.user}@${remote.host}:${remote.work.dir}/${native.path}/${platform}/${nb.dist.path}
scp.local.dir=${work.dir}/${native.path}/${platform}/${nb.dist.path}

# names of the native distributive files for various platforms
native.dist.file.windows=windows.dll
native.dist.file.linux=linux.so
native.dist.file.solaris-x86=solaris-x86.so
native.dist.file.solaris-sparc=solaris-sparc.so
native.dist.file.macosx=macosx.dylib

#####################################################################################
# Release. Properties controlling the 'release' process
release.to.server=true

#####################################################################################
# Miscellaneous. Properties that are used elsewhere.

# these properties control the environment for the jarsigner process
# * ${jarsigner.enabled} - whether to sign jars
# * ${jarsigner.xmx} - max heap size for the jarsigner process
# * ${jarsigner.executable} - path to jarsigner executable (optional)
jarsigner.enabled=true
jarsigner.xmx=1024m

# these properties control the environment for the pack200 and unpack200 
# processes
# * ${pack200.enabled} - whether to repackage jars (can be specified in each product)
# * ${use.internal.packer} - whether to use the same JVM for packing jars (can be specified in each product)
#       it is risky because of memory leaks and possible OOMs 
# * ${use.internal.unpacker} - whether to use the same JVM for unpacking jars (can be specified in each product)
#       it is risky because of memory leaks and possible OOMs 
# * ${pack200.xmx} - -Xmx jvm argument value
# * ${pack200.perm.size} - -XX:PermSize jvm argument value
# * ${pack200.max.perm.size} - -XX:MaxPermSize jvm argument value
# * ${pack200.executable}   - path to pack200 executable (optional)
# * ${unpack200.executable} - path to unpack200 executable (optional)
# * ${verification.java.executable} - path to java executable that would be used for verification of packaged jars (optional)
pack200.xmx=768m
pack200.perm.size=32m
pack200.max.perm.size=512m

# these properties control the environment for the external processes running during the build
# * ${process.max.execution.time} - maximum time (in milliseconds) for running the process
#   if set to zero then processes would run without timeout
#   default value is 600000=10min (defined in nbi/infra/build/.ant-lib/src/org/netbeans/installer/infra/build/ant/utils/Utils.java)

# these properties control native executable paths
# * ${tar.executable}    - path to native tar/gtar/gnutar executable
# * ${ls.executable}     - path to native ls executable
# * ${unzip.executable}  - path to native unzip executable
