cc.sh revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!/usr/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License"). You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright 1995 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
# All Rights Reserved
#
# University Copyright- Copyright (c) 1982, 1986, 1988
# The Regents of the University of California
# All Rights Reserved
#
# University Acknowledgment- Portions of this document are derived from
# software developed by the University of California, Berkeley, and its
# contributors.
#
#ident "%Z%%M% %I% %E% SMI"
# cc command for BSD compatibility package:
#
# BSD compatibility package header files (/usr/ucbinclude)
# are included before SVr4 default (/usr/include) files but
# after any directories specified on the command line via
# the -I option. Thus, the BSD header files are included
# next to last, and SVr4 header files are searched last.
#
# BSD compatibility package libraries (/usr/ucblib) are
# searched next to third to last. SVr4 default libraries
# (/usr/ccs/lib and /usr/lib) are searched next to last
#
# Because the BSD compatibility package C library does not
# contain all the C library routines of /usr/ccs/lib/libc.a,
# the BSD package C library is named /usr/ucblib/libucb.a
# and is passed explicitly to cc. This ensures that libucb.a
# will be searched first for routines and that
# /usr/ccs/lib/libc.a will be searched afterwards for routines
# not found in /usr/ucblib/libucb.a. Also because sockets is
# provided in libc under BSD, /usr/lib/libsocket and /usr/lib/nsl
# are also included as default libraries.
#
# NOTE: the -Y L, and -Y U, options of cc are not valid
if [ -f /usr/ccs/bin/ucbcc ]
then
if [ $# -eq 0 ]
then
# use this to get the usage message from /usr/ccs/bin/ucbcc
/usr/ccs/bin/ucbcc
ret=$?
exit $ret
fi
UCB_LIB_DIR=/usr/ucblib
CCS_LIB_DIR=/usr/ccs/lib
USR_LIB=/usr/lib
TYPE=
dopt=
cgdir=
for i in $*
do
case $i in
-cg*)
cgdir=`echo $i | sed -n 's/-//p'`
;;
-Bstatic|-Bdynamic)
dopt=$i
;;
-xarch=v9)
TYPE=/sparcv9
;;
esac
done
if [ x$LD_RUN_PATH = x ]
then
LD_RUN_PATH=$UCB_LIB_DIR$TYPE
else
LD_RUN_PATH=$LD_RUN_PATH:$UCB_LIB_DIR$TYPE
fi
export LD_RUN_PATH
if [ "$dopt" = "-Bstatic" ]
then
LIBS="-lucb -lsocket -lnsl -lelf"
else
LIBS="-lucb -lsocket -lnsl -lelf -laio"
fi
# get the directory where ucbcc points to and set the LD_LIBRARY_PATH
# to that directory so as to get the necessary libraries.
cclink=`/usr/bin/ls -ln /usr/ccs/bin/ucbcc | awk '{print $11}'`
ccdir=`/usr/bin/dirname $cclink`
if [ "$cgdir" != "" ]
then
# can not have cgdir set and compile in 64bit mode, so
# reset variables back to 32bit mode
TYPE=
nccdir="$ccdir/../lib/$cgdir:$ccdir/../lib:$ccdir/$cgdir:$ccdir"
else
nccdir="$ccdir/../lib$TYPE:$ccdir$TYPE"
fi
LD_LIBRARY_PATH=$UCB_LIB_DIR$TYPE:$CCS_LIB_DIR$TYPE:$USR_LIB$TYPE
export LD_LIBRARY_PATH
/usr/ccs/bin/ucbcc -Xs \
-YP,:$UCB_LIB_DIR$TYPE:$nccdir:$CCS_LIB_DIR$TYPE:$USR_LIB$TYPE \
"$@" -I/usr/ucbinclude $LIBS
ret=$?
exit $ret
else
echo "/usr/ucb/cc: language optional software package not installed"
exit 1
fi