Home | History | Annotate | Download | only in tools
      1 #!/bin/sh
      2 #
      3 # CDDL HEADER START
      4 #
      5 # The contents of this file are subject to the terms of the
      6 # Common Development and Distribution License (the "License").
      7 # You may not use this file except in compliance with the License.
      8 #
      9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10 # or http://www.opensolaris.org/os/licensing.
     11 # See the License for the specific language governing permissions
     12 # and limitations under the License.
     13 #
     14 # When distributing Covered Code, include this CDDL HEADER in each
     15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16 # If applicable, add the following below this CDDL HEADER, with the
     17 # fields enclosed by brackets "[]" replaced with your own identifying
     18 # information: Portions Copyright [yyyy] [name of copyright owner]
     19 #
     20 # CDDL HEADER END
     21 #
     22 
     23 #
     24 # Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
     25 # Use is subject to license terms.
     26 #
     27 # ident	"%Z%%M%	%I%	%E% SMI"
     28 #
     29 # Generate a proto area suitable for the current architecture ($(MACH))
     30 # sufficient to support the sgs build.
     31 #
     32 # Currently, the following releases are supported:
     33 #	5.11, 5.10, and 5.9.
     34 #
     35 
     36 if [ "X$CODEMGR_WS" = "X" -o "X$MACH" = "X" ] ; then
     37 	echo "usage: CODEMGR_WS and MACH environment variables must be set"
     38 	exit 1
     39 fi
     40 
     41 RELEASE=$1
     42 
     43 if [ "X$RELEASE" = "X" ] ; then
     44 	echo "usage: proto release"
     45 	exit 1;
     46 fi
     47 
     48 IS_THIS_UNIFIED=1
     49 
     50 case $RELEASE in
     51 	"5.11") break;;
     52 	"5.10") break;;
     53 	"5.9") IS_THIS_UNIFIED=0;  break;;
     54 	*)
     55 	echo "usage: unsupported release $RELEASE specified"
     56 	exit 1;;
     57 esac
     58 
     59 dirs="	$CODEMGR_WS/proto \
     60 	$CODEMGR_WS/proto/root_$MACH \
     61 	$CODEMGR_WS/proto/root_$MACH/lib \
     62 	$CODEMGR_WS/proto/root_$MACH/usr \
     63 	$CODEMGR_WS/proto/root_$MACH/usr/demo \
     64 	$CODEMGR_WS/proto/root_$MACH/usr/lib \
     65 	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi \
     66 	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit \
     67 	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb \
     68 	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc \
     69 	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics \
     70 	$CODEMGR_WS/proto/root_$MACH/usr/4lib \
     71 	$CODEMGR_WS/proto/root_$MACH/usr/bin \
     72 	$CODEMGR_WS/proto/root_$MACH/usr/ccs \
     73 	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin \
     74 	$CODEMGR_WS/proto/root_$MACH/usr/include \
     75 	$CODEMGR_WS/proto/root_$MACH/usr/include/sys \
     76 	$CODEMGR_WS/proto/root_$MACH/usr/xpg4 \
     77 	$CODEMGR_WS/proto/root_$MACH/usr/xpg4/bin \
     78 	$CODEMGR_WS/proto/root_$MACH/etc \
     79 	$CODEMGR_WS/proto/root_$MACH/etc/lib \
     80 	$CODEMGR_WS/proto/root_$MACH/opt \
     81 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld \
     82 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin \
     83 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/doc \
     84 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib \
     85 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man \
     86 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1 \
     87 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1l \
     88 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3t \
     89 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3l \
     90 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3x"
     91 
     92 #
     93 # Add 64bit directories
     94 #
     95 MACH64=""
     96 if [ $MACH = "sparc" ]; then
     97     MACH64="sparcv9";
     98 fi
     99 if [ $MACH = "i386" ]; then
    100     MACH64="amd64";
    101 fi
    102 if [ "${MACH64}x" != x ]; then
    103 
    104 	dirs="$dirs \
    105 	$CODEMGR_WS/proto/root_$MACH/lib/$MACH64 \
    106 	$CODEMGR_WS/proto/root_$MACH/usr/bin/$MACH64 \
    107 	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin/$MACH64 \
    108 	$CODEMGR_WS/proto/root_$MACH/usr/lib/$MACH64 \
    109 	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi/$MACH64 \
    110 	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit/$MACH64 \
    111 	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc/$MACH64 \
    112 	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics/$MACH64 \
    113 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin/$MACH64 \
    114 	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib/$MACH64 \
    115 	"
    116 fi
    117 
    118 for dir in `echo $dirs`
    119 do
    120 	if [ ! -d $dir ] ; then
    121 		echo $dir
    122 		mkdir $dir
    123 		chmod 777 $dir
    124 	fi
    125 done
    126 
    127 # We need a local copy of libc_pic.a (we should get this from the parent
    128 # workspace, but as we can't be sure how the proto area is constructed there
    129 # simply take it from a stashed copy on the linkers server. If
    130 # LINKERS_EXPORT is defined, we use it. Failing that, we fall over
    131 #  to linkers.central.
    132 if [ "$LINKERS_EXPORT" = "" ]; then
    133     LINKERS_EXPORT=/net/linkers.central/export
    134 fi
    135 
    136 if [ $MACH = "sparc" ]; then
    137 	PLATS="sparc sparcv9"
    138 elif [ $MACH = "i386" ]; then
    139 	PLATS="i386 amd64"
    140 else
    141 	echo "Unknown Mach: $MACH - no libc_pic.a provided!"
    142 	PLATS=""
    143 fi
    144 
    145 for p in $PLATS
    146 do
    147 	SRCLIBCDIR=${SRC}/lib/libc/$p
    148 	if [ ! -d $SRCLIBCDIR ]; then
    149 		mkdir -p $SRCLIBCDIR
    150 	fi
    151 	if [ ! -f $SRCLIBCDIR/libc_pic.a ]; then
    152 		cp $LINKERS_EXPORT/big/libc_pic/$RELEASE/$p/libc_pic.a \
    153 			$SRCLIBCDIR
    154 	fi
    155 done
    156 
    157 SYSLIB=$CODEMGR_WS/proto/root_$MACH/lib
    158 USRLIB=$CODEMGR_WS/proto/root_$MACH/usr/lib
    159 
    160 if [ ! -h $USRLIB/ld.so.1 ]; then
    161 	rm -f $USRLIB/ld.so.1
    162 	ln -s ../../lib/ld.so.1 $USRLIB/ld.so.1
    163 	echo "$USRLIB/ld.so.1 -> ../../lib/ld.so.1"
    164 fi
    165 
    166 #
    167 # In addition create some 64 symlinks so that dependencies referenced
    168 # from our test environment will map back to the appropriate libraries.
    169 #
    170 if [ ! -h $SYSLIB/64 ] ; then
    171 	rm -f $SYSLIB/64
    172 	ln -s $MACH64 $SYSLIB/64
    173 	echo "$SYSLIB/64 -> $SYSLIB/$MACH64"
    174 fi
    175 if [ ! -h $USRLIB/64 ] ; then
    176 	rm -f $USRLIB/64
    177 	ln -s $MACH64 $USRLIB/64
    178 	echo "$USRLIB/64 -> $USRLIB/$MACH64"
    179 fi
    180 if [ ! -h $USRLIB/link_audit/64 ] ; then
    181 	rm -f $USRLIB/link_audit/64
    182 	ln -s $MACH64 $USRLIB/link_audit/64
    183 	echo "$USRLIB/link_audit/64 -> $USRLIB/link_audit/$MACH64"
    184 fi
    185 if [ ! -h $USRLIB/64/ld.so.1 ]; then
    186 	rm -f $USRLIB/64/ld.so.1
    187 	ln -s ../../../lib/64/ld.so.1 $USRLIB/64/ld.so.1
    188 	echo "$USRLIB/64/ld.so.1 -> ../../../lib/64/ld.so.1"
    189 fi
    190 
    191 #
    192 #
    193 #
    194 if [ $IS_THIS_UNIFIED = 0 ] ; then
    195 	rm -fr $CODEMGR_WS/proto/root_$MACH/lib
    196 	ln -s $CODEMGR_WS/proto/root_$MACH/usr/lib $CODEMGR_WS/proto/root_$MACH/lib
    197 fi
    198