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