#!/bin/sh

# Note: if "local" users have this file first in their path, then 
# the bash shell's "include source" function will find that paths version 
# first, instead of this "standard" eclipse ppc one.

# this file is intentionally named "shsource" to denote this is intended to 
# be included in other sh files, with "source" command, not 
# executed on its own. 


source buildRoot.shsource

source performance.shsource

export JAVA_4_DIR="j2sdk1.4.2_13"
export JAVA_5_DIR="jdk1.5.0_09"
export ANT_DIR="apache-ant-1.7.0"
export CC_OPTS="-Xmx256M"

export BASEOS=linux
export BASEWS=gtk
export BASEARCH=x86

# no local build properties, for production builds
export LOCAL_BUILD_PROPERTIES_DIR=

export STANDARD_PROPERTIES_DIR=${BUILD_HOME}/releng.control/standardMachineProperties

export BUILD_BUILDMASTER_EMAIL=andrey@xored.com
export BUILD_RESULT_URL=http://turbine.xored.local:3004/cruisecontrol/buildresults
export BUILD_TOADDRESS="dltk-builds@xored.com"

# Here this variable, SKIP_JAR_SIGNING, should be false for 
# production builds. But, the variable is set elsewhere to true, 
# such as in cc_config, for the R2 builds.
# There is another variable, 'sign' in each components build.properties
# to allow components to be the final say to allow signing.  
# This variable, SKIP_JAR_SIGNING, should always be true for 
# "local" builds. 
export SKIP_JAR_SIGNING=false

# controls ANT's debug level
# setting to true will result in TONS of ouput
export USE_DEBUG=true

# this is used especially during signing, where we need to execute 
# the signing script from a signer ID, while running as wtpBuild.
# should be blank or omitted in local builds
export REMOTE_SSH_COMMAND=" "

