xref: /titanic_52/usr/src/cmd/sgs/tools/proto.sh (revision 31fdd7ca2d295948f9f1bcc2a1178c66467bca63)
17c478bd9Sstevel@tonic-gate#!/bin/sh
27c478bd9Sstevel@tonic-gate#
37c478bd9Sstevel@tonic-gate# CDDL HEADER START
47c478bd9Sstevel@tonic-gate#
57c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the
65aefb655Srie# Common Development and Distribution License (the "License").
75aefb655Srie# You may not use this file except in compliance with the License.
87c478bd9Sstevel@tonic-gate#
97c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate# and limitations under the License.
137c478bd9Sstevel@tonic-gate#
147c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate#
207c478bd9Sstevel@tonic-gate# CDDL HEADER END
217c478bd9Sstevel@tonic-gate#
225aefb655Srie
237c478bd9Sstevel@tonic-gate#
24*31fdd7caSab196087# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
257c478bd9Sstevel@tonic-gate# Use is subject to license terms.
267c478bd9Sstevel@tonic-gate#
277c478bd9Sstevel@tonic-gate# ident	"%Z%%M%	%I%	%E% SMI"
287c478bd9Sstevel@tonic-gate#
297c478bd9Sstevel@tonic-gate# Generate a proto area suitable for the current architecture ($(MACH))
307c478bd9Sstevel@tonic-gate# sufficient to support the sgs build.
317c478bd9Sstevel@tonic-gate#
327c478bd9Sstevel@tonic-gate# Currently, the following releases are supported:
337c478bd9Sstevel@tonic-gate#	5.11, 5.10, 5.9 and 5.8
347c478bd9Sstevel@tonic-gate#
357c478bd9Sstevel@tonic-gate
367c478bd9Sstevel@tonic-gateif [ "X$CODEMGR_WS" = "X" -o "X$MACH" = "X" ] ; then
377c478bd9Sstevel@tonic-gate	echo "CODEMGR_WS and MACH environment variables must be set"
387c478bd9Sstevel@tonic-gate	exit 1
397c478bd9Sstevel@tonic-gatefi
407c478bd9Sstevel@tonic-gate
417c478bd9Sstevel@tonic-gatedirs="	$CODEMGR_WS/proto \
427c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH \
437c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/lib \
447c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr \
457c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/demo \
467c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib \
477c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi \
487c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit \
497c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb \
507c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc \
517c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics \
527c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/4lib \
537c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/bin \
547c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs \
557c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin \
567c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/include \
577c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/include/sys \
587c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/xpg4 \
597c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/xpg4/bin \
607c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/etc \
617c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/etc/lib \
627c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt \
637c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld \
647c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin \
657c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/doc \
667c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib \
677c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man \
687c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1 \
697c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1l \
707c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3t \
717c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3l \
727c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3x"
737c478bd9Sstevel@tonic-gate
747c478bd9Sstevel@tonic-gate#
757c478bd9Sstevel@tonic-gate# Add 64bit directories
767c478bd9Sstevel@tonic-gate#
777c478bd9Sstevel@tonic-gateMACH64=""
787c478bd9Sstevel@tonic-gateif [ $MACH = "sparc" ]; then
797c478bd9Sstevel@tonic-gate    MACH64="sparcv9";
807c478bd9Sstevel@tonic-gatefi
817c478bd9Sstevel@tonic-gateif [ $MACH = "i386" ]; then
827c478bd9Sstevel@tonic-gate    MACH64="amd64";
837c478bd9Sstevel@tonic-gatefi
847c478bd9Sstevel@tonic-gateif [ "${MACH64}x" != x ]; then
857c478bd9Sstevel@tonic-gate
867c478bd9Sstevel@tonic-gate	dirs="$dirs \
877c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/lib/$MACH64 \
887c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/bin/$MACH64 \
897c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin/$MACH64 \
907c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/$MACH64 \
917c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi/$MACH64 \
927c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit/$MACH64 \
937c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc/$MACH64 \
947c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics/$MACH64 \
957c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin/$MACH64 \
967c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib/$MACH64 \
977c478bd9Sstevel@tonic-gate	"
987c478bd9Sstevel@tonic-gatefi
997c478bd9Sstevel@tonic-gate
1007c478bd9Sstevel@tonic-gatefor dir in `echo $dirs`
1017c478bd9Sstevel@tonic-gatedo
1027c478bd9Sstevel@tonic-gate	if [ ! -d $dir ] ; then
1037c478bd9Sstevel@tonic-gate		echo $dir
1047c478bd9Sstevel@tonic-gate		mkdir $dir
1057c478bd9Sstevel@tonic-gate		chmod 777 $dir
1067c478bd9Sstevel@tonic-gate	fi
1077c478bd9Sstevel@tonic-gatedone
1087c478bd9Sstevel@tonic-gate
1097c478bd9Sstevel@tonic-gate#
1107c478bd9Sstevel@tonic-gate# Get the target release from ${SRC}/Makefile.master
1117c478bd9Sstevel@tonic-gate#
1127c478bd9Sstevel@tonic-gateRELEASE=`grep "^[ 	]*RELEASE=" ${SRC}/Makefile.master |\
1137c478bd9Sstevel@tonic-gate	sed -e "s/^[ 	]*RELEASE=[ 	]*//"`
1147c478bd9Sstevel@tonic-gate
1157c478bd9Sstevel@tonic-gateIS_THIS_UNIFIED=1
1167c478bd9Sstevel@tonic-gatecase $RELEASE in
1177c478bd9Sstevel@tonic-gate	"5.11") break;;
1187c478bd9Sstevel@tonic-gate	"5.10") break;;
1197c478bd9Sstevel@tonic-gate	"5.9") IS_THIS_UNIFIED=0;  break;;
1207c478bd9Sstevel@tonic-gate	"5.8") IS_THIS_UNIFIED=0;  break;;
1217c478bd9Sstevel@tonic-gate	"5.7") IS_THIS_UNIFIED=0;  break;;
1227c478bd9Sstevel@tonic-gate	*)
1237c478bd9Sstevel@tonic-gate	echo "Unsupported release $RELEASE specified in ${SRC}/Makefile.master"
1247c478bd9Sstevel@tonic-gate	exit 1;;
1257c478bd9Sstevel@tonic-gateesac
1267c478bd9Sstevel@tonic-gate
127*31fdd7caSab196087
1287c478bd9Sstevel@tonic-gate# We need a local copy of libc_pic.a (we should get this from the parent
1297c478bd9Sstevel@tonic-gate# workspace, but as we can't be sure how the proto area is constructed there
130*31fdd7caSab196087# simply take it from a stashed copy on linkers.central or linkers.eng.)
131*31fdd7caSab196087#
132*31fdd7caSab196087# We try for the linkers server in the current domain. Failing that,
133*31fdd7caSab196087# we fall over to linkers.central.
134*31fdd7caSab196087LIBC_PICDIR=/net/linkers/export/big/libc_pic/$RELEASE
135*31fdd7caSab196087if [ ! -d $LIBC_PICDIR ]; then
136*31fdd7caSab196087    LIBC_PICDIR=/net/linkers.central/export/big/libc_pic/$RELEASE
137*31fdd7caSab196087fi
1387c478bd9Sstevel@tonic-gate
1397c478bd9Sstevel@tonic-gate
1407c478bd9Sstevel@tonic-gateif [ $MACH = "sparc" ]; then
1417c478bd9Sstevel@tonic-gate	PLATS="sparc sparcv9"
1427c478bd9Sstevel@tonic-gateelif [ $MACH = "i386" ]; then
1437c478bd9Sstevel@tonic-gate	PLATS="i386 amd64"
1447c478bd9Sstevel@tonic-gateelse
1457c478bd9Sstevel@tonic-gate	echo "Unknown Mach: $MACH - no libc_pic.a provided!"
1467c478bd9Sstevel@tonic-gate	PLATS=""
1477c478bd9Sstevel@tonic-gatefi
1487c478bd9Sstevel@tonic-gate
1497c478bd9Sstevel@tonic-gatefor p in $PLATS
1507c478bd9Sstevel@tonic-gatedo
1517c478bd9Sstevel@tonic-gate	SRCLIBCDIR=${SRC}/lib/libc/$p
1527c478bd9Sstevel@tonic-gate	if [ ! -d $SRCLIBCDIR ]; then
1537c478bd9Sstevel@tonic-gate		mkdir -p $SRCLIBCDIR
1547c478bd9Sstevel@tonic-gate	fi
1557c478bd9Sstevel@tonic-gate	if [ ! -f $SRCLIBCDIR/libc_pic.a ]; then
1567c478bd9Sstevel@tonic-gate		cp $LIBC_PICDIR/$p/libc_pic.a $SRCLIBCDIR
1577c478bd9Sstevel@tonic-gate	fi
1587c478bd9Sstevel@tonic-gatedone
1597c478bd9Sstevel@tonic-gate
1605aefb655SrieSYSLIB=$CODEMGR_WS/proto/root_$MACH/lib
1617c478bd9Sstevel@tonic-gateUSRLIB=$CODEMGR_WS/proto/root_$MACH/usr/lib
1627c478bd9Sstevel@tonic-gate
1637c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/ld.so.1 ]; then
1647c478bd9Sstevel@tonic-gate	rm -f $USRLIB/ld.so.1
1657c478bd9Sstevel@tonic-gate	ln -s ../../lib/ld.so.1 $USRLIB/ld.so.1
1667c478bd9Sstevel@tonic-gate	echo "$USRLIB/ld.so.1 -> ../../lib/ld.so.1"
1677c478bd9Sstevel@tonic-gatefi
1687c478bd9Sstevel@tonic-gate
1697c478bd9Sstevel@tonic-gate#
1707c478bd9Sstevel@tonic-gate# In addition create some 64 symlinks so that dependencies referenced
1717c478bd9Sstevel@tonic-gate# from our test environment will map back to the appropriate libraries.
1727c478bd9Sstevel@tonic-gate#
1735aefb655Srieif [ ! -h $SYSLIB/64 ] ; then
1745aefb655Srie	rm -f $SYSLIB/64
1755aefb655Srie	ln -s $MACH64 $SYSLIB/64
1765aefb655Srie	echo "$SYSLIB/64 -> $SYSLIB/$MACH64"
1775aefb655Sriefi
1787c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/64 ] ; then
1797c478bd9Sstevel@tonic-gate	rm -f $USRLIB/64
1805aefb655Srie	ln -s $MACH64 $USRLIB/64
1815aefb655Srie	echo "$USRLIB/64 -> $USRLIB/$MACH64"
1827c478bd9Sstevel@tonic-gatefi
1837c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/link_audit/64 ] ; then
1847c478bd9Sstevel@tonic-gate	rm -f $USRLIB/link_audit/64
1855aefb655Srie	ln -s $MACH64 $USRLIB/link_audit/64
1865aefb655Srie	echo "$USRLIB/link_audit/64 -> $USRLIB/link_audit/$MACH64"
1877c478bd9Sstevel@tonic-gatefi
1887c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/64/ld.so.1 ]; then
1897c478bd9Sstevel@tonic-gate	rm -f $USRLIB/64/ld.so.1
1905aefb655Srie	ln -s ../../../lib/64/ld.so.1 $USRLIB/64/ld.so.1
1917c478bd9Sstevel@tonic-gate	echo "$USRLIB/64/ld.so.1 -> ../../../lib/64/ld.so.1"
1927c478bd9Sstevel@tonic-gatefi
1937c478bd9Sstevel@tonic-gate
1947c478bd9Sstevel@tonic-gate#
1957c478bd9Sstevel@tonic-gate#
1967c478bd9Sstevel@tonic-gate#
1977c478bd9Sstevel@tonic-gateif [ $IS_THIS_UNIFIED = 0 ] ; then
1987c478bd9Sstevel@tonic-gate	rm -fr $CODEMGR_WS/proto/root_$MACH/lib
1997c478bd9Sstevel@tonic-gate	ln -s $CODEMGR_WS/proto/root_$MACH/usr/lib $CODEMGR_WS/proto/root_$MACH/lib
2007c478bd9Sstevel@tonic-gatefi
201