ARM: improve VFP ABI check
Recent gcc versions define __ARM_PCS or __ARM_PCS_VFP to indicate the VFP ABI in use, and ARM RVCT defines __SOFTFP__ when using this ABI. If none of these are defined, check $cross_prefix and $cc for the substring "hardfloat", and finally fall back to a linker test. This gives the correct result in most configurations.
This commit is contained in:
10
configure
vendored
10
configure
vendored
@@ -2526,10 +2526,18 @@ elif enabled arm; then
|
|||||||
check_cflags -marm
|
check_cflags -marm
|
||||||
nogas=die
|
nogas=die
|
||||||
|
|
||||||
check_ld <<EOF && enable vfp_args
|
if check_cpp_condition stddef.h "defined __ARM_PCS_VFP"; then
|
||||||
|
enable vfp_args
|
||||||
|
elif ! check_cpp_condition stddef.h "defined __ARM_PCS || defined __SOFTFP__"; then
|
||||||
|
case "${cross_prefix:-$cc}" in
|
||||||
|
*hardfloat*) enable vfp_args; fpabi=vfp ;;
|
||||||
|
*) check_ld <<EOF && enable vfp_args && fpabi=vfp || fpabi=soft ;;
|
||||||
__asm__ (".eabi_attribute 28, 1");
|
__asm__ (".eabi_attribute 28, 1");
|
||||||
int main(void) { return 0; }
|
int main(void) { return 0; }
|
||||||
EOF
|
EOF
|
||||||
|
esac
|
||||||
|
warn "Compiler does not indicate floating-point ABI, guessing $fpabi."
|
||||||
|
fi
|
||||||
|
|
||||||
# We have to check if pld is a nop and disable it.
|
# We have to check if pld is a nop and disable it.
|
||||||
check_asm pld '"pld [r0]"'
|
check_asm pld '"pld [r0]"'
|
||||||
|
Reference in New Issue
Block a user