1# 2# Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR> 3# This program and the accompanying materials 4# are licensed and made available under the terms and conditions of the BSD License 5# which accompanies this distribution. The full text of the license may be found at 6# http://opensource.org/licenses/bsd-license.php 7# 8# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 9# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 10# 11# In *inux environment, the build tools's source is required and need to be compiled 12# firstly, please reference https://edk2.tianocore.org/unix-getting-started.html to 13# to get how to setup build tool. 14# 15# After build tool is downloaded and compiled, a soft symbol linker need to be created 16# at <workspace>/Conf. For example: ln -s /work/BaseTools /work/edk2/Conf/BaseToolsSource. 17# 18# Setup the environment for unix-like systems running a bash-like shell. 19# This file must be "sourced" not merely executed. For example: ". edksetup.sh" 20# 21# CYGWIN users: Your path and filename related environment variables should be 22# set up in the unix style. This script will make the necessary conversions to 23# windows style. 24# 25# Please reference edk2 user manual for more detail descriptions at https://edk2.tianocore.org/files/documents/64/494/EDKII_UserManual.pdf 26# 27 28function HelpMsg() 29{ 30 echo Please note: This script must be \'sourced\' so the environment can be changed. 31 echo ". edksetup.sh" 32 echo "source edksetup.sh" 33 return 1 34} 35 36function SetWorkspace() 37{ 38 # 39 # If WORKSPACE is already set, then we can return right now 40 # 41 if [ -n "$WORKSPACE" ] 42 then 43 return 0 44 fi 45 46 if [ ! ${BASH_SOURCE[0]} -ef ./edksetup.sh ] 47 then 48 echo Run this script from the base of your tree. For example: 49 echo " cd /Path/To/Edk/Root" 50 echo " . edksetup.sh" 51 return 1 52 fi 53 54 # 55 # Check for BaseTools/BuildEnv before dirtying the user's environment. 56 # 57 if [ ! -f BaseTools/BuildEnv ] && [ -z "$EDK_TOOLS_PATH" ] 58 then 59 echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set. 60 echo Please point EDK_TOOLS_PATH at the directory that contains 61 echo the EDK2 BuildEnv script. 62 return 1 63 fi 64 65 # 66 # Set $WORKSPACE 67 # 68 export WORKSPACE=`pwd` 69 70 return 0 71} 72 73function SetupEnv() 74{ 75 if [ -n "$EDK_TOOLS_PATH" ] 76 then 77 . $EDK_TOOLS_PATH/BuildEnv $* 78 elif [ -f "$WORKSPACE/BaseTools/BuildEnv" ] 79 then 80 . $WORKSPACE/BaseTools/BuildEnv $* 81 elif [ -n "$PACKAGES_PATH" ] 82 then 83 PATH_LIST=$PACKAGES_PATH 84 PATH_LIST=${PATH_LIST//:/ } 85 for DIR in $PATH_LIST 86 do 87 if [ -f "$DIR/BaseTools/BuildEnv" ] 88 then 89 export EDK_TOOLS_PATH=$DIR/BaseTools 90 . $DIR/BaseTools/BuildEnv $* 91 break 92 fi 93 done 94 else 95 echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set. 96 echo Please check that WORKSPACE or PACKAGES_PATH is not set incorrectly 97 echo in your shell, or point EDK_TOOLS_PATH at the directory that contains 98 echo the EDK2 BuildEnv script. 99 return 1 100 fi 101} 102 103function SourceEnv() 104{ 105 if [ \ 106 "$1" = "-?" -o \ 107 "$1" = "-h" -o \ 108 "$1" = "--help" \ 109 ] 110 then 111 HelpMsg 112 else 113 SetWorkspace && 114 SetupEnv "$*" 115 fi 116} 117 118if [ $# -gt 1 ] 119then 120 HelpMsg 121elif [ $# -eq 1 ] && [ "$1" != "BaseTools" ] 122then 123 HelpMsg 124fi 125 126RETVAL=$? 127if [ $RETVAL -ne 0 ] 128then 129 return $RETVAL 130fi 131 132SourceEnv "$*" 133 134