xref: /titanic_50/usr/src/tools/scripts/bldenv.sh (revision 63df117305324e882759ccc7191285d32231d743)
1*63df1173Spetede#!/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
34*63df1173Spetedefunction usage
35*63df1173Spetede{
36*63df1173Spetede    OPTIND=0
37*63df1173Spetede    getopts -a "${progname}" "${USAGE}" OPT '-?'
38*63df1173Spetede    exit 2
39*63df1173Spetede}
407c478bd9Sstevel@tonic-gate
41*63df1173Spetedefunction is_source_build
42*63df1173Spetede{
43*63df1173Spetede	"${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#
52*63df1173Spetedefunction set_S_flag
53*63df1173Spetede{
541fe69678Skupfer	if is_source_build; then
55*63df1173Spetede		print 'Can only build one source variant at a time.'
561fe69678Skupfer		exit 1
571fe69678Skupfer	fi
58*63df1173Spetede
59*63df1173Spetede	case "$1" in
60*63df1173Spetede		"E") flags.s.e=true ;;
61*63df1173Spetede		"D") flags.s.d=true ;;
62*63df1173Spetede		"H") flags.s.h=true ;;
63*63df1173Spetede		"O") flags.s.o=true ;;
64*63df1173Spetede		*)   usage ;;
65*63df1173Spetede	esac
661fe69678Skupfer}
677c478bd9Sstevel@tonic-gate
68*63df1173Spetedetypeset -r USAGE=$'+
69*63df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n]
70*63df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>]
71*63df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net
72*63df1173Spetede    consolidation builds]
73*63df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for
74*63df1173Spetede    doing interactive and incremental builds in a workspace
75*63df1173Spetede    already built with nightly(1). bldenv spawns a shell set up
76*63df1173Spetede    with the same environment variables taken from an env_file,
77*63df1173Spetede    as prepared for use with nightly(1).]
78*63df1173Spetede[+?In addition to running a shell for interactive use, bldenv
79*63df1173Spetede    can optionally run a single command in the given environment,
80*63df1173Spetede    in the vein of sh -c or su -c. This is useful for
81*63df1173Spetede    scripting, when an interactive shell would not be. If the
82*63df1173Spetede    command is composed of multiple shell words or contains
83*63df1173Spetede    other shell metacharacters, it must be quoted appropriately.]
84*63df1173Spetede[+?bldenv is particularly useful for testing Makefile targets
85*63df1173Spetede    like clobber, install and _msg, which otherwise require digging
86*63df1173Spetede    through large build logs to figure out what is being
87*63df1173Spetede    done.]
88*63df1173Spetede[+?bldenv is also useful if you run into build issues with the
89*63df1173Spetede    source product or when generating OpenSolaris deliverables.
90*63df1173Spetede    If a source product build is flagged, the environment is set
91*63df1173Spetede    up for building the indicated source product tree, which is
92*63df1173Spetede    assumed to have already been created. If the OpenSolaris
93*63df1173Spetede    deliverables flag (-O) is set in NIGHTLY_OPTIONS, the
94*63df1173Spetede    environment is set up for building just the open source.
95*63df1173Spetede    This includes using an alternate proto area, as well as
96*63df1173Spetede    using the closed binaries in $CODEMGR_WS/closed.skel (which
97*63df1173Spetede    is assumed to already exist).]
98*63df1173Spetede[+?By default, bldenv will invoke the shell specified in
99*63df1173Spetede    $SHELL. If $SHELL is not set or is invalid, csh will be
100*63df1173Spetede    used.]
101*63df1173Spetede[c?force the use of csh, regardless of the  value  of $SHELL.]
102*63df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid
103*63df1173Spetede    only if $SHELL is unset or if it points to csh.]
104*63df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)]
105*63df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the
106*63df1173Spetede    default, use +t to use the tools from /opt/onbld)]
107*63df1173Spetede[S]:[option?Build a variant of the source product.
108*63df1173SpetedeThe value of \aoption\a must be one of the following:]{
109*63df1173Spetede       [+E?build the exportable source variant of the source product.]
110*63df1173Spetede       [+D?build the domestic  source  (exportable + crypt) variant of
111*63df1173Spetede           the source product.]
112*63df1173Spetede       [+H?build hybrid source (binaries + deleted source).]
113*63df1173Spetede       [+O?simulate an OpenSolaris (open source only) build.]
114*63df1173Spetede}
115*63df1173Spetede
116*63df1173Spetede<env_file> [command]
117*63df1173Spetede
118*63df1173Spetede[+EXAMPLES]{
119*63df1173Spetede    [+?Example 1: Interactive use]{
120*63df1173Spetede        [+?Use bldenv to spawn a shell to perform  a  DEBUG  build  and
121*63df1173Spetede            testing of the  Makefile  targets  clobber and install for
122*63df1173Spetede            usr/src/cmd/true.]
123*63df1173Spetede        [+\n% rlogin wopr-2 -l gk
124*63df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env
125*63df1173SpetedeBuild type   is  DEBUG
126*63df1173SpetedeRELEASE      is  5.10
127*63df1173SpetedeVERSION      is  wopr-2::on10-se::11/01/2001
128*63df1173SpetedeRELEASE_DATE is  May 2004
129*63df1173SpetedeThe top-level `setup\' target is available to build headers
130*63df1173Spetedeand tools.
131*63df1173SpetedeUsing /usr/bin/tcsh as shell.
132*63df1173Spetede{root::wopr-2::49}
133*63df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true
134*63df1173Spetede{root::wopr-2::50} make
135*63df1173Spetede{root::wopr-2::51} make clobber
136*63df1173Spetede/usr/bin/rm -f true true.po
137*63df1173Spetede{root::wopr-2::52} make
138*63df1173Spetede/usr/bin/rm -f true
139*63df1173Spetedecat true.sh > true
140*63df1173Spetedechmod +x true
141*63df1173Spetede{root::wopr-2::53} make install
142*63df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true
143*63df1173Spetede`install\' is up to date.]
144*63df1173Spetede    }
145*63df1173Spetede    [+?Example 2: Non-interactive use]{
146*63df1173Spetede        [+?Invoke bldenv to create SUNWonbld with a single command:]
147*63df1173Spetede        [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\']
148*63df1173Spetede        }
149*63df1173Spetede}
150*63df1173Spetede[+SEE ALSO?\bnightly\b(1)]
151*63df1173Spetede'
152*63df1173Spetede
153*63df1173Spetede# main
154*63df1173Spetedebuiltin basename
155*63df1173Spetede
156*63df1173Spetede# boolean flags (true/false)
157*63df1173Spetedetypeset flags=(
158*63df1173Spetede	typeset c=false
159*63df1173Spetede	typeset f=false
160*63df1173Spetede	typeset d=false
161*63df1173Spetede	typeset O=false
162*63df1173Spetede	typeset o=false
163*63df1173Spetede	typeset t=true
164*63df1173Spetede	typeset s=(
165*63df1173Spetede		typeset e=false
166*63df1173Spetede		typeset h=false
167*63df1173Spetede		typeset d=false
168*63df1173Spetede		typeset o=false
169*63df1173Spetede	)
170*63df1173Spetede)
171*63df1173Spetede
172*63df1173Spetedetypeset progname="$(basename "${0}")"
173*63df1173Spetede
1747c478bd9Sstevel@tonic-gateOPTIND=1
1757c478bd9Sstevel@tonic-gateSUFFIX="-nd"
176*63df1173Spetede
177*63df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do
178*63df1173Spetede    case ${OPT} in
179*63df1173Spetede	  c)	flags.c=true  ;;
180*63df1173Spetede	  +c)	flags.c=false ;;
181*63df1173Spetede	  f)	flags.f=true  ;;
182*63df1173Spetede	  +f)	flags.f=false ;;
183*63df1173Spetede	  d)	flags.d=true  SUFFIX=""    ;;
184*63df1173Spetede	  +d)	flags.d=false SUFFIX="-nd" ;;
185*63df1173Spetede	  t)	flags.t=true  ;;
186*63df1173Spetede	  +t)	flags.t=false ;;
187*63df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
188*63df1173Spetede	  \?)	usage ;;
1897c478bd9Sstevel@tonic-gate    esac
1907c478bd9Sstevel@tonic-gatedone
191*63df1173Spetedeshift $((OPTIND-1))
1927c478bd9Sstevel@tonic-gate
1937c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given
194*63df1173Spetedeif (( $# < 1 )) ; then
195*63df1173Spetede	usage
1967c478bd9Sstevel@tonic-gatefi
1977c478bd9Sstevel@tonic-gate
1987c478bd9Sstevel@tonic-gate# force locale to C
199*63df1173Spetedeexport \
200*63df1173Spetede	LC_COLLATE=C \
201*63df1173Spetede	LC_CTYPE=C \
202*63df1173Spetede	LC_MESSAGES=C \
203*63df1173Spetede	LC_MONETARY=C \
204*63df1173Spetede	LC_NUMERIC=C \
205*63df1173Spetede	LC_TIME=C
2067c478bd9Sstevel@tonic-gate
2077c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build
208*63df1173Spetedeunset \
209*63df1173Spetede	LD_OPTIONS \
210*63df1173Spetede        LD_LIBRARY_PATH \
211*63df1173Spetede        LD_AUDIT \
212*63df1173Spetede        LD_BIND_NOW \
213*63df1173Spetede        LD_BREADTH \
214*63df1173Spetede        LD_CONFIG \
215*63df1173Spetede	LD_DEBUG \
216*63df1173Spetede        LD_FLAGS \
217*63df1173Spetede        LD_LIBRARY_PATH_64 \
218*63df1173Spetede        LD_NOVERSION \
219*63df1173Spetede        LD_ORIGIN \
220*63df1173Spetede	LD_LOADFLTR \
221*63df1173Spetede        LD_NOAUXFLTR \
222*63df1173Spetede        LD_NOCONFIG \
223*63df1173Spetede        LD_NODIRCONFIG \
224*63df1173Spetede        LD_NOOBJALTER \
225*63df1173Spetede	LD_PRELOAD \
226*63df1173Spetede        LD_PROFILE \
227*63df1173Spetede	CONFIG \
228*63df1173Spetede	GROUP \
229*63df1173Spetede	OWNER \
230*63df1173Spetede	REMOTE \
231*63df1173Spetede	ENV \
232*63df1173Spetede	ARCH \
233*63df1173Spetede	CLASSPATH
2347c478bd9Sstevel@tonic-gate
2357c478bd9Sstevel@tonic-gate# setup environmental variables
236*63df1173Spetedeif [[ -f "$1" ]]; then
237*63df1173Spetede	if [[ "$1" == */* ]]; then
238*63df1173Spetede		source "$1"
2397c478bd9Sstevel@tonic-gate	else
240*63df1173Spetede		source "./$1"
2417c478bd9Sstevel@tonic-gate	fi
2427c478bd9Sstevel@tonic-gateelse
243*63df1173Spetede	if [[ -f "/opt/onbld/env/$1" ]]; then
244*63df1173Spetede		source "/opt/onbld/env/$1"
2457c478bd9Sstevel@tonic-gate	else
246*63df1173Spetede		printf \
247*63df1173Spetede		    'Cannot find env file as either %s or /opt/onbld/env/%s\n' \
248*63df1173Spetede		    "$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
258*63df1173Spetede#MACH=$(uname -p)
259fb9f9b97Skupfer
2607c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh
2617c478bd9Sstevel@tonic-gateOPTIND=1
262*63df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}"
263*63df1173Spetedewhile getopts '+AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS"
2647c478bd9Sstevel@tonic-gatedo
265*63df1173Spetede	case "$FLAG" in
266*63df1173Spetede	  O)	flags.O=true  ;;
267*63df1173Spetede	  +O)	flags.O=false ;;
268*63df1173Spetede	  o)	flags.o=true  ;;
269*63df1173Spetede	  +o)	flags.o=false ;;
270*63df1173Spetede	  t)	flags.t=true  ;;
271*63df1173Spetede	  +t)	flags.t=false ;;
272*63df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
2737c478bd9Sstevel@tonic-gate	  *)	;;
2747c478bd9Sstevel@tonic-gate	esac
2757c478bd9Sstevel@tonic-gatedone
2767c478bd9Sstevel@tonic-gate
277*63df1173Spetedeexport INTERNAL_RELEASE_BUILD=
278*63df1173Spetede
279*63df1173Spetedeprint 'Build type   is  \c'
280*63df1173Spetedeif ${flags.d} ; then
281*63df1173Spetede	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
287*63df1173Spetede	print 'non-DEBUG'
288*63df1173Spetede	export RELEASE_BUILD=
2897c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2907c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2917c478bd9Sstevel@tonic-gatefi
2927c478bd9Sstevel@tonic-gate
293*63df1173Spetedeif ${flags.O} ; then
294*63df1173Spetede	export MULTI_PROTO="yes"
295*63df1173Spetede	if [[ "$CLOSED_IS_PRESENT" == "yes" ]]; then
296*63df1173Spetede		print "CLOSED_IS_PRESENT is 'no' (because of '-O')"
2974e5b757fSkupfer	fi
2984e5b757fSkupfer	export CLOSED_IS_PRESENT=no
299*63df1173Spetede	export ON_CLOSED_BINS="$CODEMGR_WS/closed.skel"
3004e5b757fSkupferfi
3014e5b757fSkupfer
3027c478bd9Sstevel@tonic-gate# update build-type variables
303*63df1173SpetedeCPIODIR="${CPIODIR}${SUFFIX}"
304*63df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}"
3057c478bd9Sstevel@tonic-gate
3067c478bd9Sstevel@tonic-gate# Append source version
307*63df1173Spetedeif "${flags.s.e}" ; then
308*63df1173Spetede        VERSION+=":EXPORT"
309*63df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3107c478bd9Sstevel@tonic-gatefi
3117c478bd9Sstevel@tonic-gate
312*63df1173Spetedeif "${flags.s.d}" ; then
313*63df1173Spetede        VERSION+=":DOMESTIC"
314*63df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3157c478bd9Sstevel@tonic-gatefi
3167c478bd9Sstevel@tonic-gate
317*63df1173Spetedeif "${flags.s.h}" ; then
318*63df1173Spetede        VERSION+=":HYBRID"
319*63df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3207c478bd9Sstevel@tonic-gatefi
3217c478bd9Sstevel@tonic-gate
322*63df1173Spetedeif "${flags.s.o}" ; then
323*63df1173Spetede        VERSION+=":OPEN_ONLY"
324*63df1173Spetede	SRC="${OPEN_SRCDIR}/usr/src"
3251fe69678Skupferfi
3261fe69678Skupfer
3277c478bd9Sstevel@tonic-gate# 	Set PATH for a build
328b84bdc30SmeemPATH="/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:."
329*63df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then
330*63df1173Spetede	export PATH="${SUNWSPRO}/bin:$PATH"
3317c478bd9Sstevel@tonic-gatefi
3327c478bd9Sstevel@tonic-gate
333*63df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then
334*63df1173Spetede	if [[ -d $SRC/../closed ]]; then
335*63df1173Spetede		export CLOSED_IS_PRESENT="yes"
3361fe69678Skupfer	else
337*63df1173Spetede		export CLOSED_IS_PRESENT="no"
3381fe69678Skupfer	fi
3391fe69678Skupferfi
3401fe69678Skupfer
341*63df1173SpetedeTOOLS="${SRC}/tools"
342*63df1173SpetedeTOOLS_PROTO="${TOOLS}/proto"
3437c478bd9Sstevel@tonic-gate
344*63df1173Spetedeif "${flags.t}" ; then
345*63df1173Spetede	export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}"
3467c478bd9Sstevel@tonic-gate
347*63df1173Spetede	export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs"
348*63df1173Spetede	export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs"
349*63df1173Spetede	export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets"
3507c478bd9Sstevel@tonic-gate
351*63df1173Spetede	export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert"
352*63df1173Spetede	export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge"
3537c478bd9Sstevel@tonic-gate
354*63df1173Spetede	export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl"
355*63df1173Spetede	export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod"
3567c478bd9Sstevel@tonic-gate
3577c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}"
3587c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}"
3597c478bd9Sstevel@tonic-gate	export PATH
3607c478bd9Sstevel@tonic-gatefi
3617c478bd9Sstevel@tonic-gate
362*63df1173Spetede
363*63df1173Spetedeif "${flags.o}" ; then
364*63df1173Spetede	export CH=
365*63df1173Spetedeelse
3667c478bd9Sstevel@tonic-gate	unset CH
3677c478bd9Sstevel@tonic-gatefi
3687c478bd9Sstevel@tonic-gatePOUND_SIGN="#"
3697c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s"
3707c478bd9Sstevel@tonic-gate
3717c478bd9Sstevel@tonic-gateTMPDIR="/tmp"
3727c478bd9Sstevel@tonic-gate
373*63df1173Spetede# "o_FLAG" is used by "nightly.sh" and "makebfu.sh" (it may be useful to
374*63df1173Spetede# rename this variable using a more descriptive name later)
375*63df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')"
376*63df1173Spetede
377*63df1173Spetedeexport \
378*63df1173Spetede	PATH TMPDIR \
379*63df1173Spetede	POUND_SIGN \
380*63df1173Spetede	DEF_STRIPFLAG
381*63df1173Spetedeunset \
382*63df1173Spetede	CFLAGS \
383*63df1173Spetede	LD_LIBRARY_PATH
3847c478bd9Sstevel@tonic-gate
3857c478bd9Sstevel@tonic-gate# a la ws
3867c478bd9Sstevel@tonic-gateENVLDLIBS1=
3877c478bd9Sstevel@tonic-gateENVLDLIBS2=
3887c478bd9Sstevel@tonic-gateENVLDLIBS3=
3897c478bd9Sstevel@tonic-gateENVCPPFLAGS1=
3907c478bd9Sstevel@tonic-gateENVCPPFLAGS2=
3917c478bd9Sstevel@tonic-gateENVCPPFLAGS3=
3927c478bd9Sstevel@tonic-gateENVCPPFLAGS4=
3937c478bd9Sstevel@tonic-gatePARENT_ROOT=
3947c478bd9Sstevel@tonic-gate
395*63df1173Spetede"${flags.O}" && export ROOT="$ROOT-open"
3964e5b757fSkupfer
397*63df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then
398*63df1173Spetede	printf \
399*63df1173Spetede	    'WARNING: invalid value for MULTI_PROTO (%s);setting to "no".\n' \
400*63df1173Spetede	    "$MULTI_PROTO"
401*63df1173Spetede	export MULTI_PROTO="no"
4024e5b757fSkupferfi
4034e5b757fSkupfer
404*63df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}"
4054e5b757fSkupfer
4067c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
4077c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include"
4087c478bd9Sstevel@tonic-gateMAKEFLAGS=e
4097c478bd9Sstevel@tonic-gate
410*63df1173Spetedeexport \
411*63df1173Spetede        ENVLDLIBS1 \
412*63df1173Spetede        ENVLDLIBS2 \
413*63df1173Spetede        ENVLDLIBS3 \
414*63df1173Spetede	ENVCPPFLAGS1 \
415*63df1173Spetede        ENVCPPFLAGS2 \
416*63df1173Spetede        ENVCPPFLAGS3 \
417*63df1173Spetede	ENVCPPFLAGS4 \
418*63df1173Spetede        MAKEFLAGS \
419*63df1173Spetede        PARENT_ROOT
4207c478bd9Sstevel@tonic-gate
421*63df1173Spetedeprintf 'RELEASE      is %s\n'   "$RELEASE"
422*63df1173Spetedeprintf 'VERSION      is %s\n'   "$VERSION"
423*63df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE"
4247c478bd9Sstevel@tonic-gate
425*63df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then
426*63df1173Spetede	print "The top-level 'setup' target is available \c"
427*63df1173Spetede	print "to build headers and tools."
428*63df1173Spetede	print ""
4297c478bd9Sstevel@tonic-gate
430*63df1173Spetedeelif "${flags.t}" ; then
431*63df1173Spetede	printf \
432*63df1173Spetede	    'The tools can be (re)built with the install target in %s.\n\n' \
433*63df1173Spetede	    "${TOOLS}"
4347c478bd9Sstevel@tonic-gatefi
4357c478bd9Sstevel@tonic-gate
4367c478bd9Sstevel@tonic-gate
437*63df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \
438*63df1173Spetede    "$(basename "${SHELL}")" != "csh" ]]; then
4397c478bd9Sstevel@tonic-gate	# $SHELL is set, and it's not csh.
4407c478bd9Sstevel@tonic-gate
441*63df1173Spetede	if "${flags.f}" ; then
442*63df1173Spetede		print 'WARNING: -f is ignored when $SHELL is not csh'
4437c478bd9Sstevel@tonic-gate	fi
4447c478bd9Sstevel@tonic-gate
445*63df1173Spetede	printf 'Using %s as shell.\n' "$SHELL"
446*63df1173Spetede	exec "$SHELL" ${@:+-c "$@"}
4477c478bd9Sstevel@tonic-gate
448*63df1173Spetedeelif "${flags.f}" ; then
449*63df1173Spetede	print 'Using csh -f as shell.'
4507c478bd9Sstevel@tonic-gate	exec csh -f ${@:+-c "$@"}
4517c478bd9Sstevel@tonic-gate
4527c478bd9Sstevel@tonic-gateelse
453*63df1173Spetede	print 'Using csh as shell.'
4547c478bd9Sstevel@tonic-gate	exec csh ${@:+-c "$@"}
4557c478bd9Sstevel@tonic-gatefi
456*63df1173Spetede
457*63df1173Spetede# not reached
458