- Issue #14324: Fix configure tests for cross builds.

when using gcc, use a compilation test for the cross build check for long long format.
This commit is contained in:
Matthias Klose 2012-03-15 19:31:06 +01:00
parent 93a0ef16c9
commit 3b739b149b
3 changed files with 49 additions and 2 deletions

View File

@ -111,6 +111,8 @@ Build
- Issue #14321: Do not run pgen during the build if files are up to date. - Issue #14321: Do not run pgen during the build if files are up to date.
- Issue #14324: Fix configure tests for cross builds.
Extension Modules Extension Modules
----------------- -----------------

31
configure vendored
View File

@ -13805,7 +13805,36 @@ $as_echo_n "checking for %lld and %llu printf() format support... " >&6; }
$as_echo_n "(cached) " >&6 $as_echo_n "(cached) " >&6
else else
if test "$cross_compiling" = yes; then : if test "$cross_compiling" = yes; then :
ac_cv_have_long_long_format=no ac_cv_have_long_long_format="cross -- assuming no"
if test x$GCC = xyes; then
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -Wformat"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdio.h>
#include <stddef.h>
int
main ()
{
char *buffer;
sprintf(buffer, "%lld", (long long)123);
sprintf(buffer, "%lld", (long long)-123);
sprintf(buffer, "%llu", (unsigned long long)123);
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
ac_cv_have_long_long_format=yes
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
CFLAGS=$save_CFLAGS
fi
else else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */ /* end confdefs.h. */

View File

@ -4128,7 +4128,23 @@ then
]]])], ]]])],
[ac_cv_have_long_long_format=yes], [ac_cv_have_long_long_format=yes],
[ac_cv_have_long_long_format=no], [ac_cv_have_long_long_format=no],
[ac_cv_have_long_long_format=no]) [ac_cv_have_long_long_format="cross -- assuming no"
if test x$GCC = xyes; then
save_CFLAGS=$CFLAGS
CFLAGS="$CFLAGS -Werror -Wformat"
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
#include <stdio.h>
#include <stddef.h>
]], [[
char *buffer;
sprintf(buffer, "%lld", (long long)123);
sprintf(buffer, "%lld", (long long)-123);
sprintf(buffer, "%llu", (unsigned long long)123);
]])],
ac_cv_have_long_long_format=yes
)
CFLAGS=$save_CFLAGS
fi])
) )
AC_MSG_RESULT($ac_cv_have_long_long_format) AC_MSG_RESULT($ac_cv_have_long_long_format)
fi fi