[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: cross-compilation guesses (9)
From: |
Bruno Haible |
Subject: |
Re: cross-compilation guesses (9) |
Date: |
Sat, 05 May 2012 11:37:58 +0200 |
User-agent: |
KMail/4.7.4 (Linux/3.1.10-1.9-desktop; KDE/4.7.4; x86_64; ; ) |
Eric Blake wrote:
> I'm pretty sure that glibc has always worked with strerror(0).
Yes. I've checked my build logs collection and find no indication of
a problem on a glibc platform.
Regarding strerror, there is also the suboptimal cross-compilation guess:
checking for working strerror function... guessing no
I'm applying this combined patch for both.
2012-05-05 Bruno Haible <address@hidden>
strerror: Avoid "guessing no" when cross-compiling to glibc systems.
* m4/strerror.m4 (gl_FUNC_STRERROR): Require AC_CANONICAL_HOST. When
cross-compiling to a glibc platform, set gl_cv_func_working_strerror
to "guessing yes".
(gl_FUNC_STRERROR_0): Require AC_CANONICAL_HOST. When cross-compiling
to a glibc platform, set gl_cv_func_strerror_0_works to "guessing yes".
--- m4/strerror.m4.orig Sat May 5 10:03:48 2012
+++ m4/strerror.m4 Sat May 5 09:47:49 2012
@@ -1,4 +1,4 @@
-# strerror.m4 serial 16
+# strerror.m4 serial 17
dnl Copyright (C) 2002, 2007-2012 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -9,6 +9,7 @@
AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
AC_REQUIRE([gl_HEADER_ERRNO_H])
AC_REQUIRE([gl_FUNC_STRERROR_0])
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
AC_REQUIRE([gl_FUNC_STRERROR_R_WORKS])
])
@@ -22,14 +23,22 @@
[[if (!*strerror (-2)) return 1;]])],
[gl_cv_func_working_strerror=yes],
[gl_cv_func_working_strerror=no],
- [dnl Be pessimistic on cross-compiles for now.
- gl_cv_func_working_strerror="guessing no"])
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_working_strerror="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_working_strerror="guessing no" ;;
+ esac
+ ])
])
- if test "$gl_cv_func_working_strerror" != yes; then
- dnl The system's strerror() fails to return a string for out-of-range
- dnl integers. Replace it.
- REPLACE_STRERROR=1
- fi
+ case "$gl_cv_func_working_strerror" in
+ *yes) ;;
+ *)
+ dnl The system's strerror() fails to return a string for out-of-range
+ dnl integers. Replace it.
+ REPLACE_STRERROR=1
+ ;;
+ esac
m4_ifdef([gl_FUNC_STRERROR_R_WORKS], [
dnl If the system's strerror_r or __xpg_strerror_r clobbers strerror's
dnl buffer, we must replace strerror.
@@ -48,6 +57,7 @@
dnl return a string that matches strerror(-1)).
AC_DEFUN([gl_FUNC_STRERROR_0],
[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
REPLACE_STRERROR_0=0
AC_CACHE_CHECK([whether strerror(0) succeeds],
[gl_cv_func_strerror_0_works],
@@ -67,12 +77,20 @@
return result;]])],
[gl_cv_func_strerror_0_works=yes],
[gl_cv_func_strerror_0_works=no],
- [dnl Be pessimistic on cross-compiles for now.
- gl_cv_func_strerror_0_works="guessing no"])
+ [case "$host_os" in
+ # Guess yes on glibc systems.
+ *-gnu*) gl_cv_func_strerror_0_works="guessing yes" ;;
+ # If we don't know, assume the worst.
+ *) gl_cv_func_strerror_0_works="guessing no" ;;
+ esac
+ ])
])
- if test "$gl_cv_func_strerror_0_works" != yes; then
- REPLACE_STRERROR_0=1
- AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0)
- does not return a message implying success.])
- fi
+ case "$gl_cv_func_strerror_0_works" in
+ *yes) ;;
+ *)
+ REPLACE_STRERROR_0=1
+ AC_DEFINE([REPLACE_STRERROR_0], [1], [Define to 1 if strerror(0)
+ does not return a message implying success.])
+ ;;
+ esac
])
- cross-compilation guesses (6), (continued)
- cross-compilation guesses (6), Bruno Haible, 2012/05/01
- cross-compilation guesses (7), Bruno Haible, 2012/05/01
- cross-compilation guesses (8), Bruno Haible, 2012/05/01
- cross-compilation guesses (9), Bruno Haible, 2012/05/01
- cross-compilation guesses (10), Bruno Haible, 2012/05/01
- cross-compilation guesses (11), Bruno Haible, 2012/05/05
- cross-compilation guesses (12), Bruno Haible, 2012/05/05
- cross-compilation guesses (13), Bruno Haible, 2012/05/05
- cross-compilation guesses (14), Bruno Haible, 2012/05/05
- cross-compilation guesses (15), Bruno Haible, 2012/05/05