diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2023-09-13 13:37:43 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2023-09-19 12:58:33 +0000 |
commit | de4cfe2e7675296e27cf3ee6df4f519f8e7d734a (patch) | |
tree | 466588e3dcb98897a1914c47676d7d380193408f | |
parent | 4de03c17a930db8105e23d0447aab4ccaf469164 (diff) |
tcwg_gnu-config.sh (settings_for_ci_project_and_config): Move code from tcwg_gnu-build.sh
So that we can add some features to it, and use it from round-robin-notify.sh later
Change-Id: Ib38ff9e02cf4ba4aface040a1a1bdc0663029050
-rwxr-xr-x | tcwg_gnu-build.sh | 144 | ||||
-rw-r--r-- | tcwg_gnu-config.sh | 149 |
2 files changed, 156 insertions, 137 deletions
diff --git a/tcwg_gnu-build.sh b/tcwg_gnu-build.sh index 4b3219a6..7837419c 100755 --- a/tcwg_gnu-build.sh +++ b/tcwg_gnu-build.sh @@ -13,6 +13,11 @@ convert_args_to_variables "$@" obligatory_variables rr[ci_project] rr[ci_config] declare -A rr +# All config about configure flags, simulator, pretty names, .... is +# implemented in this file +# shellcheck source=tcwg_gnu-config.sh +. $scripts/tcwg_gnu-config.sh + # Execution mode: build or bisect, rr[mode]="${rr[mode]-build}" @@ -312,143 +317,8 @@ gcc_override_configure=() gcc_target_board_options=() qemu_cpu=() -# Build the right libs depending on the target. Hardcode the -# arch/cpu/float-abi/mode to speed up toolchain builds: the -# alternative of building rmprofile multilibs takes a very long -# time. Setting the values here has the drawback that we have to build -# one toolchain per target_board type. -# Also force the corresponding options via target_board_options. This -# mimics how several vendors test the toolchain. -case "${rr[ci_project]}" in - tcwg_gnu_embed*) - case "${rr[target]}" in - "arm_v7a_soft_eabi") - # better to test full soft here (hard float for Thumb below) - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=arm" - "--set" "gcc_override_configure=--with-arch=armv7-a" - "--set" "gcc_override_configure=--with-fpu=vfpv3-d16" - "--set" "gcc_override_configure=--with-float=soft" - ) - gcc_target_board_options+=( - "--set target_board_options={-marm/-march=armv7-a/-mfpu=auto/-mfloat-abi=soft}" - ) - qemu_cpu+=(--qemu-cpu cortex-a9) - ;; - - "arm_v7a_softfp_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=arm" - "--set" "gcc_override_configure=--with-arch=armv7-a" - "--set" "gcc_override_configure=--with-fpu=vfpv3-d16" - "--set" "gcc_override_configure=--with-float=softfp" - ) - gcc_target_board_options+=( - "--set target_board_options={-marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp}" - ) - qemu_cpu+=(--qemu-cpu cortex-a9) - ;; - - "thumb_v8a_hard_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-arch=armv8-a+simd" - "--set" "gcc_override_configure=--with-fpu=crypto-neon-fp-armv8" - "--set" "gcc_override_configure=--with-float=hard" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv8-a+simd/-mfpu=auto/-mfloat-abi=hard}" - ) - # FIXME The most recent A-profile CPU known by qemu is - # cortex-a15, which is v7-a. Use "any" so that it - # supports v8-a instructions. - qemu_cpu+=(--qemu-cpu any) - ;; - - "thumb_m0_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-cpu=cortex-m0" - "--set" "gcc_override_configure=--with-float=soft" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv6s-m/-mtune=cortex-m0/-mfloat-abi=soft/-mfpu=auto}" - ) - qemu_cpu+=(--qemu-cpu cortex-m0) - ;; - - "thumb_m3_eabi") - # No v7-m variants support fp, so softfp is meaningless (though should work). - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-cpu=cortex-m3" - "--set" "gcc_override_configure=--with-float=softfp" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv7-m/-mtune=cortex-m3/-mfloat-abi=softfp/-mfpu=auto}" - ) - qemu_cpu+=(--qemu-cpu cortex-m3) - ;; - - "thumb_m7_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-cpu=cortex-m7" - "--set" "gcc_override_configure=--with-float=hard" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv7e-m+fp.dp/-mtune=cortex-m7/-mfloat-abi=hard/-mfpu=auto}" - ) - qemu_cpu+=(--qemu-cpu cortex-m7) - ;; - - "thumb_m23_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-cpu=cortex-m23" - "--set" "gcc_override_configure=--with-float=soft" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv8-m.base/-mtune=cortex-m23/-mfloat-abi=soft/-mfpu=auto}" - ) - # qemu does not support m23, use m33 as a superset (v8-m.base vs v8-m.main) - qemu_cpu+=(--qemu-cpu cortex-m33) - ;; - - "thumb_m33_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-cpu=cortex-m33" - "--set" "gcc_override_configure=--with-float=hard" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv8-m.main+dsp+fp/-mtune=cortex-m33/-mfloat-abi=hard/-mfpu=auto}" - ) - qemu_cpu+=(--qemu-cpu cortex-m33) - ;; - - "thumb_m55_hard_eabi") - gcc_override_configure+=( - "--set" "gcc_override_configure=--disable-multilib" - "--set" "gcc_override_configure=--with-mode=thumb" - "--set" "gcc_override_configure=--with-arch=armv8.1-m.main+mve.fp+fp.dp" - "--set" "gcc_override_configure=--with-float=hard" - ) - gcc_target_board_options+=( - "--set target_board_options={-mthumb/-march=armv8.1-m.main+mve.fp+fp.dp/-mtune=cortex-m55/-mfloat-abi=hard/-mfpu=auto}" - ) - qemu_cpu+=(--qemu-cpu cortex-m55) - ;; - esac -esac +# Define the above variables appropriately +settings_for_ci_project_and_config "${rr[ci_project]}" "${rr[ci_config]}" run_step stop_on_fail -10 reset_artifacts run_step stop_on_fail x prepare_abe diff --git a/tcwg_gnu-config.sh b/tcwg_gnu-config.sh new file mode 100644 index 00000000..b4a15625 --- /dev/null +++ b/tcwg_gnu-config.sh @@ -0,0 +1,149 @@ +#!/bin/bash + +# Populate gcc_override_configure, gcc_target_board_options, qemu_cpu +# depending on CI project and config +# $1: ci_project +# $2: ci_config +settings_for_ci_project_and_config () +{ + local project="$1" + local config="$2" + + obligatory_variables gcc_override_configure + obligatory_variables gcc_target_board_options qemu_cpu + + # Build the right libs depending on the target. Hardcode the + # arch/cpu/float-abi/mode to speed up toolchain builds: the + # alternative of building rmprofile multilibs takes a very long + # time. Setting the values here has the drawback that we have to build + # one toolchain per target_board type. + # Also force the corresponding options via target_board_options. This + # mimics how several vendors test the toolchain. + case "$project/$config" in + tcwg_gnu_embed*/*-arm_v7a_soft_eabi) + # better to test full soft here (hard float for Thumb below) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=arm" + "--set" "gcc_override_configure=--with-arch=armv7-a" + "--set" "gcc_override_configure=--with-fpu=vfpv3-d16" + "--set" "gcc_override_configure=--with-float=soft" + ) + gcc_target_board_options+=( + "--set target_board_options={-marm/-march=armv7-a/-mfpu=auto/-mfloat-abi=soft}" + ) + qemu_cpu+=(--qemu-cpu cortex-a9) + ;; + + tcwg_gnu_embed*/*-arm_v7a_softfp_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=arm" + "--set" "gcc_override_configure=--with-arch=armv7-a" + "--set" "gcc_override_configure=--with-fpu=vfpv3-d16" + "--set" "gcc_override_configure=--with-float=softfp" + ) + gcc_target_board_options+=( + "--set target_board_options={-marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp}" + ) + qemu_cpu+=(--qemu-cpu cortex-a9) + ;; + + tcwg_gnu_embed*/*-thumb_v8a_hard_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-arch=armv8-a+simd" + "--set" "gcc_override_configure=--with-fpu=crypto-neon-fp-armv8" + "--set" "gcc_override_configure=--with-float=hard" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv8-a+simd/-mfpu=auto/-mfloat-abi=hard}" + ) + # FIXME The most recent A-profile CPU known by qemu is + # cortex-a15, which is v7-a. Use "any" so that it + # supports v8-a instructions. + qemu_cpu+=(--qemu-cpu any) + ;; + + tcwg_gnu_embed*/*-thumb_m0_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-cpu=cortex-m0" + "--set" "gcc_override_configure=--with-float=soft" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv6s-m/-mtune=cortex-m0/-mfloat-abi=soft/-mfpu=auto}" + ) + qemu_cpu+=(--qemu-cpu cortex-m0) + ;; + + tcwg_gnu_embed*/*-thumb_m3_eabi) + # No v7-m variants support fp, so softfp is meaningless (though should work). + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-cpu=cortex-m3" + "--set" "gcc_override_configure=--with-float=softfp" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv7-m/-mtune=cortex-m3/-mfloat-abi=softfp/-mfpu=auto}" + ) + qemu_cpu+=(--qemu-cpu cortex-m3) + ;; + + tcwg_gnu_embed*/*-thumb_m7_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-cpu=cortex-m7" + "--set" "gcc_override_configure=--with-float=hard" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv7e-m+fp.dp/-mtune=cortex-m7/-mfloat-abi=hard/-mfpu=auto}" + ) + qemu_cpu+=(--qemu-cpu cortex-m7) + ;; + + tcwg_gnu_embed*/*-thumb_m23_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-cpu=cortex-m23" + "--set" "gcc_override_configure=--with-float=soft" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv8-m.base/-mtune=cortex-m23/-mfloat-abi=soft/-mfpu=auto}" + ) + # qemu does not support m23, use m33 as a superset (v8-m.base vs v8-m.main) + qemu_cpu+=(--qemu-cpu cortex-m33) + ;; + + tcwg_gnu_embed*/*-thumb_m33_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-cpu=cortex-m33" + "--set" "gcc_override_configure=--with-float=hard" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv8-m.main+dsp+fp/-mtune=cortex-m33/-mfloat-abi=hard/-mfpu=auto}" + ) + qemu_cpu+=(--qemu-cpu cortex-m33) + ;; + + tcwg_gnu_embed*/*-thumb_m55_hard_eabi) + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-mode=thumb" + "--set" "gcc_override_configure=--with-arch=armv8.1-m.main+mve.fp+fp.dp" + "--set" "gcc_override_configure=--with-float=hard" + ) + gcc_target_board_options+=( + "--set target_board_options={-mthumb/-march=armv8.1-m.main+mve.fp+fp.dp/-mtune=cortex-m55/-mfloat-abi=hard/-mfpu=auto}" + ) + qemu_cpu+=(--qemu-cpu cortex-m55) + ;; + esac +} |