xref: /titanic_52/usr/src/cmd/sgs/tools/proto.sh (revision bdfc6d18da790deeec2e0eb09c625902defe2498)
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, Version 1.0 only
7# (the "License").  You may not use this file except in compliance
8# with the License.
9#
10# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
11# or http://www.opensolaris.org/os/licensing.
12# See the License for the specific language governing permissions
13# and limitations under the License.
14#
15# When distributing Covered Code, include this CDDL HEADER in each
16# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
17# If applicable, add the following below this CDDL HEADER, with the
18# fields enclosed by brackets "[]" replaced with your own identifying
19# information: Portions Copyright [yyyy] [name of copyright owner]
20#
21# CDDL HEADER END
22#
23#
24# Copyright 2005 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
153USRLIB=$CODEMGR_WS/proto/root_$MACH/usr/lib
154
155if [ ! -h $USRLIB/ld.so.1 ]; then
156	rm -f $USRLIB/ld.so.1
157	ln -s ../../lib/ld.so.1 $USRLIB/ld.so.1
158	echo "$USRLIB/ld.so.1 -> ../../lib/ld.so.1"
159fi
160
161#
162# In addition create some 64 symlinks so that dependencies referenced
163# from our test environment will map back to the appropriate libraries.
164#
165if [ $MACH = "sparc" ] ; then
166	if [ ! -h $USRLIB/64 ] ; then
167		rm -f $USRLIB/64
168		ln -s sparcv9 $USRLIB/64
169		echo "$USRLIB/64 -> $USRLIB/sparcv9"
170	fi
171	if [ ! -h $USRLIB/link_audit/64 ] ; then
172		rm -f $USRLIB/link_audit/64
173		ln -s sparcv9 $USRLIB/link_audit/64
174		echo "$USRLIB/link_audit/64 -> $USRLIB/link_audit/sparcv9"
175	fi
176	if [ ! -h $USRLIB/64/ld.so.1 ]; then
177		rm -f $USRLIB/64/ld.so.1
178		ln -s ../../lib/64/ld.so.1 $USRLIB/64/ld.so.1
179		echo "$USRLIB/64/ld.so.1 -> ../../../lib/64/ld.so.1"
180	fi
181fi
182
183
184#
185#
186#
187if [ $IS_THIS_UNIFIED = 0 ] ; then
188	rm -fr $CODEMGR_WS/proto/root_$MACH/lib
189	ln -s $CODEMGR_WS/proto/root_$MACH/usr/lib $CODEMGR_WS/proto/root_$MACH/lib
190fi
191