#! /bin/sh

# This script starts a new shell and sets all enviroment variables, which
# are necessary for building the examples of the Office Development Kit.
# The Script was developed for the operating systems Solaris and Linux.
sdkscript=`echo $0 | grep setsdkenv_unix`
if [ "$sdkscript" = "" ]
then
sdkscript=`history 1 | sed "s/.*\. //"`
fi
sdkdir=`dirname $sdkscript`

# The SDK name
OO_SDK_NAME=odk
export OO_SDK_NAME

# Installation directory of the Software Development Kit.
# Example: OO_SDK_HOME=/work/StarOffice_SDK
OO_SDK_HOME=@OO_SDK_HOME@

# Office installation directory.
# Example: OFFICE_HOME=/opt/staroffice
OFFICE_HOME=@OFFICE_HOME@

# URE installation directory.
# Example: OO_SDK_URE_HOME=/opt/openoffice.org/ure
#OO_SDK_URE_HOME=
#export OO_SDK_URE_HOME

# Directory of the make command.
# Example: OO_SDK_MAKE_HOME=/usr/bin
OO_SDK_MAKE_HOME=@OO_SDK_MAKE_HOME@

# Directory of the zip command.
# Example: OO_SDK_ZIP_HOME=/usr/bin
OO_SDK_ZIP_HOME=@OO_SDK_ZIP_HOME@

# Directory of the C++ compiler.
# Example: OO_SDK_CPP_HOME=/usr/bin
OO_SDK_CPP_HOME=@OO_SDK_CPP_HOME@

# Solaris only
#OO_SDK_CC_55_OR_HIGHER=@OO_SDK_CC_55_OR_HIGHER@

# Directory of the Java SDK.
# Example: OO_SDK_JAVA_HOME=/usr/local/j2sdk1.4.1_01
OO_SDK_JAVA_HOME=@OO_SDK_JAVA_HOME@

# Special output directory
# Example: OO_SDK_OUTPUT_DIR=$HOME
OO_SDK_OUTPUT_DIR=.

# Environment variable to enable auto deployment of example components
# Example: SDK_AUTO_DEPLOYMENT=YES
SDK_AUTO_DEPLOYMENT=YES
export SDK_AUTO_DEPLOYMENT

# Check installation path for the StarOffice Development Kit.
if [ -z "$OO_SDK_HOME" ]
then
    echo Error: Please insert a correct value for the variable OO_SDK_HOME.
    exit 0
fi

export OO_SDK_HOME

# Check installation path for the office.
if [ -z "${OFFICE_HOME}" ] && [ -z "${OO_SDK_URE_HOME}" ]
then
    echo 'Error: Please set either the environment variable OFFICE_HOME or the'
    echo 'environment variable OO_SDK_URE_HOME.'
    exit 0
fi

# Set office program path (only set when using an Office).
if [ "${OFFICE_HOME}" ]
then
    OFFICE_PROGRAM_PATH=${OFFICE_HOME}/program
    export OFFICE_PROGRAM_PATH
fi

# Set UNO path, necessary to ensure that the cpp examples using the
# new UNO bootstrap mechanism use the configured office installation (only set
# when using an Office).
if [ "${OFFICE_HOME}" ]
then
    UNO_PATH=${OFFICE_PROGRAM_PATH}
    export UNO_PATH
fi

if [ "${OO_SDK_URE_HOME}" ]
then
    OO_SDK_URE_BIN_DIR=${OO_SDK_URE_HOME}/bin
    OO_SDK_URE_LIB_DIR=${OO_SDK_URE_HOME}/lib
    OO_SDK_URE_JAVA_DIR=${OO_SDK_URE_HOME}/share/java
else
    OO_SDK_URE_BIN_DIR=${OFFICE_PROGRAM_PATH}
    OO_SDK_URE_LIB_DIR=${OFFICE_PROGRAM_PATH}
    OO_SDK_URE_JAVA_DIR=${OFFICE_PROGRAM_PATH}/classes
fi
export OO_SDK_URE_BIN_DIR
export OO_SDK_URE_LIB_DIR
export OO_SDK_URE_JAVA_DIR

OO_EXAMPLE_OUT=$OO_SDK_HOME
# Prepare appropriate output directory.
if [ -n "$OO_SDK_OUTPUT_DIR" ]
then
    OO_EXAMPLE_OUT=$OO_SDK_OUTPUT_DIR/$OO_SDK_NAME
    export OO_SDK_OUTPUT_DIR
fi

# Get the operating system.
sd_platform=`/usr/share/automake/config.guess | cut -d"-" -f3,4`

# Set the directory name.
case $sd_platform in
  solaris*)
    sd_proctype=`/usr/share/automake/config.guess | cut -d"-" -f1`
    if [ "$sd_proctype" = "sparc" ]
    then
        directoryname=solsparc
	platform='Solaris Sparc'
    else
        directoryname=solintel
	platform='Solaris x86'
    fi
    comid=C52
    pltfrm=sunpro
    soext=so
    exampleout=SOLARISexample.out
    LD_LIBRARY_PATH=$OO_SDK_HOME/$directoryname/lib:$OO_EXAMPLE_OUT/$exampleout/lib:${OO_SDK_URE_LIB_DIR}:.:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    ;;

  darwin*)
    if [ -n "$OO_SDK_CPP_HOME" ]
    then
	SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | $OO_SDK_CPP_HOME/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	export SDK_GXX_INCLUDE_PATH
    fi	

    directoryname=macosx
    comid=gcc3
    pltfrm=gcc
    soext=dylib
    exampleout=MACOSXexample.out
    platform=MacOSX
    DYLD_LIBRARY_PATH=$OO_SDK_HOME/$directoryname/lib:$OO_EXAMPLE_OUT/$exampleout/lib:${OO_SDK_URE_LIB_DIR}:.:$DYLD_LIBRARY_PATH
    export DYLD_LIBRARY_PATH
    ;;

  linux-gnu)
    if [ -n "$OO_SDK_CPP_HOME" ]
    then
	SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | $OO_SDK_CPP_HOME/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	export SDK_GXX_INCLUDE_PATH
    fi	

    directoryname=linux
    comid=gcc3
    pltfrm=gcc
    soext=so
    exampleout=LINUXexample.out
    platform=Linux
    LD_LIBRARY_PATH=$OO_SDK_HOME/$directoryname/lib:$OO_EXAMPLE_OUT/$exampleout/lib:${OO_SDK_URE_LIB_DIR}:.:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
    ;;

  freebsd*)
    if [ -n "$OO_SDK_CPP_HOME" ]
    then
	SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | $OO_SDK_CPP_HOME/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	export SDK_GXX_INCLUDE_PATH
    fi	

    directoryname=freebsd
    comid=gcc3
    pltfrm=gcc
    soext=so
    exampleout=FREEBSDexample.out
    platform=FreeBSD
    LD_LIBRARY_PATH=$OO_SDK_HOME/$directoryname/lib:$OO_EXAMPLE_OUT/$exampleout/lib:${OO_SDK_URE_LIB_DIR}:.:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH

    if [ -e "/sbin/sysctl" ]
    then
	OSVERSION=`/sbin/sysctl  -n kern.osreldate`
    else
	OSVERSION=`/usr/sbin/sysctl  -n kern.osreldate`
    fi
    if [ $OSVERSION -lt 500016 ]
    then
	PTHREAD_CFLAGS=-D_THREAD_SAFE
	PTHREAD_LIBS=-pthread
	export PTHREAD_CFLAGS
	export PTHREAD_LIBS
    elif [ $OSVERSION -lt 502102 ]
    then
	PTHREAD_CFLAGS=-D_THREAD_SAFE
	PTHREAD_LIBS=-lc_r
	export PTHREAD_CFLAGS
	export PTHREAD_LIBS
    else	
	PTHREAD_LIBS=-pthread
	export PTHREAD_LIBS
    fi
    ;;
esac

# Add directory of the SDK tools to the path.
PATH=$OO_SDK_HOME/$directoryname/bin:$OO_EXAMPLE_OUT/$exampleout/bin:${OO_SDK_URE_BIN_DIR}:.:$PATH

# Set the classpath
CLASSPATH=${OO_SDK_URE_JAVA_DIR}/juh.jar:${OO_SDK_URE_JAVA_DIR}/jurt.jar:${OO_SDK_URE_JAVA_DIR}/ridl.jar:${OO_SDK_URE_JAVA_DIR}/unoloader.jar${OFFICE_PROGRAM_PATH+:${OFFICE_PROGRAM_PATH}/classes/unoil.jar}${CLASSPATH+:${CLASSPATH}}
export CLASSPATH


# Add directory of the command make to the path, if necessary.
if [ -n "$OO_SDK_MAKE_HOME" ]
then
    PATH=$OO_SDK_MAKE_HOME:$PATH
    export OO_SDK_MAKE_HOME
fi

# Add directory of the zip tool to the path, if necessary.
if [ -n "$OO_SDK_ZIP_HOME" ]
then
    PATH=$OO_SDK_ZIP_HOME:$PATH
    export OO_SDK_ZIP_HOME
fi

# Add directory of the C++ tools to the path, if necessary.
if [ -n "$OO_SDK_CPP_HOME" ]
then
    PATH=$OO_SDK_CPP_HOME:$PATH
    export OO_SDK_CPP_HOME

    if [ -n "$OO_SDK_CC_55_OR_HIGHER" ]
    then
	export OO_SDK_CC_55_OR_HIGHER
    fi
fi

# Add directory of the Java tools to the path, if necessary.
if [ -n "$OO_SDK_JAVA_HOME" ]
then
    PATH=$OO_SDK_JAVA_HOME/bin:$PATH
#    JAVA_HOME=$OO_SDK_JAVA_HOME
#    export JAVA_HOME
    export OO_SDK_JAVA_HOME

    export PATH
#    UNO_JAVA_JFW_JREHOME=`sp2bv $OO_SDK_JAVA_HOME`
#    UNO_JAVA_JFW_ENV_CLASSPATH=true
#    UNO_JAVA_JFW_VENDOR_SETTINGS=`sp2bv $OFFICE_HOME/share/config/javavendors.xml`
#    export UNO_JAVA_JFW_JREHOME
#    export UNO_JAVA_JFW_ENV_CLASSPATH
#    export UNO_JAVA_JFW_VENDOR_SETTINGS
fi

export PATH

# For URE, prepare symbolic links for libraries:
#rm -f "${OO_SDK_HOME}/${directoryname}/lib/libuno_cppu.${soext}" \
#    "${OO_SDK_HOME}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}" \
#    "${OO_SDK_HOME}/${directoryname}/lib/libuno_sal.${soext}" \
#    "${OO_SDK_HOME}/${directoryname}/lib/libuno_salhelper${comid}.${soext}" \
#    "${OO_SDK_HOME}/${directoryname}/lib/libstlport_${pltfrm}.${soext}"
#if [ "${OO_SDK_URE_HOME}" ]
#then
#    mkdir -p "${OO_SDK_HOME}/${directoryname}/lib"
#    ln -s "${OO_SDK_URE_LIB_DIR}/libuno_cppu.${soext}.3" \
#        "${OO_SDK_HOME}/${directoryname}/lib/libuno_cppu.${soext}"
#    ln -s "${OO_SDK_URE_LIB_DIR}/libuno_cppuhelper${comid}.${soext}.3" \
#        "${OO_SDK_HOME}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}"
#    ln -s "${OO_SDK_URE_LIB_DIR}/libuno_sal.${soext}.3" \
#        "${OO_SDK_HOME}/${directoryname}/lib/libuno_sal.${soext}"
#    ln -s "${OO_SDK_URE_LIB_DIR}/libuno_salhelper${comid}.${soext}.3" \
#        "${OO_SDK_HOME}/${directoryname}/lib/libuno_salhelper${comid}.${soext}"
#    ln -s "${OO_SDK_URE_LIB_DIR}/libstlport_${pltfrm}.${soext}" \
#        "${OO_SDK_HOME}/${directoryname}/lib/libstlport_${pltfrm}.${soext}"
#fi

# Prepare shell with all necessary environment variables.
echo 
echo " ************************************************************************"
echo " *"                                                  
echo " * SDK environment is prepared for ${platform}"      
echo " *"                                                  
echo " * SDK = $OO_SDK_HOME"
echo " * Office = $OFFICE_HOME"
echo " * URE = $OO_SDK_URE_HOME"
echo " * Make = $OO_SDK_MAKE_HOME"
echo " * Zip = $OO_SDK_ZIP_HOME"
echo " * C++ Compiler = $OO_SDK_CPP_HOME"
echo " * Java = $OO_SDK_JAVA_HOME"
echo " * Special Output directory = $OO_SDK_OUTPUT_DIR"
echo " * Auto deployment = $SDK_AUTO_DEPLOYMENT"
echo " *"
echo " ************************************************************************"

echo "]2;Shell prepared with the SDK environment"

