X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FBuildEnv;h=5943bb9ef90890dacddad57cc8877756e16fb316;hp=144be280da5154edb6f7d30ba2c69683df2872d4;hb=07135c12205805fa0ffcc0d0f347c3d4de37188b;hpb=40d841f6a8f84e75409178e19e69b95e01bada0f diff --git a/BaseTools/BuildEnv b/BaseTools/BuildEnv index 144be280da..5943bb9ef9 100755 --- a/BaseTools/BuildEnv +++ b/BaseTools/BuildEnv @@ -1,17 +1,11 @@ -# -# Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BSD License -# which accompanies this distribution. The full text of the license may be found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -# +## @file # Setup the environment for unix-like systems running a bash-like shell. # This file must be "sourced" not merely executed. For example: ". edksetup.sh" # +# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.
+# Copyright (c) 2016, Linaro Ltd. All rights reserved.
+# SPDX-License-Identifier: BSD-2-Clause-Patent +# SetWorkspace() { @@ -23,14 +17,6 @@ SetWorkspace() { return 0 fi - if [ ! ${BASH_SOURCE[0]} -ef ./BaseTools/BuildEnv ] - then - echo Run this script from the base of your tree. For example: - echo " cd /Path/To/Edk/Root" - echo " . BaseTools/BuildEnv" - return -1 - fi - # # Set $WORKSPACE # @@ -44,11 +30,28 @@ RestorePreviousConfiguration() { # # Restore previous configuration # - PREVIOUS_CONF_FILE=Conf/BuildEnv.sh + if [ -z "$CONF_PATH" ] + then + export CONF_PATH=$WORKSPACE/Conf + if [ ! -d $WORKSPACE/Conf ] && [ -n "$PACKAGES_PATH" ] + then + PATH_LIST=${PACKAGES_PATH//:/ } + for DIR in $PATH_LIST + do + if [ -d $DIR/Conf ] + then + export CONF_PATH=$DIR/Conf + break + fi + done + fi + fi + + PREVIOUS_CONF_FILE=$CONF_PATH/BuildEnv.sh if [ -e $PREVIOUS_CONF_FILE ] then - echo Loading previous configuration from \$WORKSPACE/$PREVIOUS_CONF_FILE - . $WORKSPACE/$PREVIOUS_CONF_FILE + echo Loading previous configuration from $PREVIOUS_CONF_FILE + . $PREVIOUS_CONF_FILE fi } @@ -79,10 +82,9 @@ StoreCurrentConfiguration() { # Write configuration to a shell script to allow for configuration to be # easily reloaded. # - OUTPUT_FILE=Conf/BuildEnv.sh - #echo Storing current configuration into \$WORKSPACE/$OUTPUT_FILE - OUTPUT_FILE=$WORKSPACE/$OUTPUT_FILE - echo "# Auto-generated by ${BASH_SOURCE[0]}" > $OUTPUT_FILE + OUTPUT_FILE=$CONF_PATH/BuildEnv.sh + #echo Storing current configuration into $OUTPUT_FILE + echo "# Auto-generated by ${BASH_SOURCE[0]}" >| $OUTPUT_FILE GenerateShellCodeToSetVariable WORKSPACE $OUTPUT_FILE GenerateShellCodeToSetVariable EDK_TOOLS_PATH $OUTPUT_FILE GenerateShellCodeToUpdatePath $OUTPUT_FILE @@ -99,37 +101,46 @@ SetEdkToolsPath() { fi # - # Figure out a uniq directory name from the uname command + # Try $CONF_PATH/EdkTools # - UNAME_DIRNAME=`uname -sm` - UNAME_DIRNAME=${UNAME_DIRNAME// /-} - UNAME_DIRNAME=${UNAME_DIRNAME//\//-} + if [ -e $CONF_PATH/EdkTools ] + then + export EDK_TOOLS_PATH=$CONF_PATH/EdkTools + return 0 + fi # - # Try $WORKSPACE/Conf/EdkTools + # Try $CONF_PATH/BaseToolsSource # - if [ -e $WORKSPACE/Conf/EdkTools ] + if [ -e $CONF_PATH/BaseToolsSource ] then - export EDK_TOOLS_PATH=$WORKSPACE/Conf/EdkTools + export EDK_TOOLS_PATH=$CONF_PATH/BaseToolsSource return 0 fi # - # Try $WORKSPACE/Conf/BaseToolsSource + # Try $WORKSPACE/BaseTools # - if [ -e $WORKSPACE/Conf/BaseToolsSource ] + if [ -e $WORKSPACE/BaseTools ] then - export EDK_TOOLS_PATH=$WORKSPACE/Conf/BaseToolsSource + export EDK_TOOLS_PATH=$WORKSPACE/BaseTools return 0 fi # - # Try $WORKSPACE/BaseTools/Bin/$UNAME_DIRNAME + # Try $PACKAGES_PATH # - if [ -e $WORKSPACE/BaseTools/Bin/$UNAME_DIRNAME ] + if [ -n "$PACKAGES_PATH"] then - export EDK_TOOLS_PATH=$WORKSPACE/BaseTools - return 0 + PATH_LIST=${PACKAGES_PATH//:/ } + for DIR in $PATH_LIST + do + if [ -d $DIR/BaseTools ] + then + export EDK_TOOLS_PATH=$DIR/BaseTools + return 0 + fi + done fi echo "Unable to determine EDK_TOOLS_PATH" @@ -167,6 +178,14 @@ GetEdkToolsPathBinDirectory() { echo $EDK_TOOLS_PATH_BIN } +AddDirToStartOfPath() { + DIRNAME=$1 + PATH=$DIRNAME:$DIRNAME:$DIRNAME:$PATH + PATH=${PATH//$DIRNAME:/} + PATH=$DIRNAME:$PATH + export PATH +} + AddEdkToolsToPath() { # @@ -174,40 +193,29 @@ AddEdkToolsToPath() { # if [ -z "$EDK_TOOLS_PATH" ] then - return -1 + return 1 fi EDK_TOOLS_PATH_BIN=`GetEdkToolsPathBinDirectory` - if [ ! -e $EDK_TOOLS_PATH_BIN ] - then - echo "Unable to find expected bin path under \$EDK_TOOLS_PATH!" - echo "> $EDK_TOOLS_PATH_BIN" - return -1 - fi - - if [ "${PATH/$EDK_TOOLS_PATH_BIN/}" == "$PATH" ] - then - export PATH=$EDK_TOOLS_PATH_BIN:$PATH - return 0 - fi + AddDirToStartOfPath $EDK_TOOLS_PATH/BinWrappers/PosixLike + AddDirToStartOfPath $EDK_TOOLS_PATH_BIN } CopySingleTemplateFile() { SRC_FILENAME=Conf/$1.template - DST_FILENAME=Conf/$1.txt + DST_FILENAME=$CONF_PATH/$1.txt - if [ -e $WORKSPACE/$DST_FILENAME ] + if [ -e $DST_FILENAME ] then - return + [ $RECONFIG != TRUE ] && return fi echo "Copying \$EDK_TOOLS_PATH/$SRC_FILENAME" - echo " to \$WORKSPACE/$DST_FILENAME" + echo " to $DST_FILENAME" SRC_FILENAME=$EDK_TOOLS_PATH/$SRC_FILENAME - DST_FILENAME=$WORKSPACE/$DST_FILENAME cp $SRC_FILENAME $DST_FILENAME } @@ -215,7 +223,6 @@ CopySingleTemplateFile() { CopyTemplateFiles() { CopySingleTemplateFile build_rule - CopySingleTemplateFile FrameworkDatabase CopySingleTemplateFile tools_def CopySingleTemplateFile target @@ -227,7 +234,7 @@ ScriptMain() { if [ -z $WORKSPACE ] then echo "Failure setting WORKSPACE" - return -1 + return 1 fi RestorePreviousConfiguration @@ -235,20 +242,21 @@ ScriptMain() { SetEdkToolsPath if [ -z $EDK_TOOLS_PATH ] then - return -1 + return 1 fi AddEdkToolsToPath if [ $? -ne 0 ] then echo "Failure adding EDK Tools into PATH!" - return -1 + return 1 fi StoreCurrentConfiguration echo WORKSPACE: $WORKSPACE echo EDK_TOOLS_PATH: $EDK_TOOLS_PATH + echo CONF_PATH: $CONF_PATH CopyTemplateFiles