]> git.proxmox.com Git - mirror_edk2.git/blobdiff - BaseTools/BuildEnv
BaseTools/Capsule: Do not support -o with --dump-info
[mirror_edk2.git] / BaseTools / BuildEnv
old mode 100644 (file)
new mode 100755 (executable)
index 8e7343a..ff0c511
@@ -1,16 +1,16 @@
+## @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 - 2007, Intel Corporation
-# All rights reserved. This program and the accompanying materials
+# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
+# 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.
-
-#
-# Setup the environment for unix-like systems running a bash-like shell.
-# This file must be "sourced" not merely executed. For example: ". edksetup.sh"
 #
 
 SetWorkspace() {
@@ -23,14 +23,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 +36,28 @@ RestorePreviousConfiguration() {
   #
   # Restore previous configuration
   #
-  PREVIOUS_CONF_FILE=Conf/BuildEnv.sh2
+  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 +88,9 @@ StoreCurrentConfiguration() {
   # Write configuration to a shell script to allow for configuration to be
   # easily reloaded.
   #
-  OUTPUT_FILE=Conf/BuildEnv.sh2
-  #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 +107,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"
@@ -157,9 +174,9 @@ GetEdkToolsPathBinDirectory() {
   #
   BIN_SUB_DIR=`GetBaseToolsBinSubDir`
 
-  if [ -e $EDK_TOOLS_PATH/PseudoBin/$BIN_SUB_DIR ]
+  if [ -e $EDK_TOOLS_PATH/BinWrappers/$BIN_SUB_DIR ]
   then
-    EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/PseudoBin/$BIN_SUB_DIR
+    EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/BinWrappers/$BIN_SUB_DIR
   else
     EDK_TOOLS_PATH_BIN=$EDK_TOOLS_PATH/Bin/$BIN_SUB_DIR
   fi
@@ -167,6 +184,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 +199,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=BaseTools/Conf/$1.template
-  DST_FILENAME=Conf/$1.txt
+  SRC_FILENAME=Conf/$1.template
+  DST_FILENAME=$CONF_PATH/$1.txt
 
-  if [ -e $WORKSPACE/$DST_FILENAME ]
+  if [ -e $DST_FILENAME ]
   then
-    return
+    [ $RECONFIG != TRUE ] && return
   fi
 
-  echo "Copying \$WORKSPACE/$SRC_FILENAME"
-  echo "     to \$WORKSPACE/$DST_FILENAME"
-  SRC_FILENAME=$WORKSPACE/$SRC_FILENAME
-  DST_FILENAME=$WORKSPACE/$DST_FILENAME
+  echo "Copying \$EDK_TOOLS_PATH/$SRC_FILENAME"
+  echo "     to $DST_FILENAME"
+  SRC_FILENAME=$EDK_TOOLS_PATH/$SRC_FILENAME
   cp $SRC_FILENAME $DST_FILENAME
 
 }
@@ -215,7 +229,6 @@ CopySingleTemplateFile() {
 CopyTemplateFiles() {
 
   CopySingleTemplateFile build_rule
-  CopySingleTemplateFile FrameworkDatabase
   CopySingleTemplateFile tools_def
   CopySingleTemplateFile target
 
@@ -227,7 +240,7 @@ ScriptMain() {
   if [ -z $WORKSPACE ]
   then
     echo "Failure setting WORKSPACE"
-    return -1
+    return 1
   fi
 
   RestorePreviousConfiguration
@@ -235,20 +248,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