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