]> git.proxmox.com Git - mirror_edk2.git/blob - edksetup.sh
UnitTestFrameworkPkg: Add UnitTestUefiBootServicesTableLib
[mirror_edk2.git] / edksetup.sh
1 #
2 # Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
3 # Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
4 # SPDX-License-Identifier: BSD-2-Clause-Patent
5 #
6 # In *inux environment, the build tools's source is required and need to be compiled
7 # firstly, please reference https://github.com/tianocore/tianocore.github.io/wiki/SourceForge-to-Github-Quick-Start
8 # to get how to setup build tool.
9 #
10 # Setup the environment for unix-like systems running a bash-like shell.
11 # This file must be "sourced" not merely executed. For example: ". edksetup.sh"
12 #
13 # CYGWIN users: Your path and filename related environment variables should be
14 # set up in the unix style. This script will make the necessary conversions to
15 # windows style.
16 #
17 # 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
18 #
19
20 SCRIPTNAME="edksetup.sh"
21 RECONFIG=FALSE
22
23 function HelpMsg()
24 {
25 echo "Usage: $SCRIPTNAME [Options]"
26 echo
27 echo "The system environment variable, WORKSPACE, is always set to the current"
28 echo "working directory."
29 echo
30 echo "Options: "
31 echo " --help, -h, -? Print this help screen and exit."
32 echo
33 echo " --reconfig Overwrite the WORKSPACE/Conf/*.txt files with the"
34 echo " template files from the BaseTools/Conf directory."
35 echo
36 echo Please note: This script must be \'sourced\' so the environment can be changed.
37 echo ". $SCRIPTNAME"
38 echo "source $SCRIPTNAME"
39 }
40
41 function SetWorkspace()
42 {
43 #
44 # If WORKSPACE is already set, then we can return right now
45 #
46 export PYTHONHASHSEED=1
47 if [ -n "$WORKSPACE" ]
48 then
49 return 0
50 fi
51
52 if [ ! ${BASH_SOURCE[0]} -ef ./$SCRIPTNAME ] && [ -z "$PACKAGES_PATH" ]
53 then
54 echo Run this script from the base of your tree. For example:
55 echo " cd /Path/To/Edk/Root"
56 echo " . $SCRIPTNAME"
57 return 1
58 fi
59
60 #
61 # Check for BaseTools/BuildEnv before dirtying the user's environment.
62 #
63 if [ ! -f BaseTools/BuildEnv ] && [ -z "$EDK_TOOLS_PATH" ]
64 then
65 echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set.
66 echo Please point EDK_TOOLS_PATH at the directory that contains
67 echo the EDK2 BuildEnv script.
68 return 1
69 fi
70
71 #
72 # Set $WORKSPACE
73 #
74 export WORKSPACE=$PWD
75 return 0
76 }
77
78 function SetupEnv()
79 {
80 if [ -n "$EDK_TOOLS_PATH" ]
81 then
82 . $EDK_TOOLS_PATH/BuildEnv
83 elif [ -f "$WORKSPACE/BaseTools/BuildEnv" ]
84 then
85 . $WORKSPACE/BaseTools/BuildEnv
86 elif [ -n "$PACKAGES_PATH" ]
87 then
88 PATH_LIST=$PACKAGES_PATH
89 PATH_LIST=${PATH_LIST//:/ }
90 for DIR in $PATH_LIST
91 do
92 if [ -f "$DIR/BaseTools/BuildEnv" ]
93 then
94 export EDK_TOOLS_PATH=$DIR/BaseTools
95 . $DIR/BaseTools/BuildEnv
96 break
97 fi
98 done
99 else
100 echo BaseTools not found in your tree, and EDK_TOOLS_PATH is not set.
101 echo Please check that WORKSPACE or PACKAGES_PATH is not set incorrectly
102 echo in your shell, or point EDK_TOOLS_PATH at the directory that contains
103 echo the EDK2 BuildEnv script.
104 return 1
105 fi
106 }
107
108 function SetupPython3()
109 {
110 if [ $origin_version ];then
111 origin_version=
112 fi
113 for python in $(whereis python3)
114 do
115 python=$(echo $python | grep "[[:digit:]]$" || true)
116 python_version=${python##*python}
117 if [ -z "${python_version}" ] || (! command -v $python >/dev/null 2>&1);then
118 continue
119 fi
120 if [ -z $origin_version ];then
121 origin_version=$python_version
122 export PYTHON_COMMAND=$python
123 continue
124 fi
125 if [[ "$origin_version" < "$python_version" ]]; then
126 origin_version=$python_version
127 export PYTHON_COMMAND=$python
128 fi
129 done
130 return 0
131 }
132
133 function SetupPython()
134 {
135 if [ $PYTHON_COMMAND ] && [ -z $PYTHON3_ENABLE ];then
136 if ( command -v $PYTHON_COMMAND >/dev/null 2>&1 );then
137 return 0
138 else
139 echo $PYTHON_COMMAND Cannot be used to build or execute the python tools.
140 return 1
141 fi
142 fi
143
144 if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE == TRUE ]
145 then
146 SetupPython3
147 fi
148
149 if [ $PYTHON3_ENABLE ] && [ $PYTHON3_ENABLE != TRUE ]
150 then
151 if [ $origin_version ];then
152 origin_version=
153 fi
154 for python in $(whereis python2)
155 do
156 python=$(echo $python | grep "[[:digit:]]$" || true)
157 python_version=${python##*python}
158 if [ -z "${python_version}" ] || (! command -v $python >/dev/null 2>&1);then
159 continue
160 fi
161 if [ -z $origin_version ]
162 then
163 origin_version=$python_version
164 export PYTHON_COMMAND=$python
165 continue
166 fi
167 if [[ "$origin_version" < "$python_version" ]]; then
168 origin_version=$python_version
169 export PYTHON_COMMAND=$python
170 fi
171 done
172 return 0
173 fi
174
175 SetupPython3
176 }
177
178 function SourceEnv()
179 {
180 SetWorkspace &&
181 SetupEnv
182 SetupPython
183 }
184
185 I=$#
186 while [ $I -gt 0 ]
187 do
188 case "$1" in
189 BaseTools)
190 # Ignore argument for backwards compatibility
191 shift
192 ;;
193 --reconfig)
194 RECONFIG=TRUE
195 shift
196 ;;
197 *)
198 HelpMsg
199 break
200 ;;
201 esac
202 I=$((I - 1))
203 done
204
205 if [ $I -gt 0 ]
206 then
207 return 1
208 fi
209
210 SourceEnv
211
212 unset SCRIPTNAME RECONFIG
213
214 return $?