diff options
Diffstat (limited to 'configure')
-rwxr-xr-x | configure | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -393,6 +393,27 @@ test "$ARCH" = "microblaze" && trycppif __MICROBLAZEEL__ "$t" \ test "$SUBARCH" \ && printf "configured for %s variant: %s\n" "$ARCH" "$ARCH$SUBARCH" +# +# Some archs (powerpc) have different possible long double formats +# that the compiler can be configured for. The logic for whether this +# is supported is in bits/float.h; in general, it is not. We need to +# check for mismatches here or code in printf, strotd, and scanf will +# be dangerously incorrect because it depends on (1) the macros being +# correct, and (2) IEEE semantics. +# +printf "checking whether compiler's long double definition matches float.h... " +echo '#include <float.h>' > "$tmpc" +echo '#if LDBL_MANT_DIG == 53' >> "$tmpc" +echo 'typedef char ldcheck[9-(int)sizeof(long double)];' >> "$tmpc" +echo '#endif' >> "$tmpc" +if $CC $CFLAGS_C99FSE -I./arch/$ARCH -I./include $CPPFLAGS $CFLAGS \ + -c -o /dev/null "$tmpc" >/dev/null 2>&1 ; then +printf "yes\n" +else +printf "no\n" +fail "$0: error: unsupported long double type" +fi + printf "creating config.mak... " exec 3>&1 1>config.mak |