diff options
author | Christophe Lyon <christophe.lyon@linaro.org> | 2023-07-05 16:11:39 +0000 |
---|---|---|
committer | Christophe Lyon <christophe.lyon@linaro.org> | 2023-07-07 07:24:27 +0000 |
commit | 40246dd82d11d9cc71829e9193baf1cf1fdccc34 (patch) | |
tree | 0a00839af8c546968e1d1adf4df1e0b73e27472e | |
parent | e8ad862c4fa3cc6c4cd1a378d37f3aab564a7763 (diff) |
tcwg_gnu-build.sh: Add support for tcw_gnu_embed* arm_v7a_softfp_eabi
The string arm_v7a_softfp is a shortcut to mean testing an arm-eabi toolchain with:
-marm -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp
We could build the toolchain with the default configuration flags, but
that would mean building a lot of useless multilibs, since we want to
force the above flags when running the tests.
So we also configure & build GCC with
--disable-multilib --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-mode=arm --with-float=softfp
Change-Id: Ieb6c40ad56a3ae3795ad5a74faeb5d0add16a977
-rw-r--r-- | jenkins-helpers.sh | 2 | ||||
-rw-r--r-- | round-robin.sh | 2 | ||||
-rwxr-xr-x | tcwg_gnu-build.sh | 47 |
3 files changed, 44 insertions, 7 deletions
diff --git a/jenkins-helpers.sh b/jenkins-helpers.sh index 5e9d63bd..9936b9f7 100644 --- a/jenkins-helpers.sh +++ b/jenkins-helpers.sh @@ -1451,7 +1451,7 @@ print_gnu_target () case "$target" in "aarch64") target="aarch64-linux-gnu" ;; - "arm_eabi") target="arm-eabi" ;; + arm*_eabi) target="arm-eabi" ;; "arm"*) target="arm-linux-gnueabihf" ;; "woa64") target="aarch64-w64-mingw32" ;; "x86_64") target="x86_64-linux-gnu" ;; diff --git a/round-robin.sh b/round-robin.sh index 52681813..a52fca79 100644 --- a/round-robin.sh +++ b/round-robin.sh @@ -501,7 +501,7 @@ build_abe () # Don't build Go, which has a funky and unstable testsuite. # Stage1 ignores "--set languages=" option, so this applies only # to stage2 builds. - # Do no build fortran for bare-metal configurations + # Do not build fortran for bare-metal configurations case "${rr[ci_project]}" in *embed*) stage="$stage --set languages=c,c++,lto" diff --git a/tcwg_gnu-build.sh b/tcwg_gnu-build.sh index 06abd8f4..1fe44873 100755 --- a/tcwg_gnu-build.sh +++ b/tcwg_gnu-build.sh @@ -308,13 +308,44 @@ tcwg_gnu_breakup_changed_components () } rr[breakup_changed_components]=tcwg_gnu_breakup_changed_components +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_softfp_eabi") + gcc_override_configure+=( + "--set" "gcc_override_configure=--disable-multilib" + "--set" "gcc_override_configure=--with-arch=armv7-a" + "--set" "gcc_override_configure=--with-fpu=vfpv3-d16" + "--set" "gcc_override_configure=--with-mode=arm" + "--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) + ;; + esac +esac + run_step stop_on_fail -10 reset_artifacts run_step stop_on_fail x prepare_abe case "${rr[ci_project]}" in tcwg_gnu_cross_build|tcwg_gnu_embed_build) run_step skip_on_fail 0 true run_step skip_on_fail 1 build_abe binutils - run_step skip_on_fail 2 build_abe stage1 + run_step skip_on_fail 2 build_abe stage1 -- \ + "${gcc_override_configure[@]}" run_step skip_on_fail x clean_sysroot case "${rr[components]}" in *glibc*) @@ -325,13 +356,15 @@ case "${rr[ci_project]}" in run_step skip_on_fail 4 build_abe newlib ;; esac - run_step skip_on_fail 5 build_abe stage2 + run_step skip_on_fail 5 build_abe stage2 -- \ + "${gcc_override_configure[@]}" run_step skip_on_fail 6 build_abe gdb run_step skip_on_fail 7 build_abe qemu ;; tcwg_gnu_cross_check_*|tcwg_gnu_embed_check_*) run_step skip_on_fail -8 build_abe binutils - run_step skip_on_fail -7 build_abe stage1 + run_step skip_on_fail -7 build_abe stage1 -- \ + "${gcc_override_configure[@]}" run_step skip_on_fail x clean_sysroot case "${rr[components]}" in *glibc*) @@ -342,11 +375,15 @@ case "${rr[ci_project]}" in run_step skip_on_fail -5 build_abe newlib ;; esac - run_step skip_on_fail -4 build_abe stage2 + run_step skip_on_fail -4 build_abe stage2 -- \ + "${gcc_override_configure[@]}" run_step skip_on_fail -3 build_abe gdb run_step skip_on_fail -2 build_abe qemu run_step skip_on_fail -1 build_abe dejagnu - run_step skip_on_fail 0 build_abe "check_${rr[ci_project]#*check_}" -- "${runtestflags[@]}" + run_step skip_on_fail 0 build_abe "check_${rr[ci_project]#*check_}" -- "${runtestflags[@]}" \ + "${gcc_override_configure[@]}" \ + "${gcc_target_board_options[@]}" \ + "${qemu_cpu[@]}" ;; tcwg_gnu_native_build) run_step skip_on_fail 0 true |