xref: /titanic_52/usr/src/cmd/sgs/tools/proto.sh (revision 46d4d53123a9d9aa4e380cc03aace03835579f78)
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#
2431fdd7caSab196087# 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:
33*46d4d531Srie#	5.11, 5.10, and 5.9.
347c478bd9Sstevel@tonic-gate#
357c478bd9Sstevel@tonic-gate
367c478bd9Sstevel@tonic-gateif [ "X$CODEMGR_WS" = "X" -o "X$MACH" = "X" ] ; then
37*46d4d531Srie	echo "usage: CODEMGR_WS and MACH environment variables must be set"
387c478bd9Sstevel@tonic-gate	exit 1
397c478bd9Sstevel@tonic-gatefi
407c478bd9Sstevel@tonic-gate
41*46d4d531SrieRELEASE=$1
42*46d4d531Srie
43*46d4d531Srieif [ "X$RELEASE" = "X" ] ; then
44*46d4d531Srie	echo "usage: proto release"
45*46d4d531Srie	exit 1;
46*46d4d531Sriefi
47*46d4d531Srie
48*46d4d531SrieIS_THIS_UNIFIED=1
49*46d4d531Srie
50*46d4d531Sriecase $RELEASE in
51*46d4d531Srie	"5.11") break;;
52*46d4d531Srie	"5.10") break;;
53*46d4d531Srie	"5.9") IS_THIS_UNIFIED=0;  break;;
54*46d4d531Srie	*)
55*46d4d531Srie	echo "usage: unsupported release $RELEASE specified"
56*46d4d531Srie	exit 1;;
57*46d4d531Srieesac
58*46d4d531Srie
597c478bd9Sstevel@tonic-gatedirs="	$CODEMGR_WS/proto \
607c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH \
617c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/lib \
627c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr \
637c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/demo \
647c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib \
657c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi \
667c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit \
677c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb \
687c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc \
697c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics \
707c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/4lib \
717c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/bin \
727c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs \
737c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin \
747c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/include \
757c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/include/sys \
767c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/xpg4 \
777c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/xpg4/bin \
787c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/etc \
797c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/etc/lib \
807c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt \
817c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld \
827c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin \
837c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/doc \
847c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib \
857c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man \
867c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1 \
877c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1l \
887c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3t \
897c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3l \
907c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3x"
917c478bd9Sstevel@tonic-gate
927c478bd9Sstevel@tonic-gate#
937c478bd9Sstevel@tonic-gate# Add 64bit directories
947c478bd9Sstevel@tonic-gate#
957c478bd9Sstevel@tonic-gateMACH64=""
967c478bd9Sstevel@tonic-gateif [ $MACH = "sparc" ]; then
977c478bd9Sstevel@tonic-gate    MACH64="sparcv9";
987c478bd9Sstevel@tonic-gatefi
997c478bd9Sstevel@tonic-gateif [ $MACH = "i386" ]; then
1007c478bd9Sstevel@tonic-gate    MACH64="amd64";
1017c478bd9Sstevel@tonic-gatefi
1027c478bd9Sstevel@tonic-gateif [ "${MACH64}x" != x ]; then
1037c478bd9Sstevel@tonic-gate
1047c478bd9Sstevel@tonic-gate	dirs="$dirs \
1057c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/lib/$MACH64 \
1067c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/bin/$MACH64 \
1077c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin/$MACH64 \
1087c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/$MACH64 \
1097c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi/$MACH64 \
1107c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit/$MACH64 \
1117c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc/$MACH64 \
1127c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics/$MACH64 \
1137c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin/$MACH64 \
1147c478bd9Sstevel@tonic-gate	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib/$MACH64 \
1157c478bd9Sstevel@tonic-gate	"
1167c478bd9Sstevel@tonic-gatefi
1177c478bd9Sstevel@tonic-gate
1187c478bd9Sstevel@tonic-gatefor dir in `echo $dirs`
1197c478bd9Sstevel@tonic-gatedo
1207c478bd9Sstevel@tonic-gate	if [ ! -d $dir ] ; then
1217c478bd9Sstevel@tonic-gate		echo $dir
1227c478bd9Sstevel@tonic-gate		mkdir $dir
1237c478bd9Sstevel@tonic-gate		chmod 777 $dir
1247c478bd9Sstevel@tonic-gate	fi
1257c478bd9Sstevel@tonic-gatedone
1267c478bd9Sstevel@tonic-gate
1277c478bd9Sstevel@tonic-gate# We need a local copy of libc_pic.a (we should get this from the parent
1287c478bd9Sstevel@tonic-gate# workspace, but as we can't be sure how the proto area is constructed there
1294d922dedSrie# simply take it from a stashed copy on the linkers server. If
1304d922dedSrie# LINKERS_EXPORT is defined, we use it. Failing that, we fall over
1314d922dedSrie#  to linkers.central.
1324d922dedSrieif [ "$LINKERS_EXPORT" = "" ]; then
1334d922dedSrie    LINKERS_EXPORT=/net/linkers.central/export
13431fdd7caSab196087fi
1357c478bd9Sstevel@tonic-gate
1367c478bd9Sstevel@tonic-gateif [ $MACH = "sparc" ]; then
1377c478bd9Sstevel@tonic-gate	PLATS="sparc sparcv9"
1387c478bd9Sstevel@tonic-gateelif [ $MACH = "i386" ]; then
1397c478bd9Sstevel@tonic-gate	PLATS="i386 amd64"
1407c478bd9Sstevel@tonic-gateelse
1417c478bd9Sstevel@tonic-gate	echo "Unknown Mach: $MACH - no libc_pic.a provided!"
1427c478bd9Sstevel@tonic-gate	PLATS=""
1437c478bd9Sstevel@tonic-gatefi
1447c478bd9Sstevel@tonic-gate
1457c478bd9Sstevel@tonic-gatefor p in $PLATS
1467c478bd9Sstevel@tonic-gatedo
1477c478bd9Sstevel@tonic-gate	SRCLIBCDIR=${SRC}/lib/libc/$p
1487c478bd9Sstevel@tonic-gate	if [ ! -d $SRCLIBCDIR ]; then
1497c478bd9Sstevel@tonic-gate		mkdir -p $SRCLIBCDIR
1507c478bd9Sstevel@tonic-gate	fi
1517c478bd9Sstevel@tonic-gate	if [ ! -f $SRCLIBCDIR/libc_pic.a ]; then
1524d922dedSrie		cp $LINKERS_EXPORT/big/libc_pic/$RELEASE/$p/libc_pic.a \
1534d922dedSrie			$SRCLIBCDIR
1547c478bd9Sstevel@tonic-gate	fi
1557c478bd9Sstevel@tonic-gatedone
1567c478bd9Sstevel@tonic-gate
1575aefb655SrieSYSLIB=$CODEMGR_WS/proto/root_$MACH/lib
1587c478bd9Sstevel@tonic-gateUSRLIB=$CODEMGR_WS/proto/root_$MACH/usr/lib
1597c478bd9Sstevel@tonic-gate
1607c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/ld.so.1 ]; then
1617c478bd9Sstevel@tonic-gate	rm -f $USRLIB/ld.so.1
1627c478bd9Sstevel@tonic-gate	ln -s ../../lib/ld.so.1 $USRLIB/ld.so.1
1637c478bd9Sstevel@tonic-gate	echo "$USRLIB/ld.so.1 -> ../../lib/ld.so.1"
1647c478bd9Sstevel@tonic-gatefi
1657c478bd9Sstevel@tonic-gate
1667c478bd9Sstevel@tonic-gate#
1677c478bd9Sstevel@tonic-gate# In addition create some 64 symlinks so that dependencies referenced
1687c478bd9Sstevel@tonic-gate# from our test environment will map back to the appropriate libraries.
1697c478bd9Sstevel@tonic-gate#
1705aefb655Srieif [ ! -h $SYSLIB/64 ] ; then
1715aefb655Srie	rm -f $SYSLIB/64
1725aefb655Srie	ln -s $MACH64 $SYSLIB/64
1735aefb655Srie	echo "$SYSLIB/64 -> $SYSLIB/$MACH64"
1745aefb655Sriefi
1757c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/64 ] ; then
1767c478bd9Sstevel@tonic-gate	rm -f $USRLIB/64
1775aefb655Srie	ln -s $MACH64 $USRLIB/64
1785aefb655Srie	echo "$USRLIB/64 -> $USRLIB/$MACH64"
1797c478bd9Sstevel@tonic-gatefi
1807c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/link_audit/64 ] ; then
1817c478bd9Sstevel@tonic-gate	rm -f $USRLIB/link_audit/64
1825aefb655Srie	ln -s $MACH64 $USRLIB/link_audit/64
1835aefb655Srie	echo "$USRLIB/link_audit/64 -> $USRLIB/link_audit/$MACH64"
1847c478bd9Sstevel@tonic-gatefi
1857c478bd9Sstevel@tonic-gateif [ ! -h $USRLIB/64/ld.so.1 ]; then
1867c478bd9Sstevel@tonic-gate	rm -f $USRLIB/64/ld.so.1
1875aefb655Srie	ln -s ../../../lib/64/ld.so.1 $USRLIB/64/ld.so.1
1887c478bd9Sstevel@tonic-gate	echo "$USRLIB/64/ld.so.1 -> ../../../lib/64/ld.so.1"
1897c478bd9Sstevel@tonic-gatefi
1907c478bd9Sstevel@tonic-gate
1917c478bd9Sstevel@tonic-gate#
1927c478bd9Sstevel@tonic-gate#
1937c478bd9Sstevel@tonic-gate#
1947c478bd9Sstevel@tonic-gateif [ $IS_THIS_UNIFIED = 0 ] ; then
1957c478bd9Sstevel@tonic-gate	rm -fr $CODEMGR_WS/proto/root_$MACH/lib
1967c478bd9Sstevel@tonic-gate	ln -s $CODEMGR_WS/proto/root_$MACH/usr/lib $CODEMGR_WS/proto/root_$MACH/lib
1977c478bd9Sstevel@tonic-gatefi
198