aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKito Cheng <kito.cheng@sifive.com>2023-09-25 21:12:41 +0100
committerGitHub <noreply@github.com>2023-09-25 21:12:41 +0100
commitffb5968884630c7baebba7b2af493f6b5f74ad80 (patch)
tree19a85abe3617669b6e1455dd9e9c8b2eec7f700a
parent5437780994b830e9eabf467f85f22ed24b5fade1 (diff)
parent3b13360cef5daae42c0af45a38f682acbc6a8c87 (diff)
downloadriscv-gnu-toolchain-ffb5968884630c7baebba7b2af493f6b5f74ad80.zip
riscv-gnu-toolchain-ffb5968884630c7baebba7b2af493f6b5f74ad80.tar.gz
riscv-gnu-toolchain-ffb5968884630c7baebba7b2af493f6b5f74ad80.tar.bz2
Merge pull request #1293 from riscv-collab/extra-multi-lib-test2023.09.26
Add --with-extra-multilib-test option
-rw-r--r--Makefile.in8
-rw-r--r--README.md15
-rwxr-xr-xconfigure26
-rw-r--r--configure.ac10
4 files changed, 56 insertions, 3 deletions
diff --git a/Makefile.in b/Makefile.in
index 96ae4a4..27ecb14 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -69,6 +69,8 @@ endif
GLIBC_MULTILIB_NAMES := @glibc_multilib_names@
GCC_CHECKING_FLAGS := @gcc_checking@
+EXTRA_MULTILIB_TEST := @extra_multilib_test@
+
XLEN := $(shell echo $(WITH_ARCH) | tr A-Z a-z | sed 's/.*rv\([0-9]*\).*/\1/')
ifneq ($(XLEN),32)
XLEN := 64
@@ -91,12 +93,12 @@ GDB_NATIVE_FLAGS := $(GDB_NATIVE_FLAGS_EXTRA)
GLIBC_TARGET_FLAGS := $(GLIBC_TARGET_FLAGS_EXTRA)
GLIBC_CC_FOR_TARGET ?= $(LINUX_TUPLE)-gcc
GLIBC_CXX_FOR_TARGET ?= $(LINUX_TUPLE)-g++
-GLIBC_TARGET_BOARDS ?= $(shell echo "$(GLIBC_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
+GLIBC_TARGET_BOARDS ?= $(shell echo "$(GLIBC_MULTILIB_NAMES) $(EXTRA_MULTILIB_TEST)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
NEWLIB_CC_FOR_TARGET ?= $(NEWLIB_TUPLE)-gcc
NEWLIB_CXX_FOR_TARGET ?= $(NEWLIB_TUPLE)-g++
-NEWLIB_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
-NEWLIB_NANO_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim-nano/-march=\1/-mabi=\2/@cmodel@!g')
+NEWLIB_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES) $(EXTRA_MULTILIB_TEST)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim/-march=\1/-mabi=\2/@cmodel@!g')
+NEWLIB_NANO_TARGET_BOARDS ?= $(shell echo "$(NEWLIB_MULTILIB_NAMES) $(EXTRA_MULTILIB_TEST)" | sed 's!\([_a-z0-9]*\)-\([_a-z0-9]*\)!riscv-sim-nano/-march=\1/-mabi=\2/@cmodel@!g')
NEWLIB_CC_FOR_MULTILIB_INFO := $(NEWLIB_CC_FOR_TARGET)
MUSL_TARGET_FLAGS := $(MUSL_TARGET_FLAGS_EXTRA)
diff --git a/README.md b/README.md
index 3e757ab..62b173a 100644
--- a/README.md
+++ b/README.md
@@ -246,6 +246,21 @@ The command below can be used to run the glibc tests:
make check-glibc-linux
+##### Adding more arch/abi combination for testing without introducing multilib
+
+`--with-extra-multilib-test` can be used when you want to test more combination
+of arch/ABI, for example: built a linux toolchain with multilib with
+`rv64gc/lp64d` and `rv64imac/lp64`, but you want to test more configuration like
+`rv64gcv/lp64d` or `rv64gcv_zba/lp64d`, then you can use --with-extra-multilib-test
+to specify that via `--with-extra-multilib-test="rv64gcv-lp64d;rv64gcv_zba-lp64d"`,
+then the testing will run for `rv64gc/lp64d`, `rv64imac/lp64`, `rv64gcv/lp64d`
+and `rv64gcv_zba/lp64d`.
+
+`--with-extra-multilib-test` support bare-metal and linux toolchain and support
+even multilib is disable, but the user must ensure extra multilib test
+configuration can be work with existing lib/multilib, e.g. rv32gcv/ilp32 test
+can't work if multilib didn't have any rv32 multilib.
+
### LLVM / clang
LLVM can be used in combination with the RISC-V GNU Compiler Toolchain
diff --git a/configure b/configure
index c7f09bc..e36b214 100755
--- a/configure
+++ b/configure
@@ -611,6 +611,7 @@ musl_multilib_names
newlib_multilib_names
glibc_multilib_names
multilib_flags
+extra_multilib_test
multilib_gen
WITH_SIM
WITH_ISA_SPEC
@@ -686,6 +687,7 @@ with_isa_spec
with_sim
enable_multilib
with_multilib_generator
+with_extra_multilib_test
enable_gcc_checking
with_cmodel
with_target_cflags
@@ -1355,6 +1357,13 @@ Optional Packages:
Multi-libs configuration string, only supported for
bare-metal/elf toolchain, this option implied
--enable-multilib
+ --with-extra-multilib-test
+ Adding extra multi-libs configuration for testing,
+ this can be use even --disable-multilib, but be
+ aware user need to make sure those extra multilib
+ set can work/compatible with existing multi-libs,
+ format: <arch>-<abi>;<arch>-<abi> e.g:
+ --with-extra-multilib-test="rv64gcv-lp64;rv64gcv_zba-lp64"
--with-cmodel Select the code model to use when building libc and
libgcc [--with-cmodel=medlow]
--with-target-cflags Add extra target flags for C for library code
@@ -3420,6 +3429,16 @@ else
fi
+
+# Check whether --with-extra-multilib-test was given.
+if test "${with_extra_multilib_test+set}" = set; then :
+ withval=$with_extra_multilib_test;
+else
+ with_extra_multilib_test=no
+
+fi
+
+
if test "x$with_multilib_generator" != xno; then :
multilib_gen="$with_multilib_generator"
@@ -3428,6 +3447,13 @@ else
fi
+if test "x$with_extra_multilib_test" != xno; then :
+ extra_multilib_test="$with_extra_multilib_test"
+
+else
+ extra_multilib_test=""
+
+fi
if test "x$enable_multilib" != xno || test "x$with_multilib_generator" != xno; then :
multilib_flags=--enable-multilib
diff --git a/configure.ac b/configure.ac
index 33e00f6..1756fde 100644
--- a/configure.ac
+++ b/configure.ac
@@ -134,10 +134,20 @@ AC_ARG_WITH(multilib-generator,
[with_multilib_generator=no]
)
+AC_ARG_WITH(extra-multilib-test,
+ [AS_HELP_STRING([--with-extra-multilib-test],
+ [Adding extra multi-libs configuration for testing, this can be use even --disable-multilib, but be aware user need to make sure those extra multilib set can work/compatible with existing multi-libs, format: <arch>-<abi>;<arch>-<abi> e.g: --with-extra-multilib-test="rv64gcv-lp64;rv64gcv_zba-lp64"])],
+ [],
+ [with_extra_multilib_test=no]
+ )
+
AS_IF([test "x$with_multilib_generator" != xno],
[AC_SUBST(multilib_gen,"$with_multilib_generator")],
[AC_SUBST(multilib_gen,"")])
+AS_IF([test "x$with_extra_multilib_test" != xno],
+ [AC_SUBST(extra_multilib_test,"$with_extra_multilib_test")],
+ [AC_SUBST(extra_multilib_test,"")])
AS_IF([test "x$enable_multilib" != xno || test "x$with_multilib_generator" != xno],
[AC_SUBST(multilib_flags,--enable-multilib)],