mirror of
https://github.com/gnustep/tools-make.git
synced 2025-04-22 05:40:48 +00:00
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/tools/make/trunk@13917 72102866-910b-0410-8b05-ffd578937521
273 lines
8 KiB
Bash
Executable file
273 lines
8 KiB
Bash
Executable file
#! /bin/echo This file must be sourced inside (ba)sh using: .
|
|
#
|
|
# @configure_input@
|
|
#
|
|
# Shell initialization for the GNUstep environment.
|
|
#
|
|
# Copyright (C) 1997-2002 Free Software Foundation, Inc.
|
|
#
|
|
# Author: Scott Christley <scottc@net-community.com>
|
|
# Author: Adam Fedor <fedor@gnu.org>
|
|
# Author: Richard Frith-Macdonald <rfm@gnu.org>
|
|
# Author: Nicola Pero <n.pero@mi.flashnet.it>
|
|
#
|
|
# This file is part of the GNUstep Makefile Package.
|
|
#
|
|
# This library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU General Public License
|
|
# as published by the Free Software Foundation; either version 2
|
|
# of the License, or (at your option) any later version.
|
|
#
|
|
# You should have received a copy of the GNU General Public
|
|
# License along with this library; see the file COPYING.LIB.
|
|
# If not, write to the Free Software Foundation,
|
|
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
#
|
|
|
|
# Warning - this shell script is delicate, because it is sourced by
|
|
# using . rather than simply executed. It is sourced because that is
|
|
# the only way to change the shell variables in the calling
|
|
# environment.
|
|
#
|
|
# Sourcing makes the shell script more delicate for the following reasons:
|
|
#
|
|
# * temporary variables are automatically set in the calling
|
|
# environment! WORKAROUND: we need to unset all them after using
|
|
# them to avoid polluting the calling environment;
|
|
#
|
|
# * not only the exit value of the script, but the exit value of each
|
|
# command we execute, might be interpreted by the calling
|
|
# environment. Typically, the calling environment might be using the
|
|
# shell errexit option ('set -e') in bash parlance, which causes the
|
|
# shell to exit if any command returns an error value. If this were
|
|
# a normal script, this option would mean that the shell would exit
|
|
# if the return value of the whole script were an error value; but
|
|
# because we are sourced, it is as all the commands in this script
|
|
# were executed directly in the calling environment, so *all* values
|
|
# returned by *all* commands must be non-error. [this all typically
|
|
# happens in rpm builds, where scripts are run with the errexit
|
|
# option so that errors in scripts abort the build, and now if a
|
|
# script sources GNUstep.sh, then we are exactly in this situation -
|
|
# if any command inside GNUstep.sh returns an error value (even if
|
|
# GNUstep.sh as a whole would be happy and return succes), the whole
|
|
# rpm build process aborts!]. WORKAROUND: we must make sure all
|
|
# commands return success - last resorts hacks like 'command || :'
|
|
# which always returns success whatever command returns.
|
|
#
|
|
|
|
#
|
|
# Set the GNUstep system root and local root
|
|
#
|
|
GNUSTEP_ROOT=@GNUSTEP_ROOT@
|
|
GNUSTEP_SYSTEM_ROOT=@prefix@
|
|
GNUSTEP_FLATTENED=@GNUSTEP_FLATTENED@
|
|
if [ -z "$LIBRARY_COMBO" ]; then
|
|
LIBRARY_COMBO=@ac_cv_library_combo@
|
|
fi
|
|
export GNUSTEP_ROOT GNUSTEP_SYSTEM_ROOT GNUSTEP_FLATTENED LIBRARY_COMBO
|
|
|
|
GNUSTEP_MAKEFILES=$GNUSTEP_SYSTEM_ROOT/Makefiles
|
|
export GNUSTEP_MAKEFILES
|
|
|
|
GNUSTEP_LOCAL_ROOT=@GNUSTEP_LOCAL_ROOT@
|
|
GNUSTEP_NETWORK_ROOT=@GNUSTEP_NETWORK_ROOT@
|
|
export GNUSTEP_LOCAL_ROOT GNUSTEP_NETWORK_ROOT
|
|
|
|
#
|
|
# Determine the host information
|
|
#
|
|
if [ -z "$GNUSTEP_HOST" ]; then
|
|
# Not all shells (e.g. /bin/sh on FreeBSD < 4.0 or ash) have pushd/popd
|
|
tmpdir=`pwd`; cd /tmp
|
|
GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.guess`
|
|
GNUSTEP_HOST=`$GNUSTEP_MAKEFILES/config.sub $GNUSTEP_HOST`
|
|
cd "$tmpdir"
|
|
unset tmpdir
|
|
fi
|
|
|
|
if [ -z "$GNUSTEP_HOST_CPU" ]; then
|
|
GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/cpu.sh $GNUSTEP_HOST`
|
|
GNUSTEP_HOST_CPU=`$GNUSTEP_MAKEFILES/clean_cpu.sh $GNUSTEP_HOST_CPU`
|
|
fi
|
|
|
|
if [ -z "$GNUSTEP_HOST_VENDOR" ]; then
|
|
GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/vendor.sh $GNUSTEP_HOST`
|
|
GNUSTEP_HOST_VENDOR=`$GNUSTEP_MAKEFILES/clean_vendor.sh $GNUSTEP_HOST_VENDOR`
|
|
fi
|
|
|
|
if [ -z "$GNUSTEP_HOST_OS" ]; then
|
|
GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/os.sh $GNUSTEP_HOST`
|
|
GNUSTEP_HOST_OS=`$GNUSTEP_MAKEFILES/clean_os.sh $GNUSTEP_HOST_OS`
|
|
fi
|
|
|
|
export GNUSTEP_HOST GNUSTEP_HOST_CPU GNUSTEP_HOST_VENDOR GNUSTEP_HOST_OS
|
|
|
|
#
|
|
# Ask the user_home tool for the root path.
|
|
#
|
|
if [ -z "$GNUSTEP_FLATTENED" ]; then
|
|
GNUSTEP_USER_ROOT=`$GNUSTEP_MAKEFILES/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS/user_home user`
|
|
else
|
|
GNUSTEP_USER_ROOT=`$GNUSTEP_MAKEFILES/user_home user`
|
|
fi
|
|
|
|
export GNUSTEP_USER_ROOT
|
|
|
|
#
|
|
# GNUSTEP_PATHLIST is like an abstract path-like shell
|
|
# variable, which can be used to search the gnustep directories - and
|
|
# in these scripts, it is also used to set up other shell variables
|
|
#
|
|
if [ -z "$GNUSTEP_PATHLIST" ]; then
|
|
|
|
# If we need to convert win32 paths, this is the time!
|
|
if [ -z "`echo $GNUSTEP_SYSTEM_ROOT | sed 's|^[a-zA-Z]:/.*$||'`" ]; then
|
|
G_U_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_USER_ROOT"`
|
|
G_L_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_LOCAL_ROOT"`
|
|
G_N_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_NETWORK_ROOT"`
|
|
G_S_R=`$GNUSTEP_MAKEFILES/fixpath.sh -u "$GNUSTEP_SYSTEM_ROOT"`
|
|
else
|
|
G_U_R="$GNUSTEP_USER_ROOT"
|
|
G_L_R="$GNUSTEP_LOCAL_ROOT"
|
|
G_N_R="$GNUSTEP_NETWORK_ROOT"
|
|
G_S_R="$GNUSTEP_SYSTEM_ROOT"
|
|
fi
|
|
|
|
# Now we basically want to build
|
|
# GNUSTEP_PATHLIST="$G_U_R:$G_L_R:$G_N_R:$G_S_R"
|
|
# but we want to remove duplicates.
|
|
|
|
# Start with $G_U_R:$G_L_R - or $G_U_R if they are the same
|
|
if [ "$G_L_R" != "$G_U_R" ]; then
|
|
GNUSTEP_PATHLIST="$G_U_R:$G_L_R"
|
|
else
|
|
GNUSTEP_PATHLIST="$G_U_R"
|
|
fi
|
|
|
|
# Now append $G_N_R but only if different from what already there
|
|
if [ "$G_N_R" != "$G_U_R" ]; then
|
|
if [ "$G_N_R" != "$G_L_R" ]; then
|
|
GNUSTEP_PATHLIST="$GNUSTEP_PATHLIST:$G_N_R"
|
|
fi
|
|
fi
|
|
|
|
# Now append $G_S_R but only if different from what already there
|
|
if [ "$G_S_R" != "$G_U_R" ]; then
|
|
if [ "$G_S_R" != "$G_L_R" ]; then
|
|
if [ "$G_S_R" != "$G_N_R" ]; then
|
|
GNUSTEP_PATHLIST="$GNUSTEP_PATHLIST:$G_S_R"
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
unset G_U_R
|
|
unset G_L_R
|
|
unset G_N_R
|
|
unset G_S_R
|
|
|
|
export GNUSTEP_PATHLIST
|
|
fi
|
|
|
|
#
|
|
# Add path to Tools to PATH
|
|
#
|
|
tmp_IFS="$IFS"
|
|
IFS=:
|
|
temp_path=
|
|
for dir in $GNUSTEP_PATHLIST; do
|
|
|
|
# Prepare the path_fragment
|
|
if [ -z "$GNUSTEP_FLATTENED" ]; then
|
|
path_fragment="$dir/Tools:$dir/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}/${LIBRARY_COMBO}:$dir/Tools/${GNUSTEP_HOST_CPU}/${GNUSTEP_HOST_OS}"
|
|
else
|
|
path_fragment="$dir/Tools"
|
|
fi
|
|
|
|
# Add it to temp_path
|
|
if [ -z "$temp_path" ]; then
|
|
temp_path="$path_fragment"
|
|
else
|
|
temp_path="$temp_path:$path_fragment"
|
|
fi
|
|
|
|
unset path_fragment
|
|
|
|
done
|
|
IFS="$tmp_IFS"
|
|
unset tmp_IFS
|
|
unset dir
|
|
if [ -z "$PATH" ]; then
|
|
PATH="$temp_path"
|
|
else
|
|
if ( echo ${PATH}| grep -v "${temp_path}" >/dev/null ); then
|
|
PATH="${temp_path}:${PATH}"
|
|
fi
|
|
fi
|
|
unset temp_path
|
|
export PATH
|
|
|
|
. $GNUSTEP_MAKEFILES/ld_lib_path.sh
|
|
|
|
tmp_IFS="$IFS"
|
|
IFS=:
|
|
gnustep_class_path=
|
|
for dir in $GNUSTEP_PATHLIST; do
|
|
|
|
if [ -z "$gnustep_class_path" ]; then
|
|
gnustep_class_path="$dir/Libraries/Java"
|
|
else
|
|
gnustep_class_path="$gnustep_class_path:$dir/Libraries/Java"
|
|
fi
|
|
|
|
done
|
|
IFS="$tmp_IFS"
|
|
unset tmp_IFS
|
|
unset dir
|
|
|
|
if [ -z "$CLASSPATH" ]; then
|
|
CLASSPATH="$gnustep_class_path"
|
|
else
|
|
if ( echo ${CLASSPATH}| grep -v "${gnustep_class_path}" >/dev/null ); then
|
|
CLASSPATH="$CLASSPATH:$gnustep_class_path"
|
|
fi
|
|
fi
|
|
|
|
unset gnustep_class_path
|
|
export CLASSPATH
|
|
|
|
#
|
|
# Perform any user initialization
|
|
#
|
|
if [ -f "$GNUSTEP_USER_ROOT/GNUstep.sh" ]; then
|
|
. "$GNUSTEP_USER_ROOT/GNUstep.sh"
|
|
fi
|
|
|
|
#
|
|
# Run 'make_services' in background if possible - updates cache of services
|
|
# and applications/file-extensions known to the applications.
|
|
#
|
|
# We run it in a subshell - using ("$TDIR/make_services" &) -
|
|
# otherwise shell with job control (like bash) output an annoying
|
|
# message when make_services is done, while we want it to happen
|
|
# silently.
|
|
#
|
|
if [ -z "$GNUSTEP_FLATTENED" ]; then
|
|
TDIR=$GNUSTEP_SYSTEM_ROOT/Tools/$GNUSTEP_HOST_CPU/$GNUSTEP_HOST_OS
|
|
if [ -x "$TDIR/$LIBRARY_COMBO/make_services" ]
|
|
then
|
|
("$TDIR/$LIBRARY_COMBO/make_services" &)
|
|
else
|
|
if [ -x "$TDIR/make_services" ]
|
|
then
|
|
("$TDIR/make_services" &)
|
|
fi
|
|
fi
|
|
else
|
|
TDIR=$GNUSTEP_SYSTEM_ROOT/Tools
|
|
if [ -x "$TDIR/make_services" ]
|
|
then
|
|
("$TDIR/make_services" &)
|
|
fi
|
|
fi
|
|
unset TDIR
|
|
|