#!/bin/sh

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

########################################################

export PROJECT_HOME=`dirname "$0"`

export ANT_HOME=${BUILD_HOME}/apps/${ANT_DIR}

export JAVA_5_HOME=${BUILD_HOME}/apps/${JAVA_5_DIR}

export PATH=${PATH}:${HOME}/bin:${ANT_HOME}/bin:${JAVA_HOME}/bin

# project name is resolved dynamically, as CC runs
export LOG_DIR=${BUILD_HOME}/cruise-project-logs

# need for some PPC or Linux issues? 
export JAVA_HIGH_ZIPFDS=500

# Spec java 1.5 as default vm to use
export JAVA_HOME=${JAVA_5_HOME}

export RECOMMENDED_TMP_DIR=${BUILD_HOME}/tmp

# OS specific support.
sunjvm=false;
ibmjvm=false;
javaversion="`uname -a`"

case "$javaversion" in
  *x86*)  sunjvm=true;;
  *i686*) sunjvm=true;;
  *ppc*)  ibmjvm=true;;
esac


# values of the bootclasspath attribute used in ant javac calls.
# the names of these jars are VM vendor specific. the first set
# below, commented out, are typical for sun VM's. The 
# second set are for IBM's VM's ... which is what we use 
# on the PPC machine, so we'll leave that as the defaults 
# in this file. 


# set initial values as if for IBM's PPC VM
export bootclasspath="${JAVA_5_HOME}/jre/lib/core.jar:${JAVA_5_HOME}/jre/lib/xml.jar:${JAVA_5_HOME}/jre/lib/graphics.jar:${JAVA_5_HOME}/jre/lib/server.jar"
export bootclasspath_15="${JAVA_5_HOME}/jre/lib/core.jar:${JAVA_5_HOME}/jre/lib/vm.jar:${JAVA_5_HOME}/jre/lib/xml.jar:${JAVA_5_HOME}/jre/lib/graphics.jar:${JAVA_5_HOME}/jre/lib/server.jar"
export ANT_OPTS="-Xms128m -Xmx512m"

# and change them if Sun's VM is being used
if $sunjvm ; then
	export bootclasspath="${JAVA_5_HOME}/jre/lib/rt.jar"
	export bootclasspath_15="${JAVA_5_HOME}/jre/lib/rt.jar"
	export ANT_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=128M -XX:+UseParallelGC"
fi


export CVS_RSH=ssh
export CVS_MAIN_REPO=:pserver:anonymous@dev.eclipse.org:/cvsroot/technology
export CVS_RELENG=org.eclipse.dltk/releng.maps/maps

export J2SE14=${bootclasspath} 
export J2SE15=${bootclasspath_15}


# 	Set this to the relative path for the 
# 	directory that keeps the downloaded drivers 
#   and pre-reqs
export LOCAL_PREREQS_CACHE=${BUILD_HOME}/downloads


export BUILD_INITIALIZED="true"

echo " "
echo "    Project Home: ${PROJECT_HOME}"
echo "    Build Home: ${BUILD_HOME}"
echo "    DISPLAY: ${DISPLAY}"
echo " "
echo "    JAVA_5_HOME: ${JAVA_5_HOME}"
echo "        ${bootclasspath}"
echo " "
echo "    JAVA_5_HOME: ${JAVA_5_HOME}"
echo "        ${bootclasspath_15}"
echo " "
echo "     ANT_HOME: ${ANT_HOME}"
echo " "
echo "     PATH: ${PATH}"
echo " "
echo "      BASEOS: ${BASEOS}"
echo "      BASEWS: ${BASEWS}"
echo "    BASEARCH: ${BASEARCH}"
echo " "
echo "   LOCAL_BUILD_PROPERTIES_DIR: ${LOCAL_BUILD_PROPERTIES_DIR}" 
echo "   STANDARD_PROPERTIES_DIR: ${STANDARD_PROPERTIES_DIR}"
echo " "
