1#! /bin/sh 2############################################################### 3# 4# Licensed to the Apache Software Foundation (ASF) under one 5# or more contributor license agreements. See the NOTICE file 6# distributed with this work for additional information 7# regarding copyright ownership. The ASF licenses this file 8# to you under the Apache License, Version 2.0 (the 9# "License"); you may not use this file except in compliance 10# with the License. You may obtain a copy of the License at 11# 12# http://www.apache.org/licenses/LICENSE-2.0 13# 14# Unless required by applicable law or agreed to in writing, 15# software distributed under the License is distributed on an 16# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17# KIND, either express or implied. See the License for the 18# specific language governing permissions and limitations 19# under the License. 20# 21############################################################### 22 23# This script starts a new shell and sets all enviroment variables, which 24# are necessary for building the examples of the Office Development Kit. 25# The Script was developed for the operating systems Solaris, Linux and MacOS. 26 27# The SDK name 28OO_SDK_NAME=@OO_SDK_NAME@ 29export OO_SDK_NAME 30 31# Installation directory of the Software Development Kit. 32# Example: OO_SDK_HOME=/opt/openoffice/basis4.0/sdk 33OO_SDK_HOME='@OO_SDK_HOME@' 34 35# Office installation directory. 36# Example: OFFICE_HOME=/opt/openoffice4 37OFFICE_HOME='@OFFICE_HOME@' 38 39# Directory of the make command. 40# Example: OO_SDK_MAKE_HOME=/usr/bin 41OO_SDK_MAKE_HOME=@OO_SDK_MAKE_HOME@ 42 43# Directory of the zip command. 44# Example: OO_SDK_ZIP_HOME=/usr/bin 45OO_SDK_ZIP_HOME=@OO_SDK_ZIP_HOME@ 46 47# Directory of the cat command. 48# Example: OO_SDK_CAT_HOME=/usr/bin 49OO_SDK_CAT_HOME=@OO_SDK_CAT_HOME@ 50 51# Directory of the sed command. 52# Example: OO_SDK_SED_HOME=/usr/bin 53OO_SDK_SED_HOME=@OO_SDK_SED_HOME@ 54 55# Directory of the C++ compiler. 56# Example: OO_SDK_CPP_HOME=/usr/bin 57OO_SDK_CPP_HOME=@OO_SDK_CPP_HOME@ 58 59# Solaris only 60OO_SDK_CC_55_OR_HIGHER=@OO_SDK_CC_55_OR_HIGHER@ 61 62# Directory of the Java SDK. 63# Example: OO_SDK_JAVA_HOME=/usr/jdk/jdk1.6.0_10 64OO_SDK_JAVA_HOME=@OO_SDK_JAVA_HOME@ 65 66# Directory of Boost (optional, C++ only) 67# Example: OO_SDK_BOOST_HOME=/opt/local/boost_1_48_0 68OO_SDK_BOOST_HOME=@OO_SDK_BOOST_HOME@ 69export OO_SDK_BOOST_HOME 70 71# Special output directory 72# Example: OO_SDK_OUTPUT_DIR=$HOME 73OO_SDK_OUTPUT_DIR=@OO_SDK_OUTPUT_DIR@ 74 75# Environment variable to enable auto deployment of example components 76# Example: SDK_AUTO_DEPLOYMENT=YES 77SDK_AUTO_DEPLOYMENT=@SDK_AUTO_DEPLOYMENT@ 78export SDK_AUTO_DEPLOYMENT 79 80# Check installation path for the Apache OpenOffice Development Kit. 81if [ -z "${OO_SDK_HOME}" ] 82then 83 echo Error: Please insert a correct value for the variable OO_SDK_HOME. 84 exit 0 85fi 86 87export OO_SDK_HOME 88 89# Check installation path for the office. 90if [ -z "${OFFICE_HOME}" ] 91then 92 echo 'Error: Please set either the environment variable OFFICE_HOME.' 93 exit 0 94fi 95 96# Get the operating system. 97sdk_platform=`${OO_SDK_HOME}/config.guess | cut -d"-" -f3,4` 98 99# Set the directory name. 100programdir=program 101javadir=bin 102case ${sdk_platform} in 103 darwin*) 104 programdir="Contents/MacOS" 105 javacdir=Commands 106 ;; 107esac 108 109# Set office program path (only set when using an Office). 110if [ "${OFFICE_HOME}" ] 111then 112 OFFICE_PROGRAM_PATH=${OFFICE_HOME}/${programdir} 113 export OFFICE_PROGRAM_PATH 114fi 115 116# Set UNO path, necessary to ensure that the cpp examples using the 117# new UNO bootstrap mechanism use the configured office installation (only set 118# when using an Office). 119if [ "${OFFICE_HOME}" ] 120then 121 UNO_PATH=${OFFICE_PROGRAM_PATH} 122 export UNO_PATH 123fi 124 125OO_SDK_OFFICE_BIN_DIR=${OFFICE_PROGRAM_PATH} 126OO_SDK_OFFICE_LIB_DIR=${OFFICE_PROGRAM_PATH} 127OO_SDK_OFFICE_JAVA_DIR=${OFFICE_PROGRAM_PATH}/classes 128 129export OO_SDK_OFFICE_BIN_DIR 130export OO_SDK_OFFICE_LIB_DIR 131export OO_SDK_OFFICE_JAVA_DIR 132 133OO_SDK_OUT=$OO_SDK_HOME 134# Prepare appropriate output directory. 135if [ -n "${OO_SDK_OUTPUT_DIR}" ] 136then 137 OO_SDK_OUT=${OO_SDK_OUTPUT_DIR}/${OO_SDK_NAME} 138 export OO_SDK_OUT 139fi 140 141# Set the directory name. 142case ${sdk_platform} in 143 solaris*) 144 sdk_proctype=`${OO_SDK_HOME}/config.guess | cut -d"-" -f1` 145 if [ "${sdk_proctype}" = "sparc" ] 146 then 147 directoryname=solsparc 148 platform='Solaris Sparc' 149 else 150 directoryname=solintel 151 platform='Solaris x86' 152 fi 153 comid=C52 154 soext=so 155 exampleout=SOLARISexample.out 156 stldebug=_debug 157 LD_LIBRARY_PATH=${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_OFFICE_LIB_DIR}:.:${LD_LIBRARY_PATH} 158 export LD_LIBRARY_PATH 159 ;; 160 161 darwin*) 162 if [ -n "$OO_SDK_CPP_HOME" ] 163 then 164 SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/clang++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1` 165 export SDK_GXX_INCLUDE_PATH 166 fi 167 168 directoryname=macosx 169 comid=s5abi 170 soext=dylib 171 exampleout=MACOSXexample.out 172 platform=MacOSX 173 stldebug=_stldebug 174 DYLD_LIBRARY_PATH=/usr/lib:${OO_SDK_OUT}/${directoryname}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_OFFICE_LIB_DIR}:.:${DYLD_LIBRARY_PATH} 175 export DYLD_LIBRARY_PATH 176 ;; 177 178 linux-gnu) 179 if [ -n "$OO_SDK_CPP_HOME" ] 180 then 181 SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1` 182 export SDK_GXX_INCLUDE_PATH 183 fi 184 185 directoryname=linux 186 comid=gcc3 187 soext=so 188 exampleout=LINUXexample.out 189 platform=Linux 190 stldebug=_stldebug 191 LD_LIBRARY_PATH=${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_OFFICE_LIB_DIR}:.:${LD_LIBRARY_PATH} 192 export LD_LIBRARY_PATH 193 ;; 194 195 freebsd*) 196 if [ -n "$OO_SDK_CPP_HOME" ] 197 then 198 SDK_GXX_INCLUDE_PATH=`echo "#include <cstring>" | ${OO_SDK_CPP_HOME}/g++ -E -xc++ - | sed -n '/.*1*"\(.*\)\/cstring".*/s//\1/p' | head -n 1` 199 export SDK_GXX_INCLUDE_PATH 200 fi 201 202 directoryname=freebsd 203 comid=gcc3 204 soext=so 205 exampleout=FREEBSDexample.out 206 platform=FreeBSD 207 stldebug=_stldebug 208 LD_LIBRARY_PATH=${OO_SDK_HOME}/lib:${OO_SDK_OUT}/${exampleout}/lib:${OO_SDK_OFFICE_LIB_DIR}:.:${LD_LIBRARY_PATH} 209 export LD_LIBRARY_PATH 210 211 if [ -e "/sbin/sysctl" ] 212 then 213 OSVERSION=`/sbin/sysctl -n kern.osreldate` 214 else 215 OSVERSION=`/usr/sbin/sysctl -n kern.osreldate` 216 fi 217 if [ $OSVERSION -lt 500016 ] 218 then 219 PTHREAD_CFLAGS=-D_THREAD_SAFE 220 PTHREAD_LIBS=-pthread 221 export PTHREAD_CFLAGS 222 export PTHREAD_LIBS 223 elif [ $OSVERSION -lt 502102 ] 224 then 225 PTHREAD_CFLAGS=-D_THREAD_SAFE 226 PTHREAD_LIBS=-lc_r 227 export PTHREAD_CFLAGS 228 export PTHREAD_LIBS 229 else 230 PTHREAD_LIBS=-pthread 231 export PTHREAD_LIBS 232 fi 233 ;; 234esac 235 236# Add directory of the SDK tools to the path. 237PATH=${OO_SDK_HOME}/bin:${OO_SDK_OUT}/${exampleout}/bin:${OFFICE_PROGRAM_PATH}:.:${PATH} 238 239# Set the classpath 240CLASSPATH=${OO_SDK_OFFICE_JAVA_DIR}/juh.jar:${OO_SDK_OFFICE_JAVA_DIR}/jurt.jar:${OO_SDK_OFFICE_JAVA_DIR}/ridl.jar:${OO_SDK_OFFICE_JAVA_DIR}/unoloader.jar:${OO_SDK_OFFICE_JAVA_DIR}/unoil.jar:${CLASSPATH} 241export CLASSPATH 242 243 244# Add directory of the command make to the path, if necessary. 245if [ -n "${OO_SDK_MAKE_HOME}" ] 246then 247 PATH=${OO_SDK_MAKE_HOME}:${PATH} 248 export OO_SDK_MAKE_HOME 249fi 250 251# Add directory of the zip tool to the path, if necessary. 252if [ -n "${OO_SDK_ZIP_HOME}" ] 253then 254 PATH=${OO_SDK_ZIP_HOME}:${PATH} 255 export OO_SDK_ZIP_HOME 256fi 257 258# Add directory of the sed tool to the path, if necessary. 259if [ -n "${OO_SDK_SED_HOME}" ] 260then 261 PATH=${OO_SDK_SED_HOME}:${PATH} 262 export OO_SDK_SED_HOME 263fi 264 265# Add directory of the cat tool to the path, if necessary. 266if [ -n "${OO_SDK_CAT_HOME}" ] 267then 268 PATH=${OO_SDK_CAT_HOME}:${PATH} 269 export OO_SDK_CAT_HOME 270fi 271 272# Add directory of the C++ tools to the path, if necessary. 273if [ -n "${OO_SDK_CPP_HOME}" ] 274then 275 PATH=${OO_SDK_CPP_HOME}:${PATH} 276 export OO_SDK_CPP_HOME 277 278 if [ -n "${OO_SDK_CC_55_OR_HIGHER}" ] 279 then 280 export OO_SDK_CC_55_OR_HIGHER 281 fi 282fi 283 284# Add directory of the Java tools to the path, if necessary. 285if [ -n "${OO_SDK_JAVA_HOME}" ] 286then 287 PATH=${OO_SDK_JAVA_HOME}/${javadir}:${PATH} 288# JAVA_HOME=${OO_SDK_JAVA_HOME} 289# export JAVA_HOME 290 export OO_SDK_JAVA_HOME 291 292 export PATH 293fi 294 295export PATH 296 297if [ "${platform}" = "MacOSX" ] 298then 299# For URE, prepare symbolic links for libraries: 300# Only necessary on MacOSX, on other Unix systems the links are already prepared 301# in the SDK installation. 302 303# cleanup potential old links first 304 rm -f "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppu.${soext}" \ 305 "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}" \ 306 "${OO_SDK_OUT}/${directoryname}/lib/libuno_sal.${soext}" \ 307 "${OO_SDK_OUT}/${directoryname}/lib/libuno_salhelper${comid}.${soext}" \ 308 "${OO_SDK_OUT}/${directoryname}/lib/libuno_purpenvhelper${comid}.${soext}" 309 310# prepare links 311 if [ "${OFFICE_HOME}" ] 312 then 313 mkdir -p "${OO_SDK_OUT}/${directoryname}/lib" 314 ln -s "${OO_SDK_OFFICE_LIB_DIR}/libuno_cppu.${soext}.3" \ 315 "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppu.${soext}" 316 ln -s "${OO_SDK_OFFICE_LIB_DIR}/libuno_cppuhelper${comid}.${soext}.3" \ 317 "${OO_SDK_OUT}/${directoryname}/lib/libuno_cppuhelper${comid}.${soext}" 318 ln -s "${OO_SDK_OFFICE_LIB_DIR}/libuno_sal.${soext}.3" \ 319 "${OO_SDK_OUT}/${directoryname}/lib/libuno_sal.${soext}" 320 ln -s "${OO_SDK_OFFICE_LIB_DIR}/libuno_salhelper${comid}.${soext}.3" \ 321 "${OO_SDK_OUT}/${directoryname}/lib/libuno_salhelper${comid}.${soext}" 322 ln -s "${OO_SDK_OFFICE_LIB_DIR}/libuno_purpenvhelper${comid}.${soext}.3" \ 323 "${OO_SDK_OUT}/${directoryname}/lib/libuno_purpenvhelper${comid}.${soext}" 324 325 fi 326fi 327 328 329# Prepare shell with all necessary environment variables. 330echo 331echo " ************************************************************************" 332echo " *" 333echo " * SDK environment is prepared for ${platform}" 334echo " *" 335echo " * SDK = $OO_SDK_HOME" 336echo " * Office = $OFFICE_HOME" 337echo " * Make = $OO_SDK_MAKE_HOME" 338echo " * Zip = $OO_SDK_ZIP_HOME" 339echo " * cat = $OO_SDK_CAT_HOME" 340echo " * sed = $OO_SDK_SED_HOME" 341echo " * C++ Compiler = $OO_SDK_CPP_HOME" 342echo " * Java = $OO_SDK_JAVA_HOME" 343echo " * Boost = $OO_SDK_BOOST_HOME" 344echo " * SDK Output directory = $OO_SDK_OUT" 345echo " * Auto deployment = $SDK_AUTO_DEPLOYMENT" 346echo " *" 347echo " ************************************************************************" 348 349echo "]2;Shell prepared with the SDK environment" 350 351