summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristophe Lyon <christophe.lyon@linaro.org>2023-09-13 13:37:43 +0000
committerChristophe Lyon <christophe.lyon@linaro.org>2023-09-19 12:58:33 +0000
commitde4cfe2e7675296e27cf3ee6df4f519f8e7d734a (patch)
tree466588e3dcb98897a1914c47676d7d380193408f
parent4de03c17a930db8105e23d0447aab4ccaf469164 (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-xtcwg_gnu-build.sh144
-rw-r--r--tcwg_gnu-config.sh149
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
+}