xref: /titanic_44/usr/src/cmd/sgs/tools/proto.sh (revision 9df12a23948bd40cbe37ce88d84e272c3894e675)
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 2006 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, 5.9 and 5.8
34#
35
36if [ "X$CODEMGR_WS" = "X" -o "X$MACH" = "X" ] ; then
37	echo "CODEMGR_WS and MACH environment variables must be set"
38	exit 1
39fi
40
41dirs="	$CODEMGR_WS/proto \
42	$CODEMGR_WS/proto/root_$MACH \
43	$CODEMGR_WS/proto/root_$MACH/lib \
44	$CODEMGR_WS/proto/root_$MACH/usr \
45	$CODEMGR_WS/proto/root_$MACH/usr/demo \
46	$CODEMGR_WS/proto/root_$MACH/usr/lib \
47	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi \
48	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit \
49	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb \
50	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc \
51	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics \
52	$CODEMGR_WS/proto/root_$MACH/usr/4lib \
53	$CODEMGR_WS/proto/root_$MACH/usr/bin \
54	$CODEMGR_WS/proto/root_$MACH/usr/ccs \
55	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin \
56	$CODEMGR_WS/proto/root_$MACH/usr/include \
57	$CODEMGR_WS/proto/root_$MACH/usr/include/sys \
58	$CODEMGR_WS/proto/root_$MACH/usr/xpg4 \
59	$CODEMGR_WS/proto/root_$MACH/usr/xpg4/bin \
60	$CODEMGR_WS/proto/root_$MACH/etc \
61	$CODEMGR_WS/proto/root_$MACH/etc/lib \
62	$CODEMGR_WS/proto/root_$MACH/opt \
63	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld \
64	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin \
65	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/doc \
66	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib \
67	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man \
68	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1 \
69	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man1l \
70	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3t \
71	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3l \
72	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/man/man3x"
73
74#
75# Add 64bit directories
76#
77MACH64=""
78if [ $MACH = "sparc" ]; then
79    MACH64="sparcv9";
80fi
81if [ $MACH = "i386" ]; then
82    MACH64="amd64";
83fi
84if [ "${MACH64}x" != x ]; then
85
86	dirs="$dirs \
87	$CODEMGR_WS/proto/root_$MACH/lib/$MACH64 \
88	$CODEMGR_WS/proto/root_$MACH/usr/bin/$MACH64 \
89	$CODEMGR_WS/proto/root_$MACH/usr/ccs/bin/$MACH64 \
90	$CODEMGR_WS/proto/root_$MACH/usr/lib/$MACH64 \
91	$CODEMGR_WS/proto/root_$MACH/usr/lib/abi/$MACH64 \
92	$CODEMGR_WS/proto/root_$MACH/usr/lib/link_audit/$MACH64 \
93	$CODEMGR_WS/proto/root_$MACH/usr/lib/mdb/proc/$MACH64 \
94	$CODEMGR_WS/proto/root_$MACH/usr/lib/pics/$MACH64 \
95	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/bin/$MACH64 \
96	$CODEMGR_WS/proto/root_$MACH/opt/SUNWonld/lib/$MACH64 \
97	"
98fi
99
100for dir in `echo $dirs`
101do
102	if [ ! -d $dir ] ; then
103		echo $dir
104		mkdir $dir
105		chmod 777 $dir
106	fi
107done
108
109#
110# Get the target release from ${SRC}/Makefile.master
111#
112RELEASE=`grep "^[ 	]*RELEASE=" ${SRC}/Makefile.master |\
113	sed -e "s/^[ 	]*RELEASE=[ 	]*//"`
114
115IS_THIS_UNIFIED=1
116case $RELEASE in
117	"5.11") break;;
118	"5.10") break;;
119	"5.9") IS_THIS_UNIFIED=0;  break;;
120	"5.8") IS_THIS_UNIFIED=0;  break;;
121	"5.7") IS_THIS_UNIFIED=0;  break;;
122	*)
123	echo "Unsupported release $RELEASE specified in ${SRC}/Makefile.master"
124	exit 1;;
125esac
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 linkers.eng)
130
131LIBC_PICDIR=/net/linkers.eng/linkers/ftp/pub/linkers/libc_pic/$RELEASE
132
133if [ $MACH = "sparc" ]; then
134	PLATS="sparc sparcv9"
135elif [ $MACH = "i386" ]; then
136	PLATS="i386 amd64"
137else
138	echo "Unknown Mach: $MACH - no libc_pic.a provided!"
139	PLATS=""
140fi
141
142for p in $PLATS
143do
144	SRCLIBCDIR=${SRC}/lib/libc/$p
145	if [ ! -d $SRCLIBCDIR ]; then
146		mkdir -p $SRCLIBCDIR
147	fi
148	if [ ! -f $SRCLIBCDIR/libc_pic.a ]; then
149		cp $LIBC_PICDIR/$p/libc_pic.a $SRCLIBCDIR
150	fi
151done
152
153SYSLIB=$CODEMGR_WS/proto/root_$MACH/lib
154USRLIB=$CODEMGR_WS/proto/root_$MACH/usr/lib
155
156if [ ! -h $USRLIB/ld.so.1 ]; then
157	rm -f $USRLIB/ld.so.1
158	ln -s ../../lib/ld.so.1 $USRLIB/ld.so.1
159	echo "$USRLIB/ld.so.1 -> ../../lib/ld.so.1"
160fi
161
162#
163# In addition create some 64 symlinks so that dependencies referenced
164# from our test environment will map back to the appropriate libraries.
165#
166if [ ! -h $SYSLIB/64 ] ; then
167	rm -f $SYSLIB/64
168	ln -s $MACH64 $SYSLIB/64
169	echo "$SYSLIB/64 -> $SYSLIB/$MACH64"
170fi
171if [ ! -h $USRLIB/64 ] ; then
172	rm -f $USRLIB/64
173	ln -s $MACH64 $USRLIB/64
174	echo "$USRLIB/64 -> $USRLIB/$MACH64"
175fi
176if [ ! -h $USRLIB/link_audit/64 ] ; then
177	rm -f $USRLIB/link_audit/64
178	ln -s $MACH64 $USRLIB/link_audit/64
179	echo "$USRLIB/link_audit/64 -> $USRLIB/link_audit/$MACH64"
180fi
181if [ ! -h $USRLIB/64/ld.so.1 ]; then
182	rm -f $USRLIB/64/ld.so.1
183	ln -s ../../../lib/64/ld.so.1 $USRLIB/64/ld.so.1
184	echo "$USRLIB/64/ld.so.1 -> ../../../lib/64/ld.so.1"
185fi
186
187#
188#
189#
190if [ $IS_THIS_UNIFIED = 0 ] ; then
191	rm -fr $CODEMGR_WS/proto/root_$MACH/lib
192	ln -s $CODEMGR_WS/proto/root_$MACH/usr/lib $CODEMGR_WS/proto/root_$MACH/lib
193fi
194