#! /bin/csh
###############################################################
#  
#  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.
#  
###############################################################

# This script 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, Linux and MacOS.

# The SDK name
setenv OO_SDK_NAME @OO_SDK_NAME@

# Installation directory of the Software Development Kit.
# Example: setenv OO_SDK_HOME /opt/openoffice.org/basis3.0/sdk
setenv OO_SDK_HOME '@OO_SDK_HOME@'

# Office installation directory.
# Example: set OFFICE_HOME=/opt/openoffice.org3
set OFFICE_HOME='@OFFICE_HOME@'
OFFICE_BASE_HOME='@OFFICE_BASE_HOME@'

# URE installation directory.
# Example: setenv OO_SDK_URE_HOME /opt/openoffice.org/ure
setenv OO_SDK_URE_HOME '@OO_SDK_URE_HOME@'

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

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

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

# Solaris only
setenv OO_SDK_CC_55_OR_HIGHER @OO_SDK_CC_55_OR_HIGHER@

# Directory of the Java SDK.
# Example: setenv OO_SDK_JAVA_HOME "/usr/jdk/jdk1.6.0_10"
setenv OO_SDK_JAVA_HOME @OO_SDK_JAVA_HOME@

# Special output directory
# Example: setenv OO_SDK_OUTPUT_DIR "$HOME"
setenv OO_SDK_OUTPUT_DIR @OO_SDK_OUTPUT_DIR@

# Environment variable to enable auto deployment of example components
# Example: set SDK_AUTO_DEPLOYMENT=YES
setenv SDK_AUTO_DEPLOYMENT @SDK_AUTO_DEPLOYMENT@

# Get the operating system.
set sdk_platform=`${OO_SDK_HOME}/config.guess | cut -d"-" -f3,4`

# Set the directory name.
set programdir=program
set javadir=bin
switch (${sdk_platform})
  case "darwin*":
    set programdir="Contents/MacOS"
    set javacdir=Commands
    breaksw
endsw


# Set office program path.
if ( "${OFFICE_HOME}" != "" ) then
    setenv OFFICE_PROGRAM_PATH "${OFFICE_HOME}/${programdir}"
endif

# Set office base program path.
if ( "${OFFICE_BASE_HOME}" != "" ) then
    setenv OFFICE_BASE_PROGRAM_PATH "${OFFICE_BASE_HOME}/program"
endif


# Set UNO path, necessary to ensure that the cpp examples using the
# new UNO bootstrap mechanism use the configured office installation.
if ( ${?OFFICE_PROGRAM_PATH} ) then
    setenv UNO_PATH "${OFFICE_PROGRAM_PATH}"
endif

if ( "${OO_SDK_URE_HOME}" != "" ) then
    setenv OO_SDK_URE_BIN_DIR "${OO_SDK_URE_HOME}/bin"
    setenv OO_SDK_URE_LIB_DIR "${OO_SDK_URE_HOME}/lib"
    setenv OO_SDK_URE_JAVA_DIR "${OO_SDK_URE_HOME}/share/java"
else
    setenv OO_SDK_URE_BIN_DIR "${OFFICE_PROGRAM_PATH}"
    setenv OO_SDK_URE_LIB_DIR "${OFFICE_BASE_PROGRAM_PATH}"
    setenv OO_SDK_URE_JAVA_DIR "${OFFICE_BASE_PROGRAM_PATH}/classes"
endif

# Set SDK example output directory
setenv OO_SDK_OUT ${OO_SDK_HOME}
if ( $?OO_SDK_OUTPUT_DIR ) then
    setenv OO_SDK_OUT ${OO_SDK_OUTPUT_DIR}/${OO_SDK_NAME}
endif

# check platform and set appropriate variables
switch (`${OO_SDK_HOME}/config.guess | cut -d"-" -f3,4`)
  case "solaris*":
    if ( `${OO_SDK_HOME}/config.guess | cut -d"-" -f1` == "sparc" ) then
        set directoryname=solsparc
	set platform=Solaris Sparc
    else
        set directoryname=solintel
	set platform=Solaris Intel
    endif
    set comid=C52
    set pltfrm=sunpro
    set soext=so
    set exampleout=SOLARISexample.out
    set stldebug=_debug

    # set LD_LIBRARY_PATH
    if ( $?LD_LIBARY_PATH == 0) then
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.
    else
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.:${LD_LIBRARY_PATH}
    endif
  breaksw

  case "linux-gnu":
    if ( $?OO_SDK_CPP_HOME == 0) then
	set sdk_gxx_include_path=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	setenv SDK_GXX_INCLUDE_PATH ${sdk_gxx_include_path}
    endif

    set directoryname=linux
    set comid=gcc3
    set pltfrm=gcc
    set soext=so
    set exampleout=LINUXexample.out
    set platform=Linux
    set stldebug=_stldebug

    # set LD_LIBRARY_PATH
    if ( $?LD_LIBARY_PATH == 0) then
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.
    else
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.:${LD_LIBRARY_PATH}
    endif
  breaksw

  case "darwin*":
    if ( $?OO_SDK_CPP_HOME == 0) then
	set sdk_gxx_include_path=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	setenv SDK_GXX_INCLUDE_PATH ${sdk_gxx_include_path}
    endif

    set directoryname=macosx
    set comid=gcc3
    set pltfrm=gcc
    set soext=dylib
    set exampleout=MACOSXexample.out
    set platform=MacOSX
    set stldebug=_stldebug

    # set DYLD_LIBRARY_PATH
    if ( $?DYLD_LIBRARY_PATH == 0) then
	setenv DYLD_LIBRARY_PATH ${OO_SDK_OUT}/${directoryname}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.
    else
	setenv DYLD_LIBRARY_PATH ${OO_SDK_OUT}/${directoryname}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.:${DYLD_LIBRARY_PATH}
    endif
  breaksw

  case "freebsd*":
    if ( $?OO_SDK_CPP_HOME == 0) then
	set sdk_gxx_include_path=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1`
	setenv SDK_GXX_INCLUDE_PATH ${sdk_gxx_include_path}
    endif

    set directoryname=freebsd
    set comid=gcc3
    set pltfrm=gcc
    set soext=so
    set exampleout=FREEBSDexample.out
    set platform=FreeBSD
    set stldebug=_stldebug

    # set LD_LIBRARY_PATH
    if ( $?LD_LIBARY_PATH == 0) then
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.
    else
	setenv LD_LIBRARY_PATH ${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_URE_LIB_DIR}:.:${LD_LIBRARY_PATH}
    endif

    if ( -e "/sbin/sysctl" ) then
	set OSVERSION=`/sbin/sysctl  -n kern.osreldate`
    else
	set OSVERSION=`/usr/sbin/sysctl  -n kern.osreldate`
    endif
    
    if ( ${OSVERSION} < 500016 ) then
	setenv PTHREAD_CFLAGS -D_THREAD_SAFE
	setenv PTHREAD_LIBS -pthread
    else if ( ${OSVERSION} < 502102 ) then
	setenv PTHREAD_CFLAGS -D_THREAD_SAFE
	setenv PTHREAD_LIBS -lc_r
    else	
	setenv PTHREAD_LIBS -pthread
    endif
  breaksw
endsw

# set PATH
if ( $?PATH == 0) then
    setenv PATH ${OO_SDK_ZIP_HOME}:${OO_SDK_MAKE_HOME}:${OO_SDK_HOME}/bin:${OO_SDK_OUT}/${exampleout}:${OO_SDK_URE_BIN_DIR}:.
else
    setenv PATH ${OO_SDK_ZIP_HOME}:${OO_SDK_MAKE_HOME}:${OO_SDK_HOME}/bin:${OO_SDK_OUT}/${exampleout}:${OO_SDK_URE_BIN_DIR}:.:${PATH}
endif

# Set CLASSPATH
if ( ${?OFFICE_PROGRAM_PATH} ) then
    if ( ${?CLASSPATH} == 0 ) then
        setenv CLASSPATH "${OFFICE_PROGRAM_PATH}/classes/unoil.jar"
    else
        setenv CLASSPATH "${OFFICE_PROGRAM_PATH}/classes/unoil.jar:${CLASSPATH}"
    endif
endif
if ( $?CLASSPATH == 0) then
    setenv 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"
else
    setenv 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:${CLASSPATH}"
endif

if ( $?OO_SDK_CPP_HOME == 0) then
    setenv PATH ${OO_SDK_CPP_HOME}:${PATH}
endif

if ( $?OO_SDK_JAVA_HOME == 0) then
    setenv PATH ${OO_SDK_JAVA_HOME}:${PATH}
endif

if ( -r "${OO_SDK_URE_LIB_DIR}/libstlport_${pltfrm}${stldebug}.${soext}" ) then
    setenv STLDEBUG ${stldebug}
else
    setenv STLDEBUG ""
endif


if [ "${platform}" == "MacOSX" ] then
#    For URE, prepare symbolic links for libraries:
#    Only necessary on MacOSX, on other Unix systems the links are already prepared
#    in the SDK installation.

#    cleanup potential old links first
    rm -f "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppu.so" \
	"${OO_SDK_OUT}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}" \
	"${OO_SDK_OUT}/${directoryname}/lib/libuno_sal.${soext}" \
	"${OO_SDK_OUT}/${directoryname}/lib/libuno_salhelper${comid}.${soext}" \
	"${OO_SDK_OUT}/${directoryname}/lib/libuno_purpenvhelper${comid}.${soext}"

    if ( -e "${OO_SDK_OUT}/${directoryname}/lib/libstlport_${pltfrm}${STLDEBUG}.${soext}" ) then
	rm -rf "${OO_SDK_OUT}/${directoryname}/lib/libstlport_${pltfrm}${STLDEBUG}.${soext}"
    endif

    if ( "${OO_SDK_URE_HOME}" != "" ) then
	mkdir -p "${OO_SDK_OUT}/${directoryname}/lib"
	ln -s "${OO_SDK_URE_LIB_DIR}/libuno_cppu.${soext}.3" \
	    "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppu.${soext}"
	ln -s "${OO_SDK_URE_LIB_DIR}/libuno_cppuhelper${comid}.${soext}.3" \
	    "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}"
	ln -s "${OO_SDK_URE_LIB_DIR}/libuno_sal.${soext}.3" \
	    "${OO_SDK_OUT}/${directoryname}/lib/libuno_sal.${soext}"
	ln -s "${OO_SDK_URE_LIB_DIR}/libuno_salhelper${comid}.${soext}.3" \
	    "${OO_SDK_OUT}/${directoryname}/lib/libuno_salhelper${comid}.${soext}"
	ln -s "${OO_SDK_URE_LIB_DIR}/libuno_purpenvhelper${comid}.${soext}.3" \
	    "${OO_SDK_OUT}/${directoryname}/lib/libuno_purpenvhelper${comid}.${soext}"

	if ( -r "${OO_SDK_URE_LIB_DIR}/libstlport_${pltfrm}${STLDEBUG}.${soext}" ) then
	    ln -s "${OO_SDK_URE_LIB_DIR}/libstlport_${pltfrm}${STLDEBUG}.${soext}" \
		"${OO_SDK_OUT}/${directoryname}/lib/libstlport_${pltfrm}${STLDEBUG}.${soext}"
	endif
    endif
endif

 
echo 
echo " ************************************************************************"
echo " *"                                                  
echo " * SDK environment is prepared for ${platform}"      
echo " *"                                                  
echo " * SDK = ${OO_SDK_HOME}"
echo " * Office = ${OFFICE_HOME}"
echo " * Office Base = ${OFFICE_BASE_HOME}"
echo " * URE = ${OO_SDK_URE_HOME}"
echo " * Make = ${OO_SDK_MAKE_HOME}"
echo " * Zip = ${OO_SDK_ZIP_HOME}"
if ( $?OO_SDK_CPP_HOME == 0) then
echo " * C++ Compiler = "
else
echo " * C++ Compiler = ${OO_SDK_CPP_HOME}"
endif
if ( $?OO_SDK_JAVA_HOME == 0) then
echo " * Java = "
else
echo " * Java = ${OO_SDK_JAVA_HOME}"
endif
if ( $?OO_SDK_OUTPUT_DIR == 0) then
echo " * Special Output directory = "
else
echo " * SDK Output directory = ${OO_SDK_OUT}"
endif
echo " * Auto deployment = ${SDK_AUTO_DEPLOYMENT}"
echo " *"
echo " ************************************************************************"

unset sdkdir
unset directoryname
unset comid
unset exampleout
unset platform

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