xref: /titanic_50/usr/src/tools/scripts/bldenv.sh (revision cdf0c1d55d9b3b6beaf994835440dfb01aef5cf0)
163df1173Spetede#!/usr/bin/ksh93
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
6b84bdc30Smeem# Common Development and Distribution License (the "License").
7b84bdc30Smeem# 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#
224e5b757fSkupfer
237c478bd9Sstevel@tonic-gate#
24c65e19ffSsuha# Copyright 2008 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# Uses supplied "env" file, based on /opt/onbld/etc/env, to set shell variables
307c478bd9Sstevel@tonic-gate# before spawning a shell for doing a release-style builds interactively
317c478bd9Sstevel@tonic-gate# and incrementally.
327c478bd9Sstevel@tonic-gate#
337c478bd9Sstevel@tonic-gate
3463df1173Spetedefunction usage
3563df1173Spetede{
3663df1173Spetede    OPTIND=0
3763df1173Spetede    getopts -a "${progname}" "${USAGE}" OPT '-?'
3863df1173Spetede    exit 2
3963df1173Spetede}
407c478bd9Sstevel@tonic-gate
4163df1173Spetedefunction is_source_build
4263df1173Spetede{
4363df1173Spetede	"${flags.s.e}" || "${flags.s.d}" || "${flags.s.h}" || "${flags.s.o}"
441fe69678Skupfer	return $?
451fe69678Skupfer}
461fe69678Skupfer
471fe69678Skupfer#
481fe69678Skupfer# single function for setting -S flag and doing error checking.
491fe69678Skupfer# usage: set_S_flag <type>
501fe69678Skupfer# where <type> is the source build type ("E", "D", ...).
511fe69678Skupfer#
5263df1173Spetedefunction set_S_flag
5363df1173Spetede{
541fe69678Skupfer	if is_source_build; then
5563df1173Spetede		print 'Can only build one source variant at a time.'
561fe69678Skupfer		exit 1
571fe69678Skupfer	fi
5863df1173Spetede
5963df1173Spetede	case "$1" in
6063df1173Spetede		"E") flags.s.e=true ;;
6163df1173Spetede		"D") flags.s.d=true ;;
6263df1173Spetede		"H") flags.s.h=true ;;
6363df1173Spetede		"O") flags.s.o=true ;;
6463df1173Spetede		*)   usage ;;
6563df1173Spetede	esac
661fe69678Skupfer}
677c478bd9Sstevel@tonic-gate
6863df1173Spetedetypeset -r USAGE=$'+
6963df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n]
7063df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>]
7163df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net
7263df1173Spetede    consolidation builds]
7363df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for
7463df1173Spetede    doing interactive and incremental builds in a workspace
7563df1173Spetede    already built with nightly(1). bldenv spawns a shell set up
7663df1173Spetede    with the same environment variables taken from an env_file,
7763df1173Spetede    as prepared for use with nightly(1).]
7863df1173Spetede[+?In addition to running a shell for interactive use, bldenv
7963df1173Spetede    can optionally run a single command in the given environment,
8063df1173Spetede    in the vein of sh -c or su -c. This is useful for
8163df1173Spetede    scripting, when an interactive shell would not be. If the
8263df1173Spetede    command is composed of multiple shell words or contains
8363df1173Spetede    other shell metacharacters, it must be quoted appropriately.]
8463df1173Spetede[+?bldenv is particularly useful for testing Makefile targets
8563df1173Spetede    like clobber, install and _msg, which otherwise require digging
8663df1173Spetede    through large build logs to figure out what is being
8763df1173Spetede    done.]
8863df1173Spetede[+?bldenv is also useful if you run into build issues with the
8963df1173Spetede    source product or when generating OpenSolaris deliverables.
9063df1173Spetede    If a source product build is flagged, the environment is set
9163df1173Spetede    up for building the indicated source product tree, which is
9263df1173Spetede    assumed to have already been created. If the OpenSolaris
9363df1173Spetede    deliverables flag (-O) is set in NIGHTLY_OPTIONS, the
9463df1173Spetede    environment is set up for building just the open source.
9563df1173Spetede    This includes using an alternate proto area, as well as
9663df1173Spetede    using the closed binaries in $CODEMGR_WS/closed.skel (which
9763df1173Spetede    is assumed to already exist).]
9863df1173Spetede[+?By default, bldenv will invoke the shell specified in
9963df1173Spetede    $SHELL. If $SHELL is not set or is invalid, csh will be
10063df1173Spetede    used.]
10163df1173Spetede[c?force the use of csh, regardless of the  value  of $SHELL.]
10263df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid
10363df1173Spetede    only if $SHELL is unset or if it points to csh.]
10463df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)]
10563df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the
10663df1173Spetede    default, use +t to use the tools from /opt/onbld)]
10763df1173Spetede[S]:[option?Build a variant of the source product.
10863df1173SpetedeThe value of \aoption\a must be one of the following:]{
10963df1173Spetede       [+E?build the exportable source variant of the source product.]
11063df1173Spetede       [+D?build the domestic  source  (exportable + crypt) variant of
11163df1173Spetede           the source product.]
11263df1173Spetede       [+H?build hybrid source (binaries + deleted source).]
11363df1173Spetede       [+O?simulate an OpenSolaris (open source only) build.]
11463df1173Spetede}
11563df1173Spetede
11663df1173Spetede<env_file> [command]
11763df1173Spetede
11863df1173Spetede[+EXAMPLES]{
11963df1173Spetede    [+?Example 1: Interactive use]{
12063df1173Spetede        [+?Use bldenv to spawn a shell to perform  a  DEBUG  build  and
12163df1173Spetede            testing of the  Makefile  targets  clobber and install for
12263df1173Spetede            usr/src/cmd/true.]
12363df1173Spetede        [+\n% rlogin wopr-2 -l gk
12463df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env
12563df1173SpetedeBuild type   is  DEBUG
12663df1173SpetedeRELEASE      is  5.10
12763df1173SpetedeVERSION      is  wopr-2::on10-se::11/01/2001
12863df1173SpetedeRELEASE_DATE is  May 2004
12963df1173SpetedeThe top-level `setup\' target is available to build headers
13063df1173Spetedeand tools.
13163df1173SpetedeUsing /usr/bin/tcsh as shell.
13263df1173Spetede{root::wopr-2::49}
13363df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true
13463df1173Spetede{root::wopr-2::50} make
13563df1173Spetede{root::wopr-2::51} make clobber
13663df1173Spetede/usr/bin/rm -f true true.po
13763df1173Spetede{root::wopr-2::52} make
13863df1173Spetede/usr/bin/rm -f true
13963df1173Spetedecat true.sh > true
14063df1173Spetedechmod +x true
14163df1173Spetede{root::wopr-2::53} make install
14263df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true
14363df1173Spetede`install\' is up to date.]
14463df1173Spetede    }
14563df1173Spetede    [+?Example 2: Non-interactive use]{
14663df1173Spetede        [+?Invoke bldenv to create SUNWonbld with a single command:]
14763df1173Spetede        [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\']
14863df1173Spetede        }
14963df1173Spetede}
15063df1173Spetede[+SEE ALSO?\bnightly\b(1)]
15163df1173Spetede'
15263df1173Spetede
15363df1173Spetede# main
15463df1173Spetedebuiltin basename
15563df1173Spetede
15663df1173Spetede# boolean flags (true/false)
15763df1173Spetedetypeset flags=(
15863df1173Spetede	typeset c=false
15963df1173Spetede	typeset f=false
16063df1173Spetede	typeset d=false
16163df1173Spetede	typeset O=false
16263df1173Spetede	typeset o=false
16363df1173Spetede	typeset t=true
16463df1173Spetede	typeset s=(
16563df1173Spetede		typeset e=false
16663df1173Spetede		typeset h=false
16763df1173Spetede		typeset d=false
16863df1173Spetede		typeset o=false
16963df1173Spetede	)
17063df1173Spetede)
17163df1173Spetede
17263df1173Spetedetypeset progname="$(basename "${0}")"
17363df1173Spetede
1747c478bd9Sstevel@tonic-gateOPTIND=1
1757c478bd9Sstevel@tonic-gateSUFFIX="-nd"
17663df1173Spetede
17763df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do
17863df1173Spetede    case ${OPT} in
17963df1173Spetede	  c)	flags.c=true  ;;
18063df1173Spetede	  +c)	flags.c=false ;;
18163df1173Spetede	  f)	flags.f=true  ;;
18263df1173Spetede	  +f)	flags.f=false ;;
18363df1173Spetede	  d)	flags.d=true  SUFFIX=""    ;;
18463df1173Spetede	  +d)	flags.d=false SUFFIX="-nd" ;;
18563df1173Spetede	  t)	flags.t=true  ;;
18663df1173Spetede	  +t)	flags.t=false ;;
18763df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
18863df1173Spetede	  \?)	usage ;;
1897c478bd9Sstevel@tonic-gate    esac
1907c478bd9Sstevel@tonic-gatedone
19163df1173Spetedeshift $((OPTIND-1))
1927c478bd9Sstevel@tonic-gate
1937c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given
19463df1173Spetedeif (( $# < 1 )) ; then
19563df1173Spetede	usage
1967c478bd9Sstevel@tonic-gatefi
1977c478bd9Sstevel@tonic-gate
1987c478bd9Sstevel@tonic-gate# force locale to C
19963df1173Spetedeexport \
20063df1173Spetede	LC_COLLATE=C \
20163df1173Spetede	LC_CTYPE=C \
20263df1173Spetede	LC_MESSAGES=C \
20363df1173Spetede	LC_MONETARY=C \
20463df1173Spetede	LC_NUMERIC=C \
20563df1173Spetede	LC_TIME=C
2067c478bd9Sstevel@tonic-gate
2077c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build
20863df1173Spetedeunset \
20963df1173Spetede	LD_OPTIONS \
21063df1173Spetede        LD_LIBRARY_PATH \
21163df1173Spetede        LD_AUDIT \
21263df1173Spetede        LD_BIND_NOW \
21363df1173Spetede        LD_BREADTH \
21463df1173Spetede        LD_CONFIG \
21563df1173Spetede	LD_DEBUG \
21663df1173Spetede        LD_FLAGS \
21763df1173Spetede        LD_LIBRARY_PATH_64 \
21863df1173Spetede        LD_NOVERSION \
21963df1173Spetede        LD_ORIGIN \
22063df1173Spetede	LD_LOADFLTR \
22163df1173Spetede        LD_NOAUXFLTR \
22263df1173Spetede        LD_NOCONFIG \
22363df1173Spetede        LD_NODIRCONFIG \
22463df1173Spetede        LD_NOOBJALTER \
22563df1173Spetede	LD_PRELOAD \
22663df1173Spetede        LD_PROFILE \
22763df1173Spetede	CONFIG \
22863df1173Spetede	GROUP \
22963df1173Spetede	OWNER \
23063df1173Spetede	REMOTE \
23163df1173Spetede	ENV \
23263df1173Spetede	ARCH \
23363df1173Spetede	CLASSPATH
2347c478bd9Sstevel@tonic-gate
2357c478bd9Sstevel@tonic-gate# setup environmental variables
23663df1173Spetedeif [[ -f "$1" ]]; then
23763df1173Spetede	if [[ "$1" == */* ]]; then
23863df1173Spetede		source "$1"
2397c478bd9Sstevel@tonic-gate	else
24063df1173Spetede		source "./$1"
2417c478bd9Sstevel@tonic-gate	fi
2427c478bd9Sstevel@tonic-gateelse
24363df1173Spetede	if [[ -f "/opt/onbld/env/$1" ]]; then
24463df1173Spetede		source "/opt/onbld/env/$1"
2457c478bd9Sstevel@tonic-gate	else
24663df1173Spetede		printf \
24763df1173Spetede		    'Cannot find env file as either %s or /opt/onbld/env/%s\n' \
24863df1173Spetede		    "$1" "$1"
2497c478bd9Sstevel@tonic-gate		exit 1
2507c478bd9Sstevel@tonic-gate	fi
2517c478bd9Sstevel@tonic-gatefi
2527c478bd9Sstevel@tonic-gateshift
2537c478bd9Sstevel@tonic-gate
2541fe69678Skupfer# contents of stdenv.sh inserted after next line:
2551fe69678Skupfer# STDENV_START
2561fe69678Skupfer# STDENV_END
2577c478bd9Sstevel@tonic-gate
25863df1173Spetede#MACH=$(uname -p)
259fb9f9b97Skupfer
2607c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh
2617c478bd9Sstevel@tonic-gateOPTIND=1
26263df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}"
26363df1173Spetedewhile getopts '+AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS"
2647c478bd9Sstevel@tonic-gatedo
26563df1173Spetede	case "$FLAG" in
26663df1173Spetede	  O)	flags.O=true  ;;
26763df1173Spetede	  +O)	flags.O=false ;;
26863df1173Spetede	  o)	flags.o=true  ;;
26963df1173Spetede	  +o)	flags.o=false ;;
27063df1173Spetede	  t)	flags.t=true  ;;
27163df1173Spetede	  +t)	flags.t=false ;;
27263df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
2737c478bd9Sstevel@tonic-gate	  *)	;;
2747c478bd9Sstevel@tonic-gate	esac
2757c478bd9Sstevel@tonic-gatedone
2767c478bd9Sstevel@tonic-gate
27763df1173Spetedeexport INTERNAL_RELEASE_BUILD=
27863df1173Spetede
27963df1173Spetedeprint 'Build type   is  \c'
28063df1173Spetedeif ${flags.d} ; then
28163df1173Spetede	print 'DEBUG'
2827c478bd9Sstevel@tonic-gate	unset RELEASE_BUILD
2837c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2847c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2857c478bd9Sstevel@tonic-gateelse
2867c478bd9Sstevel@tonic-gate	# default is a non-DEBUG build
28763df1173Spetede	print 'non-DEBUG'
28863df1173Spetede	export RELEASE_BUILD=
2897c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2907c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2917c478bd9Sstevel@tonic-gatefi
2927c478bd9Sstevel@tonic-gate
29363df1173Spetedeif ${flags.O} ; then
29463df1173Spetede	export MULTI_PROTO="yes"
29563df1173Spetede	if [[ "$CLOSED_IS_PRESENT" == "yes" ]]; then
29663df1173Spetede		print "CLOSED_IS_PRESENT is 'no' (because of '-O')"
2974e5b757fSkupfer	fi
2984e5b757fSkupfer	export CLOSED_IS_PRESENT=no
29963df1173Spetede	export ON_CLOSED_BINS="$CODEMGR_WS/closed.skel"
3004e5b757fSkupferfi
3014e5b757fSkupfer
3027c478bd9Sstevel@tonic-gate# update build-type variables
30363df1173SpetedeCPIODIR="${CPIODIR}${SUFFIX}"
30463df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}"
3057c478bd9Sstevel@tonic-gate
3067c478bd9Sstevel@tonic-gate# Append source version
30763df1173Spetedeif "${flags.s.e}" ; then
30863df1173Spetede        VERSION+=":EXPORT"
30963df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3107c478bd9Sstevel@tonic-gatefi
3117c478bd9Sstevel@tonic-gate
31263df1173Spetedeif "${flags.s.d}" ; then
31363df1173Spetede        VERSION+=":DOMESTIC"
31463df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3157c478bd9Sstevel@tonic-gatefi
3167c478bd9Sstevel@tonic-gate
31763df1173Spetedeif "${flags.s.h}" ; then
31863df1173Spetede        VERSION+=":HYBRID"
31963df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3207c478bd9Sstevel@tonic-gatefi
3217c478bd9Sstevel@tonic-gate
32263df1173Spetedeif "${flags.s.o}" ; then
32363df1173Spetede        VERSION+=":OPEN_ONLY"
32463df1173Spetede	SRC="${OPEN_SRCDIR}/usr/src"
3251fe69678Skupferfi
3261fe69678Skupfer
327*cdf0c1d5Smjnelson#
328*cdf0c1d5Smjnelson# Keep track of this now, before we manipulate $PATH
329*cdf0c1d5Smjnelson#
330*cdf0c1d5SmjnelsonWHICH_SCM=$(dirname $(whence $0))/which_scm
331*cdf0c1d5Smjnelsonif [[ ! -x $WHICH_SCM ]]; then
332*cdf0c1d5Smjnelson	WHICH_SCM=which_scm
333*cdf0c1d5Smjnelsonfi
334*cdf0c1d5Smjnelson$WHICH_SCM | read SCM_TYPE junk
335*cdf0c1d5Smjnelson
336*cdf0c1d5Smjnelson
3377c478bd9Sstevel@tonic-gate# 	Set PATH for a build
338b84bdc30SmeemPATH="/opt/onbld/bin:/opt/onbld/bin/${MACH}:/opt/SUNWspro/bin:/usr/ccs/bin:/usr/bin:/usr/sbin:/usr/ucb:/usr/etc:/usr/openwin/bin:/usr/sfw/bin:/opt/sfw/bin:."
33963df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then
34063df1173Spetede	export PATH="${SUNWSPRO}/bin:$PATH"
3417c478bd9Sstevel@tonic-gatefi
3427c478bd9Sstevel@tonic-gate
34363df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then
34463df1173Spetede	if [[ -d $SRC/../closed ]]; then
34563df1173Spetede		export CLOSED_IS_PRESENT="yes"
3461fe69678Skupfer	else
34763df1173Spetede		export CLOSED_IS_PRESENT="no"
3481fe69678Skupfer	fi
3491fe69678Skupferfi
3501fe69678Skupfer
35163df1173SpetedeTOOLS="${SRC}/tools"
35263df1173SpetedeTOOLS_PROTO="${TOOLS}/proto"
3537c478bd9Sstevel@tonic-gate
35463df1173Spetedeif "${flags.t}" ; then
35563df1173Spetede	export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}"
3567c478bd9Sstevel@tonic-gate
35763df1173Spetede	export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs"
35863df1173Spetede	export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs"
35963df1173Spetede	export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets"
3607c478bd9Sstevel@tonic-gate
36163df1173Spetede	export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert"
36263df1173Spetede	export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge"
3637c478bd9Sstevel@tonic-gate
36463df1173Spetede	export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl"
36563df1173Spetede	export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod"
3667c478bd9Sstevel@tonic-gate
3677c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}"
3687c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}"
3697c478bd9Sstevel@tonic-gate	export PATH
3707c478bd9Sstevel@tonic-gatefi
3717c478bd9Sstevel@tonic-gate
37263df1173Spetede
37363df1173Spetedeif "${flags.o}" ; then
37463df1173Spetede	export CH=
37563df1173Spetedeelse
3767c478bd9Sstevel@tonic-gate	unset CH
3777c478bd9Sstevel@tonic-gatefi
3787c478bd9Sstevel@tonic-gatePOUND_SIGN="#"
3797c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s"
3807c478bd9Sstevel@tonic-gate
3817c478bd9Sstevel@tonic-gateTMPDIR="/tmp"
3827c478bd9Sstevel@tonic-gate
38363df1173Spetede# "o_FLAG" is used by "nightly.sh" and "makebfu.sh" (it may be useful to
38463df1173Spetede# rename this variable using a more descriptive name later)
38563df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')"
38663df1173Spetede
38763df1173Spetedeexport \
38863df1173Spetede	PATH TMPDIR \
38963df1173Spetede	POUND_SIGN \
39063df1173Spetede	DEF_STRIPFLAG
39163df1173Spetedeunset \
39263df1173Spetede	CFLAGS \
39363df1173Spetede	LD_LIBRARY_PATH
3947c478bd9Sstevel@tonic-gate
3957c478bd9Sstevel@tonic-gate# a la ws
3967c478bd9Sstevel@tonic-gateENVLDLIBS1=
3977c478bd9Sstevel@tonic-gateENVLDLIBS2=
3987c478bd9Sstevel@tonic-gateENVLDLIBS3=
3997c478bd9Sstevel@tonic-gateENVCPPFLAGS1=
4007c478bd9Sstevel@tonic-gateENVCPPFLAGS2=
4017c478bd9Sstevel@tonic-gateENVCPPFLAGS3=
4027c478bd9Sstevel@tonic-gateENVCPPFLAGS4=
4037c478bd9Sstevel@tonic-gatePARENT_ROOT=
4047c478bd9Sstevel@tonic-gate
40563df1173Spetede"${flags.O}" && export ROOT="$ROOT-open"
4064e5b757fSkupfer
40763df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then
40863df1173Spetede	printf \
40963df1173Spetede	    'WARNING: invalid value for MULTI_PROTO (%s);setting to "no".\n' \
41063df1173Spetede	    "$MULTI_PROTO"
41163df1173Spetede	export MULTI_PROTO="no"
4124e5b757fSkupferfi
4134e5b757fSkupfer
41463df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}"
4154e5b757fSkupfer
4167c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
4177c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include"
4187c478bd9Sstevel@tonic-gateMAKEFLAGS=e
4197c478bd9Sstevel@tonic-gate
42063df1173Spetedeexport \
42163df1173Spetede        ENVLDLIBS1 \
42263df1173Spetede        ENVLDLIBS2 \
42363df1173Spetede        ENVLDLIBS3 \
42463df1173Spetede	ENVCPPFLAGS1 \
42563df1173Spetede        ENVCPPFLAGS2 \
42663df1173Spetede        ENVCPPFLAGS3 \
42763df1173Spetede	ENVCPPFLAGS4 \
42863df1173Spetede        MAKEFLAGS \
429*cdf0c1d5Smjnelson        PARENT_ROOT \
430*cdf0c1d5Smjnelson	SCM_TYPE
4317c478bd9Sstevel@tonic-gate
43263df1173Spetedeprintf 'RELEASE      is %s\n'   "$RELEASE"
43363df1173Spetedeprintf 'VERSION      is %s\n'   "$VERSION"
43463df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE"
4357c478bd9Sstevel@tonic-gate
43663df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then
43763df1173Spetede	print "The top-level 'setup' target is available \c"
43863df1173Spetede	print "to build headers and tools."
43963df1173Spetede	print ""
4407c478bd9Sstevel@tonic-gate
44163df1173Spetedeelif "${flags.t}" ; then
44263df1173Spetede	printf \
44363df1173Spetede	    'The tools can be (re)built with the install target in %s.\n\n' \
44463df1173Spetede	    "${TOOLS}"
4457c478bd9Sstevel@tonic-gatefi
4467c478bd9Sstevel@tonic-gate
4477c478bd9Sstevel@tonic-gate
44863df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \
44963df1173Spetede    "$(basename "${SHELL}")" != "csh" ]]; then
4507c478bd9Sstevel@tonic-gate	# $SHELL is set, and it's not csh.
4517c478bd9Sstevel@tonic-gate
45263df1173Spetede	if "${flags.f}" ; then
45363df1173Spetede		print 'WARNING: -f is ignored when $SHELL is not csh'
4547c478bd9Sstevel@tonic-gate	fi
4557c478bd9Sstevel@tonic-gate
45663df1173Spetede	printf 'Using %s as shell.\n' "$SHELL"
45763df1173Spetede	exec "$SHELL" ${@:+-c "$@"}
4587c478bd9Sstevel@tonic-gate
45963df1173Spetedeelif "${flags.f}" ; then
46063df1173Spetede	print 'Using csh -f as shell.'
4617c478bd9Sstevel@tonic-gate	exec csh -f ${@:+-c "$@"}
4627c478bd9Sstevel@tonic-gate
4637c478bd9Sstevel@tonic-gateelse
46463df1173Spetede	print 'Using csh as shell.'
4657c478bd9Sstevel@tonic-gate	exec csh ${@:+-c "$@"}
4667c478bd9Sstevel@tonic-gatefi
46763df1173Spetede
46863df1173Spetede# not reached
469