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*b83ec4edSjmcp# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 257c478bd9Sstevel@tonic-gate# 267c478bd9Sstevel@tonic-gate# Uses supplied "env" file, based on /opt/onbld/etc/env, to set shell variables 277c478bd9Sstevel@tonic-gate# before spawning a shell for doing a release-style builds interactively 287c478bd9Sstevel@tonic-gate# and incrementally. 297c478bd9Sstevel@tonic-gate# 307c478bd9Sstevel@tonic-gate 3163df1173Spetedefunction usage 3263df1173Spetede{ 3363df1173Spetede OPTIND=0 3463df1173Spetede getopts -a "${progname}" "${USAGE}" OPT '-?' 3563df1173Spetede exit 2 3663df1173Spetede} 377c478bd9Sstevel@tonic-gate 3863df1173Spetedefunction is_source_build 3963df1173Spetede{ 4063df1173Spetede "${flags.s.e}" || "${flags.s.d}" || "${flags.s.h}" || "${flags.s.o}" 411fe69678Skupfer return $? 421fe69678Skupfer} 431fe69678Skupfer 441fe69678Skupfer# 451fe69678Skupfer# single function for setting -S flag and doing error checking. 461fe69678Skupfer# usage: set_S_flag <type> 471fe69678Skupfer# where <type> is the source build type ("E", "D", ...). 481fe69678Skupfer# 4963df1173Spetedefunction set_S_flag 5063df1173Spetede{ 511fe69678Skupfer if is_source_build; then 5263df1173Spetede print 'Can only build one source variant at a time.' 531fe69678Skupfer exit 1 541fe69678Skupfer fi 5563df1173Spetede 5663df1173Spetede case "$1" in 5763df1173Spetede "E") flags.s.e=true ;; 5863df1173Spetede "D") flags.s.d=true ;; 5963df1173Spetede "H") flags.s.h=true ;; 6063df1173Spetede "O") flags.s.o=true ;; 6163df1173Spetede *) usage ;; 6263df1173Spetede esac 631fe69678Skupfer} 647c478bd9Sstevel@tonic-gate 6563df1173Spetedetypeset -r USAGE=$'+ 6663df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n] 6763df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>] 6863df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net 6963df1173Spetede consolidation builds] 7063df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for 7163df1173Spetede doing interactive and incremental builds in a workspace 7263df1173Spetede already built with nightly(1). bldenv spawns a shell set up 7363df1173Spetede with the same environment variables taken from an env_file, 7463df1173Spetede as prepared for use with nightly(1).] 7563df1173Spetede[+?In addition to running a shell for interactive use, bldenv 7663df1173Spetede can optionally run a single command in the given environment, 7763df1173Spetede in the vein of sh -c or su -c. This is useful for 7863df1173Spetede scripting, when an interactive shell would not be. If the 7963df1173Spetede command is composed of multiple shell words or contains 8063df1173Spetede other shell metacharacters, it must be quoted appropriately.] 8163df1173Spetede[+?bldenv is particularly useful for testing Makefile targets 8263df1173Spetede like clobber, install and _msg, which otherwise require digging 8363df1173Spetede through large build logs to figure out what is being 8463df1173Spetede done.] 8563df1173Spetede[+?bldenv is also useful if you run into build issues with the 8663df1173Spetede source product or when generating OpenSolaris deliverables. 8763df1173Spetede If a source product build is flagged, the environment is set 8863df1173Spetede up for building the indicated source product tree, which is 8963df1173Spetede assumed to have already been created. If the OpenSolaris 9063df1173Spetede deliverables flag (-O) is set in NIGHTLY_OPTIONS, the 9163df1173Spetede environment is set up for building just the open source. 9263df1173Spetede This includes using an alternate proto area, as well as 9363df1173Spetede using the closed binaries in $CODEMGR_WS/closed.skel (which 9463df1173Spetede is assumed to already exist).] 9563df1173Spetede[+?By default, bldenv will invoke the shell specified in 9663df1173Spetede $SHELL. If $SHELL is not set or is invalid, csh will be 9763df1173Spetede used.] 9863df1173Spetede[c?force the use of csh, regardless of the value of $SHELL.] 9963df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid 10063df1173Spetede only if $SHELL is unset or if it points to csh.] 10163df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)] 10263df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the 10363df1173Spetede default, use +t to use the tools from /opt/onbld)] 10463df1173Spetede[S]:[option?Build a variant of the source product. 10563df1173SpetedeThe value of \aoption\a must be one of the following:]{ 10663df1173Spetede [+E?build the exportable source variant of the source product.] 10763df1173Spetede [+D?build the domestic source (exportable + crypt) variant of 10863df1173Spetede the source product.] 10963df1173Spetede [+H?build hybrid source (binaries + deleted source).] 11063df1173Spetede [+O?simulate an OpenSolaris (open source only) build.] 11163df1173Spetede} 11263df1173Spetede 11363df1173Spetede<env_file> [command] 11463df1173Spetede 11563df1173Spetede[+EXAMPLES]{ 11663df1173Spetede [+?Example 1: Interactive use]{ 11763df1173Spetede [+?Use bldenv to spawn a shell to perform a DEBUG build and 11863df1173Spetede testing of the Makefile targets clobber and install for 11963df1173Spetede usr/src/cmd/true.] 12063df1173Spetede [+\n% rlogin wopr-2 -l gk 12163df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env 12263df1173SpetedeBuild type is DEBUG 12363df1173SpetedeRELEASE is 5.10 12463df1173SpetedeVERSION is wopr-2::on10-se::11/01/2001 12563df1173SpetedeRELEASE_DATE is May 2004 12663df1173SpetedeThe top-level `setup\' target is available to build headers 12763df1173Spetedeand tools. 12863df1173SpetedeUsing /usr/bin/tcsh as shell. 12963df1173Spetede{root::wopr-2::49} 13063df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true 13163df1173Spetede{root::wopr-2::50} make 13263df1173Spetede{root::wopr-2::51} make clobber 13363df1173Spetede/usr/bin/rm -f true true.po 13463df1173Spetede{root::wopr-2::52} make 13563df1173Spetede/usr/bin/rm -f true 13663df1173Spetedecat true.sh > true 13763df1173Spetedechmod +x true 13863df1173Spetede{root::wopr-2::53} make install 13963df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true 14063df1173Spetede`install\' is up to date.] 14163df1173Spetede } 14263df1173Spetede [+?Example 2: Non-interactive use]{ 14363df1173Spetede [+?Invoke bldenv to create SUNWonbld with a single command:] 14463df1173Spetede [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\'] 14563df1173Spetede } 14663df1173Spetede} 14763df1173Spetede[+SEE ALSO?\bnightly\b(1)] 14863df1173Spetede' 14963df1173Spetede 15063df1173Spetede# main 15163df1173Spetedebuiltin basename 15263df1173Spetede 15363df1173Spetede# boolean flags (true/false) 15463df1173Spetedetypeset flags=( 15563df1173Spetede typeset c=false 15663df1173Spetede typeset f=false 15763df1173Spetede typeset d=false 15863df1173Spetede typeset O=false 15963df1173Spetede typeset o=false 16063df1173Spetede typeset t=true 16163df1173Spetede typeset s=( 16263df1173Spetede typeset e=false 16363df1173Spetede typeset h=false 16463df1173Spetede typeset d=false 16563df1173Spetede typeset o=false 16663df1173Spetede ) 16763df1173Spetede) 16863df1173Spetede 16963df1173Spetedetypeset progname="$(basename "${0}")" 17063df1173Spetede 1717c478bd9Sstevel@tonic-gateOPTIND=1 1727c478bd9Sstevel@tonic-gateSUFFIX="-nd" 17363df1173Spetede 17463df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do 17563df1173Spetede case ${OPT} in 17663df1173Spetede c) flags.c=true ;; 17763df1173Spetede +c) flags.c=false ;; 17863df1173Spetede f) flags.f=true ;; 17963df1173Spetede +f) flags.f=false ;; 18063df1173Spetede d) flags.d=true SUFFIX="" ;; 18163df1173Spetede +d) flags.d=false SUFFIX="-nd" ;; 18263df1173Spetede t) flags.t=true ;; 18363df1173Spetede +t) flags.t=false ;; 18463df1173Spetede S) set_S_flag "$OPTARG" ;; 18563df1173Spetede \?) usage ;; 1867c478bd9Sstevel@tonic-gate esac 1877c478bd9Sstevel@tonic-gatedone 18863df1173Spetedeshift $((OPTIND-1)) 1897c478bd9Sstevel@tonic-gate 1907c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given 19163df1173Spetedeif (( $# < 1 )) ; then 19263df1173Spetede usage 1937c478bd9Sstevel@tonic-gatefi 1947c478bd9Sstevel@tonic-gate 1957c478bd9Sstevel@tonic-gate# force locale to C 19663df1173Spetedeexport \ 19763df1173Spetede LC_COLLATE=C \ 19863df1173Spetede LC_CTYPE=C \ 19963df1173Spetede LC_MESSAGES=C \ 20063df1173Spetede LC_MONETARY=C \ 20163df1173Spetede LC_NUMERIC=C \ 20263df1173Spetede LC_TIME=C 2037c478bd9Sstevel@tonic-gate 2047c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build 20563df1173Spetedeunset \ 20663df1173Spetede LD_OPTIONS \ 20763df1173Spetede LD_LIBRARY_PATH \ 20863df1173Spetede LD_AUDIT \ 20963df1173Spetede LD_BIND_NOW \ 21063df1173Spetede LD_BREADTH \ 21163df1173Spetede LD_CONFIG \ 21263df1173Spetede LD_DEBUG \ 21363df1173Spetede LD_FLAGS \ 21463df1173Spetede LD_LIBRARY_PATH_64 \ 21563df1173Spetede LD_NOVERSION \ 21663df1173Spetede LD_ORIGIN \ 21763df1173Spetede LD_LOADFLTR \ 21863df1173Spetede LD_NOAUXFLTR \ 21963df1173Spetede LD_NOCONFIG \ 22063df1173Spetede LD_NODIRCONFIG \ 22163df1173Spetede LD_NOOBJALTER \ 22263df1173Spetede LD_PRELOAD \ 22363df1173Spetede LD_PROFILE \ 22463df1173Spetede CONFIG \ 22563df1173Spetede GROUP \ 22663df1173Spetede OWNER \ 22763df1173Spetede REMOTE \ 22863df1173Spetede ENV \ 22963df1173Spetede ARCH \ 23063df1173Spetede CLASSPATH 2317c478bd9Sstevel@tonic-gate 2320756aa0bSGavin Maltby# 2330756aa0bSGavin Maltby# Setup environment variables 2340756aa0bSGavin Maltby# 2350756aa0bSGavin Maltbyif [[ -f /etc/nightly.conf ]]; then 2360756aa0bSGavin Maltby source /etc/nightly.conf 2370756aa0bSGavin Maltbyfi 2380756aa0bSGavin Maltby 23963df1173Spetedeif [[ -f "$1" ]]; then 24063df1173Spetede if [[ "$1" == */* ]]; then 24163df1173Spetede source "$1" 2427c478bd9Sstevel@tonic-gate else 24363df1173Spetede source "./$1" 2447c478bd9Sstevel@tonic-gate fi 2457c478bd9Sstevel@tonic-gateelse 24663df1173Spetede if [[ -f "/opt/onbld/env/$1" ]]; then 24763df1173Spetede source "/opt/onbld/env/$1" 2487c478bd9Sstevel@tonic-gate else 24963df1173Spetede printf \ 25063df1173Spetede 'Cannot find env file as either %s or /opt/onbld/env/%s\n' \ 25163df1173Spetede "$1" "$1" 2527c478bd9Sstevel@tonic-gate exit 1 2537c478bd9Sstevel@tonic-gate fi 2547c478bd9Sstevel@tonic-gatefi 2557c478bd9Sstevel@tonic-gateshift 2567c478bd9Sstevel@tonic-gate 2571fe69678Skupfer# contents of stdenv.sh inserted after next line: 2581fe69678Skupfer# STDENV_START 2591fe69678Skupfer# STDENV_END 2607c478bd9Sstevel@tonic-gate 26163df1173Spetede#MACH=$(uname -p) 262fb9f9b97Skupfer 2637c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh 2647c478bd9Sstevel@tonic-gateOPTIND=1 26563df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}" 26611a78ea0SMark J. Nelsonwhile getopts '+0AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS" 2677c478bd9Sstevel@tonic-gatedo 26863df1173Spetede case "$FLAG" in 26963df1173Spetede O) flags.O=true ;; 27063df1173Spetede +O) flags.O=false ;; 27163df1173Spetede o) flags.o=true ;; 27263df1173Spetede +o) flags.o=false ;; 27363df1173Spetede t) flags.t=true ;; 27463df1173Spetede +t) flags.t=false ;; 27563df1173Spetede S) set_S_flag "$OPTARG" ;; 2767c478bd9Sstevel@tonic-gate *) ;; 2777c478bd9Sstevel@tonic-gate esac 2787c478bd9Sstevel@tonic-gatedone 2797c478bd9Sstevel@tonic-gate 28048bc00d6SjmcpPOUND_SIGN="#" 28148bc00d6Sjmcp# have we set RELEASE_DATE in our env file? 28248bc00d6Sjmcpif [ -z "$RELEASE_DATE" ]; then 28348bc00d6Sjmcp RELEASE_DATE=$(LC_ALL=C date +"%B %Y") 28448bc00d6Sjmcpfi 28548bc00d6SjmcpBUILD_DATE=$(LC_ALL=C date +%Y-%b-%d) 28648bc00d6SjmcpBASEWSDIR=$(basename $CODEMGR_WS) 28748bc00d6SjmcpDEV_CM="\"@(#)SunOS Internal Development: $LOGNAME $BUILD_DATE [$BASEWSDIR]\"" 28848bc00d6Sjmcpexport DEV_CM RELEASE_DATE POUND_SIGN 28948bc00d6Sjmcp 29063df1173Spetedeexport INTERNAL_RELEASE_BUILD= 29163df1173Spetede 29263df1173Spetedeprint 'Build type is \c' 29363df1173Spetedeif ${flags.d} ; then 29463df1173Spetede print 'DEBUG' 2957c478bd9Sstevel@tonic-gate unset RELEASE_BUILD 2967c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 2977c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 2987c478bd9Sstevel@tonic-gateelse 2997c478bd9Sstevel@tonic-gate # default is a non-DEBUG build 30063df1173Spetede print 'non-DEBUG' 30163df1173Spetede export RELEASE_BUILD= 3027c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 3037c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 3047c478bd9Sstevel@tonic-gatefi 3057c478bd9Sstevel@tonic-gate 306*b83ec4edSjmcp[[ "${flags.O}" ]] && export MULTI_PROTO="yes" 3074e5b757fSkupfer 3087c478bd9Sstevel@tonic-gate# update build-type variables 30963df1173SpetedeCPIODIR="${CPIODIR}${SUFFIX}" 31063df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}" 3117c478bd9Sstevel@tonic-gate 3127c478bd9Sstevel@tonic-gate# Append source version 31363df1173Spetedeif "${flags.s.e}" ; then 31463df1173Spetede VERSION+=":EXPORT" 31563df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3167c478bd9Sstevel@tonic-gatefi 3177c478bd9Sstevel@tonic-gate 31863df1173Spetedeif "${flags.s.d}" ; then 31963df1173Spetede VERSION+=":DOMESTIC" 32063df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3217c478bd9Sstevel@tonic-gatefi 3227c478bd9Sstevel@tonic-gate 32363df1173Spetedeif "${flags.s.h}" ; then 32463df1173Spetede VERSION+=":HYBRID" 32563df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3267c478bd9Sstevel@tonic-gatefi 3277c478bd9Sstevel@tonic-gate 32863df1173Spetedeif "${flags.s.o}" ; then 32963df1173Spetede VERSION+=":OPEN_ONLY" 33063df1173Spetede SRC="${OPEN_SRCDIR}/usr/src" 3311fe69678Skupferfi 3321fe69678Skupfer 333cdf0c1d5Smjnelson# 334cdf0c1d5Smjnelson# Keep track of this now, before we manipulate $PATH 335cdf0c1d5Smjnelson# 336cdf0c1d5SmjnelsonWHICH_SCM=$(dirname $(whence $0))/which_scm 337cdf0c1d5Smjnelsonif [[ ! -x $WHICH_SCM ]]; then 338cdf0c1d5Smjnelson WHICH_SCM=which_scm 339cdf0c1d5Smjnelsonfi 340cdf0c1d5Smjnelson$WHICH_SCM | read SCM_TYPE junk 341cdf0c1d5Smjnelson 342cdf0c1d5Smjnelson 3437c478bd9Sstevel@tonic-gate# Set PATH for a build 344b84bdc30SmeemPATH="/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:." 34563df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then 34663df1173Spetede export PATH="${SUNWSPRO}/bin:$PATH" 3477c478bd9Sstevel@tonic-gatefi 3487c478bd9Sstevel@tonic-gate 34963df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then 35063df1173Spetede if [[ -d $SRC/../closed ]]; then 35163df1173Spetede export CLOSED_IS_PRESENT="yes" 3521fe69678Skupfer else 35363df1173Spetede export CLOSED_IS_PRESENT="no" 3541fe69678Skupfer fi 3551fe69678Skupferfi 3561fe69678Skupfer 35763df1173SpetedeTOOLS="${SRC}/tools" 358ead1f93eSLiane PrazaTOOLS_PROTO="${TOOLS}/proto/root_${MACH}-nd" ; export TOOLS_PROTO 3597c478bd9Sstevel@tonic-gate 36063df1173Spetedeif "${flags.t}" ; then 36163df1173Spetede export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}" 3627c478bd9Sstevel@tonic-gate 36363df1173Spetede export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs" 36463df1173Spetede export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs" 36563df1173Spetede export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets" 3667c478bd9Sstevel@tonic-gate 36763df1173Spetede export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert" 36863df1173Spetede export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge" 3697c478bd9Sstevel@tonic-gate 37063df1173Spetede export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl" 37163df1173Spetede export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod" 3727c478bd9Sstevel@tonic-gate 3737c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}" 3747c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}" 3757c478bd9Sstevel@tonic-gate export PATH 3767c478bd9Sstevel@tonic-gatefi 3777c478bd9Sstevel@tonic-gate 3780756aa0bSGavin Maltbyexport DMAKE_MODE=${DMAKE_MODE:-parallel} 37963df1173Spetede 38063df1173Spetedeif "${flags.o}" ; then 38163df1173Spetede export CH= 38263df1173Spetedeelse 3837c478bd9Sstevel@tonic-gate unset CH 3847c478bd9Sstevel@tonic-gatefi 3857c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s" 3867c478bd9Sstevel@tonic-gate 3877c478bd9Sstevel@tonic-gateTMPDIR="/tmp" 3887c478bd9Sstevel@tonic-gate 38963df1173Spetede# "o_FLAG" is used by "nightly.sh" and "makebfu.sh" (it may be useful to 39063df1173Spetede# rename this variable using a more descriptive name later) 39163df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')" 39263df1173Spetede 39363df1173Spetedeexport \ 39463df1173Spetede PATH TMPDIR \ 39563df1173Spetede POUND_SIGN \ 39648bc00d6Sjmcp DEF_STRIPFLAG \ 39748bc00d6Sjmcp RELEASE_DATE 39863df1173Spetedeunset \ 39963df1173Spetede CFLAGS \ 40063df1173Spetede LD_LIBRARY_PATH 4017c478bd9Sstevel@tonic-gate 4027c478bd9Sstevel@tonic-gate# a la ws 4037c478bd9Sstevel@tonic-gateENVLDLIBS1= 4047c478bd9Sstevel@tonic-gateENVLDLIBS2= 4057c478bd9Sstevel@tonic-gateENVLDLIBS3= 4067c478bd9Sstevel@tonic-gateENVCPPFLAGS1= 4077c478bd9Sstevel@tonic-gateENVCPPFLAGS2= 4087c478bd9Sstevel@tonic-gateENVCPPFLAGS3= 4097c478bd9Sstevel@tonic-gateENVCPPFLAGS4= 4107c478bd9Sstevel@tonic-gatePARENT_ROOT= 411ead1f93eSLiane PrazaPARENT_TOOLS_ROOT= 4127c478bd9Sstevel@tonic-gate 41363df1173Spetedeif [[ "$MULTI_PROTO" != "yes" && "$MULTI_PROTO" != "no" ]]; then 41463df1173Spetede printf \ 41563df1173Spetede 'WARNING: invalid value for MULTI_PROTO (%s); setting to "no".\n' \ 41663df1173Spetede "$MULTI_PROTO" 41763df1173Spetede export MULTI_PROTO="no" 4184e5b757fSkupferfi 4194e5b757fSkupfer 42063df1173Spetede[[ "$MULTI_PROTO" == "yes" ]] && export ROOT="${ROOT}${SUFFIX}" 4214e5b757fSkupfer 422*b83ec4edSjmcpexport TONICBUILD="#" 423*b83ec4edSjmcp 424*b83ec4edSjmcpif "${flags.O}" ; then 425*b83ec4edSjmcp if [[ "$CLOSED_IS_PRESENT" != "yes" ]]; then 426*b83ec4edSjmcp print "OpenSolaris closed binary generation requires " 427*b83ec4edSjmcp print "closed tree" 428*b83ec4edSjmcp exit 1 429*b83ec4edSjmcp fi 430*b83ec4edSjmcp print "Generating OpenSolaris deliverables" 431*b83ec4edSjmcp # We only need CLOSEDROOT in the env for convenience. Makefile.master 432*b83ec4edSjmcp # figures out what it needs when it matters. 433*b83ec4edSjmcp export CLOSEDROOT="${ROOT}-closed" 434*b83ec4edSjmcp export TONICBUILD="" 435*b83ec4edSjmcpfi 436*b83ec4edSjmcp 4377c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib" 4387c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include" 4397c478bd9Sstevel@tonic-gateMAKEFLAGS=e 4407c478bd9Sstevel@tonic-gate 44163df1173Spetedeexport \ 44263df1173Spetede ENVLDLIBS1 \ 44363df1173Spetede ENVLDLIBS2 \ 44463df1173Spetede ENVLDLIBS3 \ 44563df1173Spetede ENVCPPFLAGS1 \ 44663df1173Spetede ENVCPPFLAGS2 \ 44763df1173Spetede ENVCPPFLAGS3 \ 44863df1173Spetede ENVCPPFLAGS4 \ 44963df1173Spetede MAKEFLAGS \ 450cdf0c1d5Smjnelson PARENT_ROOT \ 451ead1f93eSLiane Praza PARENT_TOOLS_ROOT \ 452cdf0c1d5Smjnelson SCM_TYPE 4537c478bd9Sstevel@tonic-gate 45463df1173Spetedeprintf 'RELEASE is %s\n' "$RELEASE" 45563df1173Spetedeprintf 'VERSION is %s\n' "$VERSION" 45663df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE" 4577c478bd9Sstevel@tonic-gate 45863df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then 45963df1173Spetede print "The top-level 'setup' target is available \c" 46063df1173Spetede print "to build headers and tools." 46163df1173Spetede print "" 4627c478bd9Sstevel@tonic-gate 46363df1173Spetedeelif "${flags.t}" ; then 46463df1173Spetede printf \ 46563df1173Spetede 'The tools can be (re)built with the install target in %s.\n\n' \ 46663df1173Spetede "${TOOLS}" 4677c478bd9Sstevel@tonic-gatefi 4687c478bd9Sstevel@tonic-gate 4690756aa0bSGavin Maltby# 4700756aa0bSGavin Maltby# place ourselves in a new task, respecting BUILD_PROJECT if set. 4710756aa0bSGavin Maltby# 4720756aa0bSGavin Maltby/usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT} 4737c478bd9Sstevel@tonic-gate 47463df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \ 47563df1173Spetede "$(basename "${SHELL}")" != "csh" ]]; then 4767c478bd9Sstevel@tonic-gate # $SHELL is set, and it's not csh. 4777c478bd9Sstevel@tonic-gate 47863df1173Spetede if "${flags.f}" ; then 47963df1173Spetede print 'WARNING: -f is ignored when $SHELL is not csh' 4807c478bd9Sstevel@tonic-gate fi 4817c478bd9Sstevel@tonic-gate 48263df1173Spetede printf 'Using %s as shell.\n' "$SHELL" 48363df1173Spetede exec "$SHELL" ${@:+-c "$@"} 4847c478bd9Sstevel@tonic-gate 48563df1173Spetedeelif "${flags.f}" ; then 48663df1173Spetede print 'Using csh -f as shell.' 4877c478bd9Sstevel@tonic-gate exec csh -f ${@:+-c "$@"} 4887c478bd9Sstevel@tonic-gate 4897c478bd9Sstevel@tonic-gateelse 49063df1173Spetede print 'Using csh as shell.' 4917c478bd9Sstevel@tonic-gate exec csh ${@:+-c "$@"} 4927c478bd9Sstevel@tonic-gatefi 49363df1173Spetede 49463df1173Spetede# not reached 495