Skip to content

Commit cff8232

Browse files
authored
Do not build AArch64a soft no_fp variants using llvm-libc (#592)
LLVM-libc does not currently support no-neon soft float on AArch64 targets. To prevent building these until support is available, this patch adds an option to explicitly set which C libraries a variant can be built with. If the option is absent, the default is to build with all library options.
1 parent 8139c96 commit cff8232

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

arm-multilib/CMakeLists.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,15 @@ foreach(lib_idx RANGE ${lib_count_dec})
143143
string(JSON variant GET ${lib_def} "variant")
144144
set(additional_cmake_args "")
145145

146+
# If a variant doesn't support all possible C library
147+
# options, check if it should be skipped.
148+
string(JSON variant_support ERROR_VARIABLE json_error GET ${lib_def} "libraries_supported")
149+
if(NOT variant_support STREQUAL "libraries_supported-NOTFOUND")
150+
if(NOT C_LIBRARY IN_LIST variant_support)
151+
continue()
152+
endif()
153+
endif()
154+
146155
if(variant IN_LIST ENABLE_VARIANTS OR ENABLE_VARIANTS STREQUAL "all")
147156
string(JSON variant_multilib_flags GET ${lib_def} "flags")
148157
# Placeholder libraries won't have a json, so store the error in

arm-multilib/json/multilib.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,26 @@
3333
{
3434
"variant": "aarch64a_soft_nofp",
3535
"json": "aarch64a_soft_nofp.json",
36-
"flags": "--target=aarch64-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft -fno-exceptions -fno-rtti"
36+
"flags": "--target=aarch64-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft -fno-exceptions -fno-rtti",
37+
"libraries_supported": "picolibc,newlib"
3738
},
3839
{
3940
"variant": "aarch64a_be_soft_nofp",
4041
"json": "aarch64a_be_soft_nofp.json",
41-
"flags": "--target=aarch64_be-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft -fno-exceptions -fno-rtti"
42+
"flags": "--target=aarch64_be-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft -fno-exceptions -fno-rtti",
43+
"libraries_supported": "picolibc,newlib"
4244
},
4345
{
4446
"variant": "aarch64a_soft_nofp_exn_rtti",
4547
"json": "aarch64a_soft_nofp_exn_rtti.json",
46-
"flags": "--target=aarch64-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft"
48+
"flags": "--target=aarch64-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft",
49+
"libraries_supported": "picolibc,newlib"
4750
},
4851
{
4952
"variant": "aarch64a_be_soft_nofp_exn_rtti",
5053
"json": "aarch64a_be_soft_nofp_exn_rtti.json",
51-
"flags": "--target=aarch64_be-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft"
54+
"flags": "--target=aarch64_be-unknown-none-elf -march=armv8-a+nofp+nosimd -mabi=aapcs-soft",
55+
"libraries_supported": "picolibc,newlib"
5256
},
5357

5458
{

0 commit comments

Comments
 (0)