From 3b739b149b4bdb85ed593b0d0a0c9d2790dbd988 Mon Sep 17 00:00:00 2001 From: Matthias Klose Date: Thu, 15 Mar 2012 19:31:06 +0100 Subject: [PATCH] - Issue #14324: Fix configure tests for cross builds. when using gcc, use a compilation test for the cross build check for long long format. --- Misc/NEWS | 2 ++ configure | 31 ++++++++++++++++++++++++++++++- configure.ac | 18 +++++++++++++++++- 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index d41a2b4e41..9bc74d1205 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -111,6 +111,8 @@ Build - 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 ----------------- diff --git a/configure b/configure index a71e128cbf..8f5845dbfc 100755 --- a/configure +++ b/configure @@ -13805,7 +13805,36 @@ $as_echo_n "checking for %lld and %llu printf() format support... " >&6; } $as_echo_n "(cached) " >&6 else 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 + #include + +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 cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ diff --git a/configure.ac b/configure.ac index a38a5ccf4f..2bcbedfec6 100644 --- a/configure.ac +++ b/configure.ac @@ -4128,7 +4128,23 @@ then ]]])], [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="cross -- assuming no" + if test x$GCC = xyes; then + save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS -Werror -Wformat" + AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ + #include + #include + ]], [[ + 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) fi -- 2.50.1