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