@@ -17,17 +17,21 @@ et_dir=$(realpath $script_dir/../..)
1717ARCH=" $( uname -m) "
1818OS=" $( uname -s) "
1919root_dir=" ${script_dir} /ethos-u-scratch"
20- user_toolchain_url=" "
21- user_toolchain_dir=" "
2220eula_acceptance=0
2321skip_toolchain_setup=0
22+ target_toolchain=" "
2423skip_fvp_setup=0
2524skip_vela_setup=0
2625
2726
2827# Figure out if setup.sh was called or sourced and save it into "is_script_sourced"
2928(return 0 2> /dev/null) && is_script_sourced=1 || is_script_sourced=0
3029
30+ # Global scope these so they can be set later
31+ toolchain_url=" "
32+ toolchain_dir=" "
33+ toolchain_md5_checksum=" "
34+
3135if [[ " ${ARCH} " == " x86_64" ]]; then
3236 # FVPs
3337 corstone300_url=" https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-300/FVP_Corstone_SSE-300_11.22_20_Linux64.tgz?rev=018659bd574f4e7b95fa647e7836ccf4&hash=22A79103C6FA5FFA7AFF3BE0447F3FF9"
@@ -37,11 +41,6 @@ if [[ "${ARCH}" == "x86_64" ]]; then
3741 corstone320_url=" https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-320/FVP_Corstone_SSE-320_11.27_25_Linux64.tgz?rev=a507bffc219a4d5792f1192ab7002d89&hash=D9A824AA8227D2E679C9B9787FF4E8B6FBE3D7C6"
3842 corstone320_model_dir=" Linux64_GCC-9.3"
3943 corstone320_md5_checksum=" 3deb3c68f9b2d145833f15374203514d"
40-
41- # toochain
42- toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz"
43- toolchain_dir=" arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi"
44- toolchain_md5_checksum=" 0601a9588bc5b9c99ad2b56133b7f118"
4544elif [[ " ${ARCH} " == " aarch64" ]] || [[ " ${ARCH} " == " arm64" ]]; then
4645 # FVPs
4746 corstone300_url=" https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-300/FVP_Corstone_SSE-300_11.22_20_Linux64_armv8l.tgz?rev=9cc6e9a32bb947ca9b21fa162144cb01&hash=7657A4CF27D42E892E3F08D452AAB073"
@@ -51,17 +50,6 @@ elif [[ "${ARCH}" == "aarch64" ]] || [[ "${ARCH}" == "arm64" ]]; then
5150 corstone320_url=" https://developer.arm.com/-/media/Arm%20Developer%20Community/Downloads/OSS/FVP/Corstone-320/FVP_Corstone_SSE-320_11.27_25_Linux64_armv8l.tgz?rev=b6ebe0923cb84f739e017385fd3c333c&hash=8965C4B98E2FF7F792A099B08831FE3CB6120493"
5251 corstone320_model_dir=" Linux64_armv8l_GCC-9.3"
5352 corstone320_md5_checksum=" 3889f1d80a6d9861ea4aa6f1c88dd0ae"
54-
55- # toochain
56- if [[ " ${OS} " == " Darwin" ]]; then
57- toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-darwin-arm64-arm-none-eabi.tar.xz"
58- toolchain_dir=" arm-gnu-toolchain-13.3.rel1-darwin-arm64-arm-none-eabi"
59- toolchain_md5_checksum=" f1c18320bb3121fa89dca11399273f4e"
60- elif [[ " ${OS} " == " Linux" ]]; then
61- toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz"
62- toolchain_dir=" arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi"
63- toolchain_md5_checksum=" 303102d97b877ebbeb36b3158994b218"
64- fi
6553else
6654 echo " [main] Error: only x86-64 & aarch64/arm64 architecture is supported for now!" ; exit 1;
6755fi
@@ -75,7 +63,7 @@ vela_rev="8cac2b9a7204b57125a8718049519b091a98846c"
7563# #######
7664
7765function print_usage() {
78- echo " Usage: $( basename $0 ) <--i-agree-to-the-contained-eula> [--root-dir path-to-a-scratch-dir] [--user -toolchain-url toolchain-url] [--user-toolchain-dir toolchain-dir ] [--skip-fvp-setup] [--skip-toolchain-setup] [--skip-vela-setup]"
66+ echo " Usage: $( basename $0 ) <--i-agree-to-the-contained-eula> [--root-dir path-to-a-scratch-dir] [--target -toolchain toolchain name ] [--skip-fvp-setup] [--skip-toolchain-setup] [--skip-vela-setup]"
7967 echo " Supplied args: $* "
8068}
8169
@@ -99,21 +87,14 @@ function check_options() {
9987 exit 1
10088 fi
10189 ;;
102- --user-toolchain-url)
103- if [[ $is_script_sourced -eq 0 ]]; then
104- user_toolchain_url=${2:- " ${user_toolchain_url} " }
105- fi
106-
107- if [[ $# -ge 2 ]]; then
108- shift 2
109- else
110- print_usage " $@ "
111- exit 1
112- fi
90+ --skip-toolchain-setup)
91+ skip_toolchain_setup=1
92+ shift
11393 ;;
114- --user-toolchain-dir)
94+ --target-toolchain)
95+ # Only change default root dir if the script is being executed and not sourced.
11596 if [[ $is_script_sourced -eq 0 ]]; then
116- user_toolchain_dir =${2:- " ${user_toolchain_dir } " }
97+ target_toolchain =${2:- " ${target_toolchain } " }
11798 fi
11899
119100 if [[ $# -ge 2 ]]; then
@@ -123,10 +104,6 @@ function check_options() {
123104 exit 1
124105 fi
125106 ;;
126- --skip-toolchain-setup)
127- skip_toolchain_setup=1
128- shift
129- ;;
130107 --skip-fvp-setup)
131108 skip_fvp_setup=1
132109 shift
@@ -223,32 +200,46 @@ function setup_fvp() {
223200 done
224201}
225202
203+ function select_toolchain() {
204+ if [[ " ${ARCH} " == " x86_64" ]]; then
205+ if [[ " ${target_toolchain} " == " zephyr" ]]; then
206+ # TODO can include support for zephyr toolchain for other host platforms later
207+ toolchain_url=" https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.2/toolchain_linux-x86_64_arm-zephyr-eabi.tar.xz"
208+ toolchain_dir=" arm-zephyr-eabi"
209+ toolchain_md5_checksum=" 93128be0235cf5cf5f1ee561aa6eac5f"
210+ else
211+ toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi.tar.xz"
212+ toolchain_dir=" arm-gnu-toolchain-13.3.rel1-x86_64-arm-none-eabi"
213+ toolchain_md5_checksum=" 0601a9588bc5b9c99ad2b56133b7f118"
214+ echo " [main] Info using bare metal toolchain for default host OS ${OS} selection"
215+ fi
216+ elif [[ " ${ARCH} " == " aarch64" ]] || [[ " ${ARCH} " == " arm64" ]]; then
217+ if [[ " ${OS} " == " Darwin" ]]; then
218+ toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-darwin-arm64-arm-none-eabi.tar.xz"
219+ toolchain_dir=" arm-gnu-toolchain-13.3.rel1-darwin-arm64-arm-none-eabi"
220+ toolchain_md5_checksum=" f1c18320bb3121fa89dca11399273f4e"
221+ elif [[ " ${OS} " == " Linux" ]]; then
222+ toolchain_url=" https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/13.3.rel1/binrel/arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi.tar.xz"
223+ toolchain_dir=" arm-gnu-toolchain-13.3.rel1-aarch64-arm-none-eabi"
224+ toolchain_md5_checksum=" 303102d97b877ebbeb36b3158994b218"
225+ fi
226+ else
227+ echo " [main] Error: only x86-64 & aarch64/arm64 architecture is supported for now!" ; exit 1;
228+ fi
229+ }
226230function setup_toolchain() {
227231 # Download and install the arm toolchain (default is arm-none-eabi)
232+ # setting --target-toolchain to zephyr sets this to arm-zephyr-eabi
228233 cd " ${root_dir} "
229- local selected_toolchain_url=" ${toolchain_url} "
230- local selected_toolchain_dir=" ${toolchain_dir} "
231- local selected_toolchain_md5=" ${toolchain_md5_checksum} "
232- local skip_md5_verify=0
233- if [[ -n " ${user_toolchain_url} " ]]; then
234- selected_toolchain_url=" ${user_toolchain_url} "
235- selected_toolchain_dir=" ${user_toolchain_dir} "
236- selected_toolchain_md5=" "
237- # TODO: For now we skip this if its a user specified url
238- # but eventually we should verify the checksums
239- skip_md5_verify=1
240- fi
241- if [[ ! -e " ${selected_toolchain_dir} .tar.xz" ]]; then
242- echo " [${FUNCNAME[0]} ] Downloading toolchain ..."
243- curl --output " ${selected_toolchain_dir} .tar.xz" -L " ${selected_toolchain_url} "
244- if [[ ${skip_md5_verify} -eq 0 ]]; then
245- verify_md5 ${selected_toolchain_md5} " ${selected_toolchain_dir} .tar.xz" || exit 1
246- fi
234+ if [[ ! -e " ${toolchain_dir} .tar.xz" ]]; then
235+ echo " [${FUNCNAME[0]} ] Downloading ${toolchain_dir} toolchain ..."
236+ curl --output " ${toolchain_dir} .tar.xz" -L " ${toolchain_url} "
237+ verify_md5 ${toolchain_md5_checksum} " ${toolchain_dir} .tar.xz" || exit 1
247238 fi
248239
249240 echo " [${FUNCNAME[0]} ] Installing toolchain ..."
250- rm -rf " ${selected_toolchain_dir } "
251- tar xf " ${selected_toolchain_dir } .tar.xz"
241+ rm -rf " ${toolchain_dir } "
242+ tar xf " ${toolchain_dir } .tar.xz"
252243}
253244
254245function setup_vela() {
@@ -277,12 +268,8 @@ function create_setup_path(){
277268 echo " hash FVP_Corstone_SSE-320" >> ${setup_path_script}
278269 fi
279270
280- local selected_toolchain_dir=" ${toolchain_dir} "
281- if [[ -n " ${user_toolchain_url} " && -n " ${user_toolchain_dir} " ]]; then
282- selected_toolchain_dir=" ${user_toolchain_dir} "
283- fi
284271 if [[ " ${skip_toolchain_setup} " -eq 0 ]]; then
285- toolchain_bin_path=" $( cd ${selected_toolchain_dir } /bin && pwd) "
272+ toolchain_bin_path=" $( cd ${toolchain_dir } /bin && pwd) "
286273 echo " export PATH=\$ {PATH}:${toolchain_bin_path} " >> ${setup_path_script}
287274 fi
288275}
@@ -315,15 +302,17 @@ if [[ $is_script_sourced -eq 0 ]]; then
315302 setup_root_dir
316303 cd " ${root_dir} "
317304 echo " [main] Using root dir ${root_dir} and options:"
318- echo " user_toolchain_url=${user_toolchain_url} "
319- echo " user_toolchain_dir=${user_toolchain_dir} "
320305 echo " skip-fvp-setup=${skip_fvp_setup} "
306+ echo " target-toolchain=${target_toolchain} "
321307 echo " skip-toolchain-setup=${skip_toolchain_setup} "
322308 echo " skip-vela-setup=${skip_vela_setup} "
323309
324310 # Import utils
325311 source $et_dir /backends/arm/scripts/utils.sh
326312
313+ # Select appropriate toolchain
314+ select_toolchain
315+
327316 # Setup toolchain
328317 if [[ " ${skip_toolchain_setup} " -eq 0 ]]; then
329318 setup_toolchain
0 commit comments