• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#
2# Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
3# Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
4# This program and the accompanying materials
5# are licensed and made available under the terms and conditions of the BSD License
6# which accompanies this distribution.  The full text of the license may be found at
7# http://opensource.org/licenses/bsd-license.php
8#
9# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
11#
12# In *inux environment, the build tools's source is required and need to be compiled
13# firstly, please reference https://github.com/tianocore/tianocore.github.io/wiki/SourceForge-to-Github-Quick-Start
14# to get how to setup build tool.
15#
16# Setup the environment for unix-like systems running a bash-like shell.
17# This file must be "sourced" not merely executed. For example: ". edksetup.sh"
18#
19# CYGWIN users: Your path and filename related environment variables should be
20# set up in the unix style.  This script will make the necessary conversions to
21# windows style.
22#
23# Please reference edk2 user manual for more detail descriptions at https://github.com/tianocore-docs/Docs/raw/master/User_Docs/EDK_II_UserManual_0_7.pdf
24#
25
26SCRIPTNAME="edksetup.sh"
27RECONFIG=FALSE
28
29function HelpMsg()
30{
31  echo "Usage: $SCRIPTNAME [Options]"
32  echo
33  echo "The system environment variable, WORKSPACE, is always set to the current"
34  echo "working directory."
35  echo
36  echo "Options: "
37  echo "  --help, -h, -?        Print this help screen and exit."
38  echo
39  echo "  --reconfig            Overwrite the WORKSPACE/Conf/*.txt files with the"
40  echo "                        template files from the BaseTools/Conf directory."
41  echo
42  echo Please note: This script must be \'sourced\' so the environment can be changed.
43  echo ". $SCRIPTNAME"
44  echo "source $SCRIPTNAME"
45}
46
47function SetWorkspace()
48{
49  #
50  # If WORKSPACE is already set, then we can return right now
51  #
52  if [ -n "$WORKSPACE" ]
53  then
54    return 0
55  fi
56
57  if [ ! ${BASH_SOURCE[0]} -ef ./edksetup.sh ]
58  then
59    echo Run this script from the base of your tree.  For example:
60    echo "  cd /Path/To/Edk/Root"
61    echo "  . edksetup.sh"
62    return 1
63  fi
64
65  #
66  # Check for BaseTools/BuildEnv before dirtying the user's environment.
67  #
68  if [ ! -f BaseTools/BuildEnv ] && [ -z "$EDK_TOOLS_PATH" ]
69  then
70    echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set.
71    echo Please point EDK_TOOLS_PATH at the directory that contains
72    echo the EDK2 BuildEnv script.
73    return 1
74  fi
75
76  #
77  # Set $WORKSPACE
78  #
79  export WORKSPACE=`pwd`
80
81  return 0
82}
83
84function SetupEnv()
85{
86  if [ -n "$EDK_TOOLS_PATH" ]
87  then
88    . $EDK_TOOLS_PATH/BuildEnv
89  elif [ -f "$WORKSPACE/BaseTools/BuildEnv" ]
90  then
91    . $WORKSPACE/BaseTools/BuildEnv
92  elif [ -n "$PACKAGES_PATH" ]
93  then
94    PATH_LIST=$PACKAGES_PATH
95    PATH_LIST=${PATH_LIST//:/ }
96    for DIR in $PATH_LIST
97    do
98      if [ -f "$DIR/BaseTools/BuildEnv" ]
99      then
100        export EDK_TOOLS_PATH=$DIR/BaseTools
101        . $DIR/BaseTools/BuildEnv
102        break
103      fi
104    done
105  else
106    echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set.
107    echo Please check that WORKSPACE or PACKAGES_PATH is not set incorrectly
108    echo in your shell, or point EDK_TOOLS_PATH at the directory that contains
109    echo the EDK2 BuildEnv script.
110    return 1
111  fi
112}
113
114function SourceEnv()
115{
116  SetWorkspace &&
117  SetupEnv
118}
119
120I=$#
121while [ $I -gt 0 ]
122do
123  case "$1" in
124    BaseTools)
125      # Ignore argument for backwards compatibility
126      shift
127    ;;
128    --reconfig)
129      RECONFIG=TRUE
130      shift
131    ;;
132    -?|-h|--help|*)
133      HelpMsg
134      break
135    ;;
136  esac
137  I=$(($I - 1))
138done
139
140if [ $I -gt 0 ]
141then
142  return 1
143fi
144
145SourceEnv
146
147unset SCRIPTNAME RECONFIG
148
149return $?
150