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# 24b83ec4edSjmcp# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 25d7693b08SRoland Mainz# Copyright 2011 Nexenta Systems, Inc. All rights reserved. 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 32d7693b08SRoland Mainzfunction fatal_error 33d7693b08SRoland Mainz{ 34d7693b08SRoland Mainz print -u2 "${progname}: $*" 35d7693b08SRoland Mainz exit 1 36d7693b08SRoland Mainz} 37d7693b08SRoland Mainz 3863df1173Spetedefunction usage 3963df1173Spetede{ 4063df1173Spetede OPTIND=0 4163df1173Spetede getopts -a "${progname}" "${USAGE}" OPT '-?' 4263df1173Spetede exit 2 4363df1173Spetede} 447c478bd9Sstevel@tonic-gate 4563df1173Spetedefunction is_source_build 4663df1173Spetede{ 4763df1173Spetede "${flags.s.e}" || "${flags.s.d}" || "${flags.s.h}" || "${flags.s.o}" 481fe69678Skupfer return $? 491fe69678Skupfer} 501fe69678Skupfer 511fe69678Skupfer# 521fe69678Skupfer# single function for setting -S flag and doing error checking. 531fe69678Skupfer# usage: set_S_flag <type> 541fe69678Skupfer# where <type> is the source build type ("E", "D", ...). 551fe69678Skupfer# 5663df1173Spetedefunction set_S_flag 5763df1173Spetede{ 581fe69678Skupfer if is_source_build; then 5963df1173Spetede print 'Can only build one source variant at a time.' 601fe69678Skupfer exit 1 611fe69678Skupfer fi 6263df1173Spetede 6363df1173Spetede case "$1" in 6463df1173Spetede "E") flags.s.e=true ;; 6563df1173Spetede "D") flags.s.d=true ;; 6663df1173Spetede "H") flags.s.h=true ;; 6763df1173Spetede "O") flags.s.o=true ;; 6863df1173Spetede *) usage ;; 6963df1173Spetede esac 701fe69678Skupfer} 717c478bd9Sstevel@tonic-gate 7263df1173Spetedetypeset -r USAGE=$'+ 7363df1173Spetede[-?\n@(#)\$Id: bldenv (OS/Net) 2008-04-06 \$\n] 7463df1173Spetede[-author?OS/Net community <tools-discuss@opensolaris.org>] 7563df1173Spetede[+NAME?bldenv - spawn shell for interactive incremental OS-Net 7663df1173Spetede consolidation builds] 7763df1173Spetede[+DESCRIPTION?bldenv is a useful companion to the nightly(1) script for 7863df1173Spetede doing interactive and incremental builds in a workspace 7963df1173Spetede already built with nightly(1). bldenv spawns a shell set up 8063df1173Spetede with the same environment variables taken from an env_file, 8163df1173Spetede as prepared for use with nightly(1).] 8263df1173Spetede[+?In addition to running a shell for interactive use, bldenv 8363df1173Spetede can optionally run a single command in the given environment, 8463df1173Spetede in the vein of sh -c or su -c. This is useful for 8563df1173Spetede scripting, when an interactive shell would not be. If the 8663df1173Spetede command is composed of multiple shell words or contains 8763df1173Spetede other shell metacharacters, it must be quoted appropriately.] 8863df1173Spetede[+?bldenv is particularly useful for testing Makefile targets 8963df1173Spetede like clobber, install and _msg, which otherwise require digging 9063df1173Spetede through large build logs to figure out what is being 9163df1173Spetede done.] 9263df1173Spetede[+?bldenv is also useful if you run into build issues with the 9363df1173Spetede source product or when generating OpenSolaris deliverables. 9463df1173Spetede If a source product build is flagged, the environment is set 9563df1173Spetede up for building the indicated source product tree, which is 9663df1173Spetede assumed to have already been created. If the OpenSolaris 9763df1173Spetede deliverables flag (-O) is set in NIGHTLY_OPTIONS, the 9863df1173Spetede environment is set up for building just the open source. 9963df1173Spetede This includes using an alternate proto area, as well as 10063df1173Spetede using the closed binaries in $CODEMGR_WS/closed.skel (which 10163df1173Spetede is assumed to already exist).] 10263df1173Spetede[+?By default, bldenv will invoke the shell specified in 10363df1173Spetede $SHELL. If $SHELL is not set or is invalid, csh will be 10463df1173Spetede used.] 10563df1173Spetede[c?force the use of csh, regardless of the value of $SHELL.] 10663df1173Spetede[f?invoke csh with the -f (fast-start) option. This option is valid 10763df1173Spetede only if $SHELL is unset or if it points to csh.] 10863df1173Spetede[d?set up environment for doing DEBUG builds (default is non-DEBUG)] 10963df1173Spetede[t?set up environment to use the tools in usr/src/tools (this is the 11063df1173Spetede default, use +t to use the tools from /opt/onbld)] 11163df1173Spetede[S]:[option?Build a variant of the source product. 11263df1173SpetedeThe value of \aoption\a must be one of the following:]{ 11363df1173Spetede [+E?build the exportable source variant of the source product.] 11463df1173Spetede [+D?build the domestic source (exportable + crypt) variant of 11563df1173Spetede the source product.] 11663df1173Spetede [+H?build hybrid source (binaries + deleted source).] 11763df1173Spetede [+O?simulate an OpenSolaris (open source only) build.] 11863df1173Spetede} 11963df1173Spetede 12063df1173Spetede<env_file> [command] 12163df1173Spetede 12263df1173Spetede[+EXAMPLES]{ 12363df1173Spetede [+?Example 1: Interactive use]{ 12463df1173Spetede [+?Use bldenv to spawn a shell to perform a DEBUG build and 12563df1173Spetede testing of the Makefile targets clobber and install for 12663df1173Spetede usr/src/cmd/true.] 12763df1173Spetede [+\n% rlogin wopr-2 -l gk 12863df1173Spetede{root::wopr-2::49} bldenv -d /export0/jg/on10-se.env 12963df1173SpetedeBuild type is DEBUG 13063df1173SpetedeRELEASE is 5.10 13163df1173SpetedeVERSION is wopr-2::on10-se::11/01/2001 13263df1173SpetedeRELEASE_DATE is May 2004 13363df1173SpetedeThe top-level `setup\' target is available to build headers 13463df1173Spetedeand tools. 13563df1173SpetedeUsing /usr/bin/tcsh as shell. 13663df1173Spetede{root::wopr-2::49} 13763df1173Spetede{root::wopr-2::49} cd $SRC/cmd/true 13863df1173Spetede{root::wopr-2::50} make 13963df1173Spetede{root::wopr-2::51} make clobber 14063df1173Spetede/usr/bin/rm -f true true.po 14163df1173Spetede{root::wopr-2::52} make 14263df1173Spetede/usr/bin/rm -f true 14363df1173Spetedecat true.sh > true 14463df1173Spetedechmod +x true 14563df1173Spetede{root::wopr-2::53} make install 14663df1173Spetedeinstall -s -m 0555 -u root -g bin -f /export0/jg/on10-se/proto/root_sparc/usr/bin true 14763df1173Spetede`install\' is up to date.] 14863df1173Spetede } 14963df1173Spetede [+?Example 2: Non-interactive use]{ 15063df1173Spetede [+?Invoke bldenv to create SUNWonbld with a single command:] 15163df1173Spetede [+\nexample% bldenv onnv_06 \'cd $SRC/tools && make pkg\'] 15263df1173Spetede } 15363df1173Spetede} 15463df1173Spetede[+SEE ALSO?\bnightly\b(1)] 15563df1173Spetede' 15663df1173Spetede 15763df1173Spetede# main 15863df1173Spetedebuiltin basename 15963df1173Spetede 16063df1173Spetede# boolean flags (true/false) 16163df1173Spetedetypeset flags=( 16263df1173Spetede typeset c=false 16363df1173Spetede typeset f=false 16463df1173Spetede typeset d=false 16563df1173Spetede typeset O=false 16663df1173Spetede typeset o=false 16763df1173Spetede typeset t=true 16863df1173Spetede typeset s=( 16963df1173Spetede typeset e=false 17063df1173Spetede typeset h=false 17163df1173Spetede typeset d=false 17263df1173Spetede typeset o=false 17363df1173Spetede ) 17463df1173Spetede) 17563df1173Spetede 176d7693b08SRoland Mainztypeset progname="$(basename -- "${0}")" 17763df1173Spetede 1787c478bd9Sstevel@tonic-gateOPTIND=1 1797c478bd9Sstevel@tonic-gateSUFFIX="-nd" 18063df1173Spetede 18163df1173Spetedewhile getopts -a "${progname}" "${USAGE}" OPT ; do 18263df1173Spetede case ${OPT} in 18363df1173Spetede c) flags.c=true ;; 18463df1173Spetede +c) flags.c=false ;; 18563df1173Spetede f) flags.f=true ;; 18663df1173Spetede +f) flags.f=false ;; 18763df1173Spetede d) flags.d=true SUFFIX="" ;; 18863df1173Spetede +d) flags.d=false SUFFIX="-nd" ;; 18963df1173Spetede t) flags.t=true ;; 19063df1173Spetede +t) flags.t=false ;; 19163df1173Spetede S) set_S_flag "$OPTARG" ;; 19263df1173Spetede \?) usage ;; 1937c478bd9Sstevel@tonic-gate esac 1947c478bd9Sstevel@tonic-gatedone 19563df1173Spetedeshift $((OPTIND-1)) 1967c478bd9Sstevel@tonic-gate 1977c478bd9Sstevel@tonic-gate# test that the path to the environment-setting file was given 19863df1173Spetedeif (( $# < 1 )) ; then 19963df1173Spetede usage 2007c478bd9Sstevel@tonic-gatefi 2017c478bd9Sstevel@tonic-gate 2027c478bd9Sstevel@tonic-gate# force locale to C 20363df1173Spetedeexport \ 20463df1173Spetede LC_COLLATE=C \ 20563df1173Spetede LC_CTYPE=C \ 20663df1173Spetede LC_MESSAGES=C \ 20763df1173Spetede LC_MONETARY=C \ 20863df1173Spetede LC_NUMERIC=C \ 20963df1173Spetede LC_TIME=C 2107c478bd9Sstevel@tonic-gate 2117c478bd9Sstevel@tonic-gate# clear environment variables we know to be bad for the build 21263df1173Spetedeunset \ 21363df1173Spetede LD_OPTIONS \ 21463df1173Spetede LD_LIBRARY_PATH \ 21563df1173Spetede LD_AUDIT \ 21663df1173Spetede LD_BIND_NOW \ 21763df1173Spetede LD_BREADTH \ 21863df1173Spetede LD_CONFIG \ 21963df1173Spetede LD_DEBUG \ 22063df1173Spetede LD_FLAGS \ 22163df1173Spetede LD_LIBRARY_PATH_64 \ 22263df1173Spetede LD_NOVERSION \ 22363df1173Spetede LD_ORIGIN \ 22463df1173Spetede LD_LOADFLTR \ 22563df1173Spetede LD_NOAUXFLTR \ 22663df1173Spetede LD_NOCONFIG \ 22763df1173Spetede LD_NODIRCONFIG \ 22863df1173Spetede LD_NOOBJALTER \ 22963df1173Spetede LD_PRELOAD \ 23063df1173Spetede LD_PROFILE \ 23163df1173Spetede CONFIG \ 23263df1173Spetede GROUP \ 23363df1173Spetede OWNER \ 23463df1173Spetede REMOTE \ 23563df1173Spetede ENV \ 23663df1173Spetede ARCH \ 23763df1173Spetede CLASSPATH 2387c478bd9Sstevel@tonic-gate 2390756aa0bSGavin Maltby# 2400756aa0bSGavin Maltby# Setup environment variables 2410756aa0bSGavin Maltby# 2420756aa0bSGavin Maltbyif [[ -f /etc/nightly.conf ]]; then 2430756aa0bSGavin Maltby source /etc/nightly.conf 2440756aa0bSGavin Maltbyfi 2450756aa0bSGavin Maltby 24663df1173Spetedeif [[ -f "$1" ]]; then 24763df1173Spetede if [[ "$1" == */* ]]; then 24863df1173Spetede source "$1" 2497c478bd9Sstevel@tonic-gate else 25063df1173Spetede source "./$1" 2517c478bd9Sstevel@tonic-gate fi 2527c478bd9Sstevel@tonic-gateelse 25363df1173Spetede if [[ -f "/opt/onbld/env/$1" ]]; then 25463df1173Spetede source "/opt/onbld/env/$1" 2557c478bd9Sstevel@tonic-gate else 25663df1173Spetede printf \ 25763df1173Spetede 'Cannot find env file as either %s or /opt/onbld/env/%s\n' \ 25863df1173Spetede "$1" "$1" 2597c478bd9Sstevel@tonic-gate exit 1 2607c478bd9Sstevel@tonic-gate fi 2617c478bd9Sstevel@tonic-gatefi 2627c478bd9Sstevel@tonic-gateshift 2637c478bd9Sstevel@tonic-gate 2641fe69678Skupfer# contents of stdenv.sh inserted after next line: 2651fe69678Skupfer# STDENV_START 2661fe69678Skupfer# STDENV_END 2677c478bd9Sstevel@tonic-gate 268d7693b08SRoland Mainz# Check if we have sufficient data to continue... 269d7693b08SRoland Mainz[[ -v CODEMGR_WS ]] || fatal_error "Error: Variable CODEMGR_WS not set." 270d7693b08SRoland Mainz[[ -d "${CODEMGR_WS}" ]] || fatal_error "Error: ${CODEMGR_WS} is not a directory." 271d7693b08SRoland Mainz[[ -f "${CODEMGR_WS}/usr/src/Makefile" ]] || fatal_error "Error: ${CODEMGR_WS}/usr/src/Makefile not found." 272d7693b08SRoland Mainz 2737c478bd9Sstevel@tonic-gate# must match the getopts in nightly.sh 2747c478bd9Sstevel@tonic-gateOPTIND=1 27563df1173SpetedeNIGHTLY_OPTIONS="-${NIGHTLY_OPTIONS#-}" 27611a78ea0SMark J. Nelsonwhile getopts '+0AaBCDdFfGIilMmNnOopRrS:tUuWwXxz' FLAG "$NIGHTLY_OPTIONS" 2777c478bd9Sstevel@tonic-gatedo 27863df1173Spetede case "$FLAG" in 27963df1173Spetede O) flags.O=true ;; 28063df1173Spetede +O) flags.O=false ;; 28163df1173Spetede o) flags.o=true ;; 28263df1173Spetede +o) flags.o=false ;; 28363df1173Spetede t) flags.t=true ;; 28463df1173Spetede +t) flags.t=false ;; 28563df1173Spetede S) set_S_flag "$OPTARG" ;; 2867c478bd9Sstevel@tonic-gate *) ;; 2877c478bd9Sstevel@tonic-gate esac 2887c478bd9Sstevel@tonic-gatedone 2897c478bd9Sstevel@tonic-gate 29048bc00d6SjmcpPOUND_SIGN="#" 29148bc00d6Sjmcp# have we set RELEASE_DATE in our env file? 29248bc00d6Sjmcpif [ -z "$RELEASE_DATE" ]; then 29348bc00d6Sjmcp RELEASE_DATE=$(LC_ALL=C date +"%B %Y") 29448bc00d6Sjmcpfi 29548bc00d6SjmcpBUILD_DATE=$(LC_ALL=C date +%Y-%b-%d) 296d7693b08SRoland MainzBASEWSDIR=$(basename -- "${CODEMGR_WS}") 29748bc00d6SjmcpDEV_CM="\"@(#)SunOS Internal Development: $LOGNAME $BUILD_DATE [$BASEWSDIR]\"" 29848bc00d6Sjmcpexport DEV_CM RELEASE_DATE POUND_SIGN 29948bc00d6Sjmcp 30063df1173Spetedeexport INTERNAL_RELEASE_BUILD= 30163df1173Spetede 30263df1173Spetedeprint 'Build type is \c' 30363df1173Spetedeif ${flags.d} ; then 30463df1173Spetede print 'DEBUG' 3057c478bd9Sstevel@tonic-gate unset RELEASE_BUILD 3067c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 3077c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 3087c478bd9Sstevel@tonic-gateelse 3097c478bd9Sstevel@tonic-gate # default is a non-DEBUG build 31063df1173Spetede print 'non-DEBUG' 31163df1173Spetede export RELEASE_BUILD= 3127c478bd9Sstevel@tonic-gate unset EXTRA_OPTIONS 3137c478bd9Sstevel@tonic-gate unset EXTRA_CFLAGS 3147c478bd9Sstevel@tonic-gatefi 3157c478bd9Sstevel@tonic-gate 316*5c70f01eSRichard Lowe[[ "${flags.O}" == "true" ]] && export MULTI_PROTO="yes" 3174e5b757fSkupfer 3187c478bd9Sstevel@tonic-gate# update build-type variables 31963df1173SpetedePKGARCHIVE="${PKGARCHIVE}${SUFFIX}" 3207c478bd9Sstevel@tonic-gate 3217c478bd9Sstevel@tonic-gate# Append source version 32263df1173Spetedeif "${flags.s.e}" ; then 32363df1173Spetede VERSION+=":EXPORT" 32463df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3257c478bd9Sstevel@tonic-gatefi 3267c478bd9Sstevel@tonic-gate 32763df1173Spetedeif "${flags.s.d}" ; then 32863df1173Spetede VERSION+=":DOMESTIC" 32963df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3307c478bd9Sstevel@tonic-gatefi 3317c478bd9Sstevel@tonic-gate 33263df1173Spetedeif "${flags.s.h}" ; then 33363df1173Spetede VERSION+=":HYBRID" 33463df1173Spetede SRC="${EXPORT_SRC}/usr/src" 3357c478bd9Sstevel@tonic-gatefi 3367c478bd9Sstevel@tonic-gate 33763df1173Spetedeif "${flags.s.o}" ; then 33863df1173Spetede VERSION+=":OPEN_ONLY" 33963df1173Spetede SRC="${OPEN_SRCDIR}/usr/src" 3401fe69678Skupferfi 3411fe69678Skupfer 3427c478bd9Sstevel@tonic-gate# Set PATH for a build 343b84bdc30SmeemPATH="/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:." 34463df1173Spetedeif [[ "${SUNWSPRO}" != "" ]]; then 34563df1173Spetede export PATH="${SUNWSPRO}/bin:$PATH" 3467c478bd9Sstevel@tonic-gatefi 3477c478bd9Sstevel@tonic-gate 34863df1173Spetedeif [[ -z "$CLOSED_IS_PRESENT" ]]; then 34963df1173Spetede if [[ -d $SRC/../closed ]]; then 35063df1173Spetede export CLOSED_IS_PRESENT="yes" 3511fe69678Skupfer else 35263df1173Spetede export CLOSED_IS_PRESENT="no" 3531fe69678Skupfer fi 3541fe69678Skupferfi 3551fe69678Skupfer 35663df1173SpetedeTOOLS="${SRC}/tools" 357ead1f93eSLiane PrazaTOOLS_PROTO="${TOOLS}/proto/root_${MACH}-nd" ; export TOOLS_PROTO 3587c478bd9Sstevel@tonic-gate 35963df1173Spetedeif "${flags.t}" ; then 36063df1173Spetede export ONBLD_TOOLS="${ONBLD_TOOLS:=${TOOLS_PROTO}/opt/onbld}" 3617c478bd9Sstevel@tonic-gate 36263df1173Spetede export STABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/stabs" 36363df1173Spetede export CTFSTABS="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfstabs" 36463df1173Spetede export GENOFFSETS="${TOOLS_PROTO}/opt/onbld/bin/genoffsets" 3657c478bd9Sstevel@tonic-gate 36663df1173Spetede export CTFCONVERT="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfconvert" 36763df1173Spetede export CTFMERGE="${TOOLS_PROTO}/opt/onbld/bin/${MACH}/ctfmerge" 3687c478bd9Sstevel@tonic-gate 36963df1173Spetede export CTFCVTPTBL="${TOOLS_PROTO}/opt/onbld/bin/ctfcvtptbl" 37063df1173Spetede export CTFFINDMOD="${TOOLS_PROTO}/opt/onbld/bin/ctffindmod" 3717c478bd9Sstevel@tonic-gate 3727c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin/${MACH}:${PATH}" 3737c478bd9Sstevel@tonic-gate PATH="${TOOLS_PROTO}/opt/onbld/bin:${PATH}" 3747c478bd9Sstevel@tonic-gate export PATH 3757c478bd9Sstevel@tonic-gatefi 3767c478bd9Sstevel@tonic-gate 3770756aa0bSGavin Maltbyexport DMAKE_MODE=${DMAKE_MODE:-parallel} 37863df1173Spetede 37963df1173Spetedeif "${flags.o}" ; then 38063df1173Spetede export CH= 38163df1173Spetedeelse 3827c478bd9Sstevel@tonic-gate unset CH 3837c478bd9Sstevel@tonic-gatefi 3847c478bd9Sstevel@tonic-gateDEF_STRIPFLAG="-s" 3857c478bd9Sstevel@tonic-gate 3867c478bd9Sstevel@tonic-gateTMPDIR="/tmp" 3877c478bd9Sstevel@tonic-gate 38878add226Sjmcp# "o_FLAG" is used by "nightly.sh" (it may be useful to rename this 38978add226Sjmcp# variable using a more descriptive name later) 39063df1173Spetedeexport o_FLAG="$(${flags.o} && print 'y' || print 'n')" 39163df1173Spetede 39263df1173Spetedeexport \ 39363df1173Spetede PATH TMPDIR \ 39463df1173Spetede POUND_SIGN \ 39548bc00d6Sjmcp DEF_STRIPFLAG \ 39648bc00d6Sjmcp RELEASE_DATE 39763df1173Spetedeunset \ 39863df1173Spetede CFLAGS \ 39963df1173Spetede LD_LIBRARY_PATH 4007c478bd9Sstevel@tonic-gate 4017c478bd9Sstevel@tonic-gate# a la ws 4027c478bd9Sstevel@tonic-gateENVLDLIBS1= 4037c478bd9Sstevel@tonic-gateENVLDLIBS2= 4047c478bd9Sstevel@tonic-gateENVLDLIBS3= 4057c478bd9Sstevel@tonic-gateENVCPPFLAGS1= 4067c478bd9Sstevel@tonic-gateENVCPPFLAGS2= 4077c478bd9Sstevel@tonic-gateENVCPPFLAGS3= 4087c478bd9Sstevel@tonic-gateENVCPPFLAGS4= 4097c478bd9Sstevel@tonic-gatePARENT_ROOT= 410ead1f93eSLiane PrazaPARENT_TOOLS_ROOT= 4117c478bd9Sstevel@tonic-gate 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 421b83ec4edSjmcpexport TONICBUILD="#" 422b83ec4edSjmcp 423b83ec4edSjmcpif "${flags.O}" ; then 424b83ec4edSjmcp if [[ "$CLOSED_IS_PRESENT" != "yes" ]]; then 425b83ec4edSjmcp print "OpenSolaris closed binary generation requires " 426b83ec4edSjmcp print "closed tree" 427b83ec4edSjmcp exit 1 428b83ec4edSjmcp fi 429b83ec4edSjmcp print "Generating OpenSolaris deliverables" 430b83ec4edSjmcp # We only need CLOSEDROOT in the env for convenience. Makefile.master 431b83ec4edSjmcp # figures out what it needs when it matters. 432b83ec4edSjmcp export CLOSEDROOT="${ROOT}-closed" 433b83ec4edSjmcp export TONICBUILD="" 434b83ec4edSjmcpfi 435b83ec4edSjmcp 4367c478bd9Sstevel@tonic-gateENVLDLIBS1="-L$ROOT/lib -L$ROOT/usr/lib" 4377c478bd9Sstevel@tonic-gateENVCPPFLAGS1="-I$ROOT/usr/include" 4387c478bd9Sstevel@tonic-gateMAKEFLAGS=e 4397c478bd9Sstevel@tonic-gate 44063df1173Spetedeexport \ 44163df1173Spetede ENVLDLIBS1 \ 44263df1173Spetede ENVLDLIBS2 \ 44363df1173Spetede ENVLDLIBS3 \ 44463df1173Spetede ENVCPPFLAGS1 \ 44563df1173Spetede ENVCPPFLAGS2 \ 44663df1173Spetede ENVCPPFLAGS3 \ 44763df1173Spetede ENVCPPFLAGS4 \ 44863df1173Spetede MAKEFLAGS \ 449cdf0c1d5Smjnelson PARENT_ROOT \ 450*5c70f01eSRichard Lowe PARENT_TOOLS_ROOT 4517c478bd9Sstevel@tonic-gate 45263df1173Spetedeprintf 'RELEASE is %s\n' "$RELEASE" 45363df1173Spetedeprintf 'VERSION is %s\n' "$VERSION" 45463df1173Spetedeprintf 'RELEASE_DATE is %s\n\n' "$RELEASE_DATE" 4557c478bd9Sstevel@tonic-gate 45663df1173Spetedeif [[ -f "$SRC/Makefile" ]] && egrep -s '^setup:' "$SRC/Makefile" ; then 45763df1173Spetede print "The top-level 'setup' target is available \c" 45863df1173Spetede print "to build headers and tools." 45963df1173Spetede print "" 4607c478bd9Sstevel@tonic-gate 46163df1173Spetedeelif "${flags.t}" ; then 46263df1173Spetede printf \ 46363df1173Spetede 'The tools can be (re)built with the install target in %s.\n\n' \ 46463df1173Spetede "${TOOLS}" 4657c478bd9Sstevel@tonic-gatefi 4667c478bd9Sstevel@tonic-gate 4670756aa0bSGavin Maltby# 4680756aa0bSGavin Maltby# place ourselves in a new task, respecting BUILD_PROJECT if set. 4690756aa0bSGavin Maltby# 4700756aa0bSGavin Maltby/usr/bin/newtask -c $$ ${BUILD_PROJECT:+-p$BUILD_PROJECT} 4717c478bd9Sstevel@tonic-gate 47263df1173Spetedeif [[ "${flags.c}" == "false" && -x "$SHELL" && \ 473d7693b08SRoland Mainz "$(basename -- "${SHELL}")" != "csh" ]]; then 4747c478bd9Sstevel@tonic-gate # $SHELL is set, and it's not csh. 4757c478bd9Sstevel@tonic-gate 47663df1173Spetede if "${flags.f}" ; then 47763df1173Spetede print 'WARNING: -f is ignored when $SHELL is not csh' 4787c478bd9Sstevel@tonic-gate fi 4797c478bd9Sstevel@tonic-gate 48063df1173Spetede printf 'Using %s as shell.\n' "$SHELL" 48163df1173Spetede exec "$SHELL" ${@:+-c "$@"} 4827c478bd9Sstevel@tonic-gate 48363df1173Spetedeelif "${flags.f}" ; then 48463df1173Spetede print 'Using csh -f as shell.' 4857c478bd9Sstevel@tonic-gate exec csh -f ${@:+-c "$@"} 4867c478bd9Sstevel@tonic-gate 4877c478bd9Sstevel@tonic-gateelse 48863df1173Spetede print 'Using csh as shell.' 4897c478bd9Sstevel@tonic-gate exec csh ${@:+-c "$@"} 4907c478bd9Sstevel@tonic-gatefi 49163df1173Spetede 49263df1173Spetede# not reached 493