xref: /titanic_44/usr/src/tools/scripts/bldenv.sh (revision 0756aa0bcac8d365602b6dbaa3bed130eb279e43)
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#
24*0756aa0bSGavin Maltby# Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
257c478bd9Sstevel@tonic-gate# Use is subject to license terms.
267c478bd9Sstevel@tonic-gate#
277c478bd9Sstevel@tonic-gate# Uses supplied "env" file, based on /opt/onbld/etc/env, to set shell variables
287c478bd9Sstevel@tonic-gate# before spawning a shell for doing a release-style builds interactively
297c478bd9Sstevel@tonic-gate# and incrementally.
307c478bd9Sstevel@tonic-gate#
317c478bd9Sstevel@tonic-gate
3263df1173Spetedefunction usage
3363df1173Spetede{
3463df1173Spetede    OPTIND=0
3563df1173Spetede    getopts -a "${progname}" "${USAGE}" OPT '-?'
3663df1173Spetede    exit 2
3763df1173Spetede}
387c478bd9Sstevel@tonic-gate
3963df1173Spetedefunction is_source_build
4063df1173Spetede{
4163df1173Spetede	"${flags.s.e}" || "${flags.s.d}" || "${flags.s.h}" || "${flags.s.o}"
421fe69678Skupfer	return $?
431fe69678Skupfer}
441fe69678Skupfer
451fe69678Skupfer#
461fe69678Skupfer# single function for setting -S flag and doing error checking.
471fe69678Skupfer# usage: set_S_flag <type>
481fe69678Skupfer# where <type> is the source build type ("E", "D", ...).
491fe69678Skupfer#
5063df1173Spetedefunction set_S_flag
5163df1173Spetede{
521fe69678Skupfer	if is_source_build; then
5363df1173Spetede		print 'Can only build one source variant at a time.'
541fe69678Skupfer		exit 1
551fe69678Skupfer	fi
5663df1173Spetede
5763df1173Spetede	case "$1" in
5863df1173Spetede		"E") flags.s.e=true ;;
5963df1173Spetede		"D") flags.s.d=true ;;
6063df1173Spetede		"H") flags.s.h=true ;;
6163df1173Spetede		"O") flags.s.o=true ;;
6263df1173Spetede		*)   usage ;;
6363df1173Spetede	esac
641fe69678Skupfer}
657c478bd9Sstevel@tonic-gate
6663df1173Spetedetypeset -r USAGE=$'+
6763df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n]
6863df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>]
6963df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net
7063df1173Spetede    consolidation builds]
7163df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for
7263df1173Spetede    doing interactive and incremental builds in a workspace
7363df1173Spetede    already built with nightly(1). bldenv spawns a shell set up
7463df1173Spetede    with the same environment variables taken from an env_file,
7563df1173Spetede    as prepared for use with nightly(1).]
7663df1173Spetede[+?In addition to running a shell for interactive use, bldenv
7763df1173Spetede    can optionally run a single command in the given environment,
7863df1173Spetede    in the vein of sh -c or su -c. This is useful for
7963df1173Spetede    scripting, when an interactive shell would not be. If the
8063df1173Spetede    command is composed of multiple shell words or contains
8163df1173Spetede    other shell metacharacters, it must be quoted appropriately.]
8263df1173Spetede[+?bldenv is particularly useful for testing Makefile targets
8363df1173Spetede    like clobber, install and _msg, which otherwise require digging
8463df1173Spetede    through large build logs to figure out what is being
8563df1173Spetede    done.]
8663df1173Spetede[+?bldenv is also useful if you run into build issues with the
8763df1173Spetede    source product or when generating OpenSolaris deliverables.
8863df1173Spetede    If a source product build is flagged, the environment is set
8963df1173Spetede    up for building the indicated source product tree, which is
9063df1173Spetede    assumed to have already been created. If the OpenSolaris
9163df1173Spetede    deliverables flag (-O) is set in NIGHTLY_OPTIONS, the
9263df1173Spetede    environment is set up for building just the open source.
9363df1173Spetede    This includes using an alternate proto area, as well as
9463df1173Spetede    using the closed binaries in $CODEMGR_WS/closed.skel (which
9563df1173Spetede    is assumed to already exist).]
9663df1173Spetede[+?By default, bldenv will invoke the shell specified in
9763df1173Spetede    $SHELL. If $SHELL is not set or is invalid, csh will be
9863df1173Spetede    used.]
9963df1173Spetede[c?force the use of csh, regardless of the  value  of $SHELL.]
10063df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid
10163df1173Spetede    only if $SHELL is unset or if it points to csh.]
10263df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)]
10363df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the
10463df1173Spetede    default, use +t to use the tools from /opt/onbld)]
10563df1173Spetede[S]:[option?Build a variant of the source product.
10663df1173SpetedeThe value of \aoption\a must be one of the following:]{
10763df1173Spetede       [+E?build the exportable source variant of the source product.]
10863df1173Spetede       [+D?build the domestic  source  (exportable + crypt) variant of
10963df1173Spetede           the source product.]
11063df1173Spetede       [+H?build hybrid source (binaries + deleted source).]
11163df1173Spetede       [+O?simulate an OpenSolaris (open source only) build.]
11263df1173Spetede}
11363df1173Spetede
11463df1173Spetede<env_file> [command]
11563df1173Spetede
11663df1173Spetede[+EXAMPLES]{
11763df1173Spetede    [+?Example 1: Interactive use]{
11863df1173Spetede        [+?Use bldenv to spawn a shell to perform  a  DEBUG  build  and
11963df1173Spetede            testing of the  Makefile  targets  clobber and install for
12063df1173Spetede            usr/src/cmd/true.]
12163df1173Spetede        [+\n% rlogin wopr-2 -l gk
12263df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env
12363df1173SpetedeBuild type   is  DEBUG
12463df1173SpetedeRELEASE      is  5.10
12563df1173SpetedeVERSION      is  wopr-2::on10-se::11/01/2001
12663df1173SpetedeRELEASE_DATE is  May 2004
12763df1173SpetedeThe top-level `setup\' target is available to build headers
12863df1173Spetedeand tools.
12963df1173SpetedeUsing /usr/bin/tcsh as shell.
13063df1173Spetede{root::wopr-2::49}
13163df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true
13263df1173Spetede{root::wopr-2::50} make
13363df1173Spetede{root::wopr-2::51} make clobber
13463df1173Spetede/usr/bin/rm -f true true.po
13563df1173Spetede{root::wopr-2::52} make
13663df1173Spetede/usr/bin/rm -f true
13763df1173Spetedecat true.sh > true
13863df1173Spetedechmod +x true
13963df1173Spetede{root::wopr-2::53} make install
14063df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true
14163df1173Spetede`install\' is up to date.]
14263df1173Spetede    }
14363df1173Spetede    [+?Example 2: Non-interactive use]{
14463df1173Spetede        [+?Invoke bldenv to create SUNWonbld with a single command:]
14563df1173Spetede        [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\']
14663df1173Spetede        }
14763df1173Spetede}
14863df1173Spetede[+SEE ALSO?\bnightly\b(1)]
14963df1173Spetede'
15063df1173Spetede
15163df1173Spetede# main
15263df1173Spetedebuiltin basename
15363df1173Spetede
15463df1173Spetede# boolean flags (true/false)
15563df1173Spetedetypeset flags=(
15663df1173Spetede	typeset c=false
15763df1173Spetede	typeset f=false
15863df1173Spetede	typeset d=false
15963df1173Spetede	typeset O=false
16063df1173Spetede	typeset o=false
16163df1173Spetede	typeset t=true
16263df1173Spetede	typeset s=(
16363df1173Spetede		typeset e=false
16463df1173Spetede		typeset h=false
16563df1173Spetede		typeset d=false
16663df1173Spetede		typeset o=false
16763df1173Spetede	)
16863df1173Spetede)
16963df1173Spetede
17063df1173Spetedetypeset progname="$(basename "${0}")"
17163df1173Spetede
1727c478bd9Sstevel@tonic-gateOPTIND=1
1737c478bd9Sstevel@tonic-gateSUFFIX="-nd"
17463df1173Spetede
17563df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do
17663df1173Spetede    case ${OPT} in
17763df1173Spetede	  c)	flags.c=true  ;;
17863df1173Spetede	  +c)	flags.c=false ;;
17963df1173Spetede	  f)	flags.f=true  ;;
18063df1173Spetede	  +f)	flags.f=false ;;
18163df1173Spetede	  d)	flags.d=true  SUFFIX=""    ;;
18263df1173Spetede	  +d)	flags.d=false SUFFIX="-nd" ;;
18363df1173Spetede	  t)	flags.t=true  ;;
18463df1173Spetede	  +t)	flags.t=false ;;
18563df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
18663df1173Spetede	  \?)	usage ;;
1877c478bd9Sstevel@tonic-gate    esac
1887c478bd9Sstevel@tonic-gatedone
18963df1173Spetedeshift $((OPTIND-1))
1907c478bd9Sstevel@tonic-gate
1917c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given
19263df1173Spetedeif (( $# < 1 )) ; then
19363df1173Spetede	usage
1947c478bd9Sstevel@tonic-gatefi
1957c478bd9Sstevel@tonic-gate
1967c478bd9Sstevel@tonic-gate# force locale to C
19763df1173Spetedeexport \
19863df1173Spetede	LC_COLLATE=C \
19963df1173Spetede	LC_CTYPE=C \
20063df1173Spetede	LC_MESSAGES=C \
20163df1173Spetede	LC_MONETARY=C \
20263df1173Spetede	LC_NUMERIC=C \
20363df1173Spetede	LC_TIME=C
2047c478bd9Sstevel@tonic-gate
2057c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build
20663df1173Spetedeunset \
20763df1173Spetede	LD_OPTIONS \
20863df1173Spetede        LD_LIBRARY_PATH \
20963df1173Spetede        LD_AUDIT \
21063df1173Spetede        LD_BIND_NOW \
21163df1173Spetede        LD_BREADTH \
21263df1173Spetede        LD_CONFIG \
21363df1173Spetede	LD_DEBUG \
21463df1173Spetede        LD_FLAGS \
21563df1173Spetede        LD_LIBRARY_PATH_64 \
21663df1173Spetede        LD_NOVERSION \
21763df1173Spetede        LD_ORIGIN \
21863df1173Spetede	LD_LOADFLTR \
21963df1173Spetede        LD_NOAUXFLTR \
22063df1173Spetede        LD_NOCONFIG \
22163df1173Spetede        LD_NODIRCONFIG \
22263df1173Spetede        LD_NOOBJALTER \
22363df1173Spetede	LD_PRELOAD \
22463df1173Spetede        LD_PROFILE \
22563df1173Spetede	CONFIG \
22663df1173Spetede	GROUP \
22763df1173Spetede	OWNER \
22863df1173Spetede	REMOTE \
22963df1173Spetede	ENV \
23063df1173Spetede	ARCH \
23163df1173Spetede	CLASSPATH
2327c478bd9Sstevel@tonic-gate
233*0756aa0bSGavin Maltby#
234*0756aa0bSGavin Maltby# Setup environment variables
235*0756aa0bSGavin Maltby#
236*0756aa0bSGavin Maltbyif [[ -f /etc/nightly.conf ]]; then
237*0756aa0bSGavin Maltby	source /etc/nightly.conf
238*0756aa0bSGavin Maltbyfi
239*0756aa0bSGavin Maltby
24063df1173Spetedeif [[ -f "$1" ]]; then
24163df1173Spetede	if [[ "$1" == */* ]]; then
24263df1173Spetede		source "$1"
2437c478bd9Sstevel@tonic-gate	else
24463df1173Spetede		source "./$1"
2457c478bd9Sstevel@tonic-gate	fi
2467c478bd9Sstevel@tonic-gateelse
24763df1173Spetede	if [[ -f "/opt/onbld/env/$1" ]]; then
24863df1173Spetede		source "/opt/onbld/env/$1"
2497c478bd9Sstevel@tonic-gate	else
25063df1173Spetede		printf \
25163df1173Spetede		    'Cannot find env file as either %s or /opt/onbld/env/%s\n' \
25263df1173Spetede		    "$1" "$1"
2537c478bd9Sstevel@tonic-gate		exit 1
2547c478bd9Sstevel@tonic-gate	fi
2557c478bd9Sstevel@tonic-gatefi
2567c478bd9Sstevel@tonic-gateshift
2577c478bd9Sstevel@tonic-gate
2581fe69678Skupfer# contents of stdenv.sh inserted after next line:
2591fe69678Skupfer# STDENV_START
2601fe69678Skupfer# STDENV_END
2617c478bd9Sstevel@tonic-gate
26263df1173Spetede#MACH=$(uname -p)
263fb9f9b97Skupfer
2647c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh
2657c478bd9Sstevel@tonic-gateOPTIND=1
26663df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}"
26763df1173Spetedewhile getopts '+AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS"
2687c478bd9Sstevel@tonic-gatedo
26963df1173Spetede	case "$FLAG" in
27063df1173Spetede	  O)	flags.O=true  ;;
27163df1173Spetede	  +O)	flags.O=false ;;
27263df1173Spetede	  o)	flags.o=true  ;;
27363df1173Spetede	  +o)	flags.o=false ;;
27463df1173Spetede	  t)	flags.t=true  ;;
27563df1173Spetede	  +t)	flags.t=false ;;
27663df1173Spetede	  S)	set_S_flag "$OPTARG" ;;
2777c478bd9Sstevel@tonic-gate	  *)	;;
2787c478bd9Sstevel@tonic-gate	esac
2797c478bd9Sstevel@tonic-gatedone
2807c478bd9Sstevel@tonic-gate
28163df1173Spetedeexport INTERNAL_RELEASE_BUILD=
28263df1173Spetede
28363df1173Spetedeprint 'Build type   is  \c'
28463df1173Spetedeif ${flags.d} ; then
28563df1173Spetede	print 'DEBUG'
2867c478bd9Sstevel@tonic-gate	unset RELEASE_BUILD
2877c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2887c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2897c478bd9Sstevel@tonic-gateelse
2907c478bd9Sstevel@tonic-gate	# default is a non-DEBUG build
29163df1173Spetede	print 'non-DEBUG'
29263df1173Spetede	export RELEASE_BUILD=
2937c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2947c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2957c478bd9Sstevel@tonic-gatefi
2967c478bd9Sstevel@tonic-gate
29763df1173Spetedeif ${flags.O} ; then
29863df1173Spetede	export MULTI_PROTO="yes"
29963df1173Spetede	if [[ "$CLOSED_IS_PRESENT" == "yes" ]]; then
30063df1173Spetede		print "CLOSED_IS_PRESENT is 'no' (because of '-O')"
3014e5b757fSkupfer	fi
3024e5b757fSkupfer	export CLOSED_IS_PRESENT=no
30363df1173Spetede	export ON_CLOSED_BINS="$CODEMGR_WS/closed.skel"
3044e5b757fSkupferfi
3054e5b757fSkupfer
3067c478bd9Sstevel@tonic-gate# update build-type variables
30763df1173SpetedeCPIODIR="${CPIODIR}${SUFFIX}"
30863df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}"
3097c478bd9Sstevel@tonic-gate
3107c478bd9Sstevel@tonic-gate# Append source version
31163df1173Spetedeif "${flags.s.e}" ; then
31263df1173Spetede        VERSION+=":EXPORT"
31363df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3147c478bd9Sstevel@tonic-gatefi
3157c478bd9Sstevel@tonic-gate
31663df1173Spetedeif "${flags.s.d}" ; then
31763df1173Spetede        VERSION+=":DOMESTIC"
31863df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3197c478bd9Sstevel@tonic-gatefi
3207c478bd9Sstevel@tonic-gate
32163df1173Spetedeif "${flags.s.h}" ; then
32263df1173Spetede        VERSION+=":HYBRID"
32363df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3247c478bd9Sstevel@tonic-gatefi
3257c478bd9Sstevel@tonic-gate
32663df1173Spetedeif "${flags.s.o}" ; then
32763df1173Spetede        VERSION+=":OPEN_ONLY"
32863df1173Spetede	SRC="${OPEN_SRCDIR}/usr/src"
3291fe69678Skupferfi
3301fe69678Skupfer
331cdf0c1d5Smjnelson#
332cdf0c1d5Smjnelson# Keep track of this now, before we manipulate $PATH
333cdf0c1d5Smjnelson#
334cdf0c1d5SmjnelsonWHICH_SCM=$(dirname $(whence $0))/which_scm
335cdf0c1d5Smjnelsonif [[ ! -x $WHICH_SCM ]]; then
336cdf0c1d5Smjnelson	WHICH_SCM=which_scm
337cdf0c1d5Smjnelsonfi
338cdf0c1d5Smjnelson$WHICH_SCM | read SCM_TYPE junk
339cdf0c1d5Smjnelson
340cdf0c1d5Smjnelson
3417c478bd9Sstevel@tonic-gate# 	Set PATH for a build
342b84bdc30SmeemPATH="/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:."
34363df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then
34463df1173Spetede	export PATH="${SUNWSPRO}/bin:$PATH"
3457c478bd9Sstevel@tonic-gatefi
3467c478bd9Sstevel@tonic-gate
34763df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then
34863df1173Spetede	if [[ -d $SRC/../closed ]]; then
34963df1173Spetede		export CLOSED_IS_PRESENT="yes"
3501fe69678Skupfer	else
35163df1173Spetede		export CLOSED_IS_PRESENT="no"
3521fe69678Skupfer	fi
3531fe69678Skupferfi
3541fe69678Skupfer
35563df1173SpetedeTOOLS="${SRC}/tools"
35663df1173SpetedeTOOLS_PROTO="${TOOLS}/proto"
3577c478bd9Sstevel@tonic-gate
35863df1173Spetedeif "${flags.t}" ; then
35963df1173Spetede	export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}"
3607c478bd9Sstevel@tonic-gate
36163df1173Spetede	export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs"
36263df1173Spetede	export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs"
36363df1173Spetede	export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets"
3647c478bd9Sstevel@tonic-gate
36563df1173Spetede	export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert"
36663df1173Spetede	export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge"
3677c478bd9Sstevel@tonic-gate
36863df1173Spetede	export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl"
36963df1173Spetede	export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod"
3707c478bd9Sstevel@tonic-gate
3717c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}"
3727c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}"
3737c478bd9Sstevel@tonic-gate	export PATH
3747c478bd9Sstevel@tonic-gatefi
3757c478bd9Sstevel@tonic-gate
376*0756aa0bSGavin Maltbyexport DMAKE_MODE=${DMAKE_MODE:-parallel}
37763df1173Spetede
37863df1173Spetedeif "${flags.o}" ; then
37963df1173Spetede	export CH=
38063df1173Spetedeelse
3817c478bd9Sstevel@tonic-gate	unset CH
3827c478bd9Sstevel@tonic-gatefi
3837c478bd9Sstevel@tonic-gatePOUND_SIGN="#"
3847c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s"
3857c478bd9Sstevel@tonic-gate
3867c478bd9Sstevel@tonic-gateTMPDIR="/tmp"
3877c478bd9Sstevel@tonic-gate
38863df1173Spetede# "o_FLAG" is used by "nightly.sh" and "makebfu.sh" (it may be useful to
38963df1173Spetede# rename this variable using a more descriptive name later)
39063df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')"
39163df1173Spetede
39263df1173Spetedeexport \
39363df1173Spetede	PATH TMPDIR \
39463df1173Spetede	POUND_SIGN \
39563df1173Spetede	DEF_STRIPFLAG
39663df1173Spetedeunset \
39763df1173Spetede	CFLAGS \
39863df1173Spetede	LD_LIBRARY_PATH
3997c478bd9Sstevel@tonic-gate
4007c478bd9Sstevel@tonic-gate# a la ws
4017c478bd9Sstevel@tonic-gateENVLDLIBS1=
4027c478bd9Sstevel@tonic-gateENVLDLIBS2=
4037c478bd9Sstevel@tonic-gateENVLDLIBS3=
4047c478bd9Sstevel@tonic-gateENVCPPFLAGS1=
4057c478bd9Sstevel@tonic-gateENVCPPFLAGS2=
4067c478bd9Sstevel@tonic-gateENVCPPFLAGS3=
4077c478bd9Sstevel@tonic-gateENVCPPFLAGS4=
4087c478bd9Sstevel@tonic-gatePARENT_ROOT=
4097c478bd9Sstevel@tonic-gate
41063df1173Spetede"${flags.O}" && export ROOT="$ROOT-open"
4114e5b757fSkupfer
41263df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then
41363df1173Spetede	printf \
41463df1173Spetede	    'WARNING: invalid value for MULTI_PROTO (%s);setting to "no".\n' \
41563df1173Spetede	    "$MULTI_PROTO"
41663df1173Spetede	export MULTI_PROTO="no"
4174e5b757fSkupferfi
4184e5b757fSkupfer
41963df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}"
4204e5b757fSkupfer
4217c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
4227c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include"
4237c478bd9Sstevel@tonic-gateMAKEFLAGS=e
4247c478bd9Sstevel@tonic-gate
42563df1173Spetedeexport \
42663df1173Spetede        ENVLDLIBS1 \
42763df1173Spetede        ENVLDLIBS2 \
42863df1173Spetede        ENVLDLIBS3 \
42963df1173Spetede	ENVCPPFLAGS1 \
43063df1173Spetede        ENVCPPFLAGS2 \
43163df1173Spetede        ENVCPPFLAGS3 \
43263df1173Spetede	ENVCPPFLAGS4 \
43363df1173Spetede        MAKEFLAGS \
434cdf0c1d5Smjnelson        PARENT_ROOT \
435cdf0c1d5Smjnelson	SCM_TYPE
4367c478bd9Sstevel@tonic-gate
43763df1173Spetedeprintf 'RELEASE      is %s\n'   "$RELEASE"
43863df1173Spetedeprintf 'VERSION      is %s\n'   "$VERSION"
43963df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE"
4407c478bd9Sstevel@tonic-gate
44163df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then
44263df1173Spetede	print "The top-level 'setup' target is available \c"
44363df1173Spetede	print "to build headers and tools."
44463df1173Spetede	print ""
4457c478bd9Sstevel@tonic-gate
44663df1173Spetedeelif "${flags.t}" ; then
44763df1173Spetede	printf \
44863df1173Spetede	    'The tools can be (re)built with the install target in %s.\n\n' \
44963df1173Spetede	    "${TOOLS}"
4507c478bd9Sstevel@tonic-gatefi
4517c478bd9Sstevel@tonic-gate
452*0756aa0bSGavin Maltby#
453*0756aa0bSGavin Maltby# place ourselves in a new task, respecting BUILD_PROJECT if set.
454*0756aa0bSGavin Maltby#
455*0756aa0bSGavin Maltby/usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT}
4567c478bd9Sstevel@tonic-gate
45763df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \
45863df1173Spetede    "$(basename "${SHELL}")" != "csh" ]]; then
4597c478bd9Sstevel@tonic-gate	# $SHELL is set, and it's not csh.
4607c478bd9Sstevel@tonic-gate
46163df1173Spetede	if "${flags.f}" ; then
46263df1173Spetede		print 'WARNING: -f is ignored when $SHELL is not csh'
4637c478bd9Sstevel@tonic-gate	fi
4647c478bd9Sstevel@tonic-gate
46563df1173Spetede	printf 'Using %s as shell.\n' "$SHELL"
46663df1173Spetede	exec "$SHELL" ${@:+-c "$@"}
4677c478bd9Sstevel@tonic-gate
46863df1173Spetedeelif "${flags.f}" ; then
46963df1173Spetede	print 'Using csh -f as shell.'
4707c478bd9Sstevel@tonic-gate	exec csh -f ${@:+-c "$@"}
4717c478bd9Sstevel@tonic-gate
4727c478bd9Sstevel@tonic-gateelse
47363df1173Spetede	print 'Using csh as shell.'
4747c478bd9Sstevel@tonic-gate	exec csh ${@:+-c "$@"}
4757c478bd9Sstevel@tonic-gatefi
47663df1173Spetede
47763df1173Spetede# not reached
478