xref: /titanic_50/usr/src/tools/scripts/bldenv.sh (revision 48bc00d6814e04ff3edb32cafe7d1bc580baff68)
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#
240756aa0bSGavin 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
2330756aa0bSGavin Maltby#
2340756aa0bSGavin Maltby# Setup environment variables
2350756aa0bSGavin Maltby#
2360756aa0bSGavin Maltbyif [[ -f /etc/nightly.conf ]]; then
2370756aa0bSGavin Maltby	source /etc/nightly.conf
2380756aa0bSGavin Maltbyfi
2390756aa0bSGavin 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#-}"
26711a78ea0SMark J. Nelsonwhile getopts '+0AaBCDdFfGIilMmNnOopRrS: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
281*48bc00d6SjmcpPOUND_SIGN="#"
282*48bc00d6Sjmcp# have we set RELEASE_DATE in our env file?
283*48bc00d6Sjmcpif [ -z "$RELEASE_DATE" ]; then
284*48bc00d6Sjmcp	RELEASE_DATE=$(LC_ALL=C date +"%B %Y")
285*48bc00d6Sjmcpfi
286*48bc00d6SjmcpBUILD_DATE=$(LC_ALL=C date +%Y-%b-%d)
287*48bc00d6SjmcpBASEWSDIR=$(basename $CODEMGR_WS)
288*48bc00d6SjmcpDEV_CM="\"@(#)SunOS Internal Development: $LOGNAME $BUILD_DATE [$BASEWSDIR]\""
289*48bc00d6Sjmcpexport DEV_CM RELEASE_DATE POUND_SIGN
290*48bc00d6Sjmcp
29163df1173Spetedeexport INTERNAL_RELEASE_BUILD=
29263df1173Spetede
29363df1173Spetedeprint 'Build type   is  \c'
29463df1173Spetedeif ${flags.d} ; then
29563df1173Spetede	print 'DEBUG'
2967c478bd9Sstevel@tonic-gate	unset RELEASE_BUILD
2977c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
2987c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
2997c478bd9Sstevel@tonic-gateelse
3007c478bd9Sstevel@tonic-gate	# default is a non-DEBUG build
30163df1173Spetede	print 'non-DEBUG'
30263df1173Spetede	export RELEASE_BUILD=
3037c478bd9Sstevel@tonic-gate	unset EXTRA_OPTIONS
3047c478bd9Sstevel@tonic-gate	unset EXTRA_CFLAGS
3057c478bd9Sstevel@tonic-gatefi
3067c478bd9Sstevel@tonic-gate
30763df1173Spetedeif ${flags.O} ; then
30863df1173Spetede	export MULTI_PROTO="yes"
30963df1173Spetede	if [[ "$CLOSED_IS_PRESENT" == "yes" ]]; then
31063df1173Spetede		print "CLOSED_IS_PRESENT is 'no' (because of '-O')"
3114e5b757fSkupfer	fi
3124e5b757fSkupfer	export CLOSED_IS_PRESENT=no
31363df1173Spetede	export ON_CLOSED_BINS="$CODEMGR_WS/closed.skel"
3144e5b757fSkupferfi
3154e5b757fSkupfer
3167c478bd9Sstevel@tonic-gate# update build-type variables
31763df1173SpetedeCPIODIR="${CPIODIR}${SUFFIX}"
31863df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}"
3197c478bd9Sstevel@tonic-gate
3207c478bd9Sstevel@tonic-gate# Append source version
32163df1173Spetedeif "${flags.s.e}" ; then
32263df1173Spetede        VERSION+=":EXPORT"
32363df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3247c478bd9Sstevel@tonic-gatefi
3257c478bd9Sstevel@tonic-gate
32663df1173Spetedeif "${flags.s.d}" ; then
32763df1173Spetede        VERSION+=":DOMESTIC"
32863df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3297c478bd9Sstevel@tonic-gatefi
3307c478bd9Sstevel@tonic-gate
33163df1173Spetedeif "${flags.s.h}" ; then
33263df1173Spetede        VERSION+=":HYBRID"
33363df1173Spetede	SRC="${EXPORT_SRC}/usr/src"
3347c478bd9Sstevel@tonic-gatefi
3357c478bd9Sstevel@tonic-gate
33663df1173Spetedeif "${flags.s.o}" ; then
33763df1173Spetede        VERSION+=":OPEN_ONLY"
33863df1173Spetede	SRC="${OPEN_SRCDIR}/usr/src"
3391fe69678Skupferfi
3401fe69678Skupfer
341cdf0c1d5Smjnelson#
342cdf0c1d5Smjnelson# Keep track of this now, before we manipulate $PATH
343cdf0c1d5Smjnelson#
344cdf0c1d5SmjnelsonWHICH_SCM=$(dirname $(whence $0))/which_scm
345cdf0c1d5Smjnelsonif [[ ! -x $WHICH_SCM ]]; then
346cdf0c1d5Smjnelson	WHICH_SCM=which_scm
347cdf0c1d5Smjnelsonfi
348cdf0c1d5Smjnelson$WHICH_SCM | read SCM_TYPE junk
349cdf0c1d5Smjnelson
350cdf0c1d5Smjnelson
3517c478bd9Sstevel@tonic-gate# 	Set PATH for a build
352b84bdc30SmeemPATH="/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:."
35363df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then
35463df1173Spetede	export PATH="${SUNWSPRO}/bin:$PATH"
3557c478bd9Sstevel@tonic-gatefi
3567c478bd9Sstevel@tonic-gate
35763df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then
35863df1173Spetede	if [[ -d $SRC/../closed ]]; then
35963df1173Spetede		export CLOSED_IS_PRESENT="yes"
3601fe69678Skupfer	else
36163df1173Spetede		export CLOSED_IS_PRESENT="no"
3621fe69678Skupfer	fi
3631fe69678Skupferfi
3641fe69678Skupfer
36563df1173SpetedeTOOLS="${SRC}/tools"
36663df1173SpetedeTOOLS_PROTO="${TOOLS}/proto"
3677c478bd9Sstevel@tonic-gate
36863df1173Spetedeif "${flags.t}" ; then
36963df1173Spetede	export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}"
3707c478bd9Sstevel@tonic-gate
37163df1173Spetede	export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs"
37263df1173Spetede	export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs"
37363df1173Spetede	export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets"
3747c478bd9Sstevel@tonic-gate
37563df1173Spetede	export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert"
37663df1173Spetede	export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge"
3777c478bd9Sstevel@tonic-gate
37863df1173Spetede	export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl"
37963df1173Spetede	export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod"
3807c478bd9Sstevel@tonic-gate
3817c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}"
3827c478bd9Sstevel@tonic-gate	PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}"
3837c478bd9Sstevel@tonic-gate	export PATH
3847c478bd9Sstevel@tonic-gatefi
3857c478bd9Sstevel@tonic-gate
3860756aa0bSGavin Maltbyexport DMAKE_MODE=${DMAKE_MODE:-parallel}
38763df1173Spetede
38863df1173Spetedeif "${flags.o}" ; then
38963df1173Spetede	export CH=
39063df1173Spetedeelse
3917c478bd9Sstevel@tonic-gate	unset CH
3927c478bd9Sstevel@tonic-gatefi
3937c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s"
3947c478bd9Sstevel@tonic-gate
3957c478bd9Sstevel@tonic-gateTMPDIR="/tmp"
3967c478bd9Sstevel@tonic-gate
39763df1173Spetede# "o_FLAG" is used by "nightly.sh" and "makebfu.sh" (it may be useful to
39863df1173Spetede# rename this variable using a more descriptive name later)
39963df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')"
40063df1173Spetede
40163df1173Spetedeexport \
40263df1173Spetede	PATH TMPDIR \
40363df1173Spetede	POUND_SIGN \
404*48bc00d6Sjmcp	DEF_STRIPFLAG \
405*48bc00d6Sjmcp	RELEASE_DATE
40663df1173Spetedeunset \
40763df1173Spetede	CFLAGS \
40863df1173Spetede	LD_LIBRARY_PATH
4097c478bd9Sstevel@tonic-gate
4107c478bd9Sstevel@tonic-gate# a la ws
4117c478bd9Sstevel@tonic-gateENVLDLIBS1=
4127c478bd9Sstevel@tonic-gateENVLDLIBS2=
4137c478bd9Sstevel@tonic-gateENVLDLIBS3=
4147c478bd9Sstevel@tonic-gateENVCPPFLAGS1=
4157c478bd9Sstevel@tonic-gateENVCPPFLAGS2=
4167c478bd9Sstevel@tonic-gateENVCPPFLAGS3=
4177c478bd9Sstevel@tonic-gateENVCPPFLAGS4=
4187c478bd9Sstevel@tonic-gatePARENT_ROOT=
4197c478bd9Sstevel@tonic-gate
42063df1173Spetede"${flags.O}" && export ROOT="$ROOT-open"
4214e5b757fSkupfer
42263df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then
42363df1173Spetede	printf \
42463df1173Spetede	    'WARNING: invalid value for MULTI_PROTO (%s);setting to "no".\n' \
42563df1173Spetede	    "$MULTI_PROTO"
42663df1173Spetede	export MULTI_PROTO="no"
4274e5b757fSkupferfi
4284e5b757fSkupfer
42963df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}"
4304e5b757fSkupfer
4317c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib"
4327c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include"
4337c478bd9Sstevel@tonic-gateMAKEFLAGS=e
4347c478bd9Sstevel@tonic-gate
43563df1173Spetedeexport \
43663df1173Spetede        ENVLDLIBS1 \
43763df1173Spetede        ENVLDLIBS2 \
43863df1173Spetede        ENVLDLIBS3 \
43963df1173Spetede	ENVCPPFLAGS1 \
44063df1173Spetede        ENVCPPFLAGS2 \
44163df1173Spetede        ENVCPPFLAGS3 \
44263df1173Spetede	ENVCPPFLAGS4 \
44363df1173Spetede        MAKEFLAGS \
444cdf0c1d5Smjnelson        PARENT_ROOT \
445cdf0c1d5Smjnelson	SCM_TYPE
4467c478bd9Sstevel@tonic-gate
44763df1173Spetedeprintf 'RELEASE      is %s\n'   "$RELEASE"
44863df1173Spetedeprintf 'VERSION      is %s\n'   "$VERSION"
44963df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE"
4507c478bd9Sstevel@tonic-gate
45163df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then
45263df1173Spetede	print "The top-level 'setup' target is available \c"
45363df1173Spetede	print "to build headers and tools."
45463df1173Spetede	print ""
4557c478bd9Sstevel@tonic-gate
45663df1173Spetedeelif "${flags.t}" ; then
45763df1173Spetede	printf \
45863df1173Spetede	    'The tools can be (re)built with the install target in %s.\n\n' \
45963df1173Spetede	    "${TOOLS}"
4607c478bd9Sstevel@tonic-gatefi
4617c478bd9Sstevel@tonic-gate
4620756aa0bSGavin Maltby#
4630756aa0bSGavin Maltby# place ourselves in a new task, respecting BUILD_PROJECT if set.
4640756aa0bSGavin Maltby#
4650756aa0bSGavin Maltby/usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT}
4667c478bd9Sstevel@tonic-gate
46763df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \
46863df1173Spetede    "$(basename "${SHELL}")" != "csh" ]]; then
4697c478bd9Sstevel@tonic-gate	# $SHELL is set, and it's not csh.
4707c478bd9Sstevel@tonic-gate
47163df1173Spetede	if "${flags.f}" ; then
47263df1173Spetede		print 'WARNING: -f is ignored when $SHELL is not csh'
4737c478bd9Sstevel@tonic-gate	fi
4747c478bd9Sstevel@tonic-gate
47563df1173Spetede	printf 'Using %s as shell.\n' "$SHELL"
47663df1173Spetede	exec "$SHELL" ${@:+-c "$@"}
4777c478bd9Sstevel@tonic-gate
47863df1173Spetedeelif "${flags.f}" ; then
47963df1173Spetede	print 'Using csh -f as shell.'
4807c478bd9Sstevel@tonic-gate	exec csh -f ${@:+-c "$@"}
4817c478bd9Sstevel@tonic-gate
4827c478bd9Sstevel@tonic-gateelse
48363df1173Spetede	print 'Using csh as shell.'
4847c478bd9Sstevel@tonic-gate	exec csh ${@:+-c "$@"}
4857c478bd9Sstevel@tonic-gatefi
48663df1173Spetede
48763df1173Spetede# not reached
488