[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
support for universal binaries on MacOS X (6/6)
From: |
Bruno Haible |
Subject: |
support for universal binaries on MacOS X (6/6) |
Date: |
Thu, 25 Dec 2008 20:30:38 +0100 |
User-agent: |
KMail/1.9.9 |
Jim,
The nanosleep test is similar. Here is a proposed patch. (Most of the patch
is adding indentation.)
2008-12-25 Bruno Haible <address@hidden>
* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Require gl_MULTIARCH. In Apple
universal builds, assume that nanosleep does not work.
* modules/nanosleep (Depends-on): Add multiarch.
--- m4/nanosleep.m4.orig 2008-12-25 20:26:15.000000000 +0100
+++ m4/nanosleep.m4 2008-12-25 19:09:40.000000000 +0100
@@ -1,4 +1,4 @@
-#serial 25
+#serial 26
dnl From Jim Meyering.
dnl Check for the nanosleep function.
@@ -17,6 +17,8 @@
dnl Persuade glibc and Solaris <time.h> to declare nanosleep.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_MULTIARCH])
+
AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
AC_REQUIRE([gl_CLOCK_TIME])
AC_CHECK_HEADERS_ONCE(sys/time.h)
@@ -32,59 +34,67 @@
AC_CACHE_CHECK([for working nanosleep],
[gl_cv_func_nanosleep],
[
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
- #include <errno.h>
- #include <limits.h>
- #include <signal.h>
- #if HAVE_SYS_TIME_H
- #include <sys/time.h>
- #endif
- #include <time.h>
- #include <unistd.h>
- #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
- #define TYPE_MAXIMUM(t) \
- ((t) (! TYPE_SIGNED (t) \
- ? (t) -1 \
- : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
-
- static void
- check_for_SIGALRM (int sig)
- {
- if (sig != SIGALRM)
- _exit (1);
- }
-
- int
- main ()
- {
- static struct timespec ts_sleep;
- static struct timespec ts_remaining;
- static struct sigaction act;
- if (! nanosleep)
- return 1;
- act.sa_handler = check_for_SIGALRM;
- sigemptyset (&act.sa_mask);
- sigaction (SIGALRM, &act, NULL);
- ts_sleep.tv_sec = 0;
- ts_sleep.tv_nsec = 1;
- alarm (1);
- if (nanosleep (&ts_sleep, NULL) != 0)
- return 1;
- ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
- ts_sleep.tv_nsec = 999999999;
- alarm (1);
- if (nanosleep (&ts_sleep, &ts_remaining) == -1 && errno == EINTR
- && TYPE_MAXIMUM (time_t) - 10 < ts_remaining.tv_sec)
- return 0;
- return 119;
- }]])],
- [gl_cv_func_nanosleep=yes],
- [case $? in dnl (
- 119) gl_cv_func_nanosleep='no (mishandles large arguments)';; dnl (
- *) gl_cv_func_nanosleep=no;;
- esac],
- [gl_cv_func_nanosleep=cross-compiling])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+ #include <errno.h>
+ #include <limits.h>
+ #include <signal.h>
+ #if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #include <unistd.h>
+ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
+ #define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+ static void
+ check_for_SIGALRM (int sig)
+ {
+ if (sig != SIGALRM)
+ _exit (1);
+ }
+
+ int
+ main ()
+ {
+ static struct timespec ts_sleep;
+ static struct timespec ts_remaining;
+ static struct sigaction act;
+ if (! nanosleep)
+ return 1;
+ act.sa_handler = check_for_SIGALRM;
+ sigemptyset (&act.sa_mask);
+ sigaction (SIGALRM, &act, NULL);
+ ts_sleep.tv_sec = 0;
+ ts_sleep.tv_nsec = 1;
+ alarm (1);
+ if (nanosleep (&ts_sleep, NULL) != 0)
+ return 1;
+ ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
+ ts_sleep.tv_nsec = 999999999;
+ alarm (1);
+ if (nanosleep (&ts_sleep, &ts_remaining) == -1 && errno == EINTR
+ && TYPE_MAXIMUM (time_t) - 10 < ts_remaining.tv_sec)
+ return 0;
+ return 119;
+ }]])],
+ [gl_cv_func_nanosleep=yes],
+ [case $? in dnl (
+ 119) gl_cv_func_nanosleep='no (mishandles large arguments)';; dnl (
+ *) gl_cv_func_nanosleep=no;;
+ esac],
+ [gl_cv_func_nanosleep=cross-compiling])
+ else
+ # A universal build on Apple MacOS X platforms.
+ # The test result would be 'no (mishandles large arguments)' in 64-bit
mode
+ # but 'yes' in 32-bit mode. But we need a configuration result that is
+ # valid in both modes.
+ gl_cv_func_nanosleep='no (mishandles large arguments)'
+ fi
])
if test "$gl_cv_func_nanosleep" = yes; then
REPLACE_NANOSLEEP=0
--- modules/nanosleep.orig 2008-12-25 20:26:15.000000000 +0100
+++ modules/nanosleep 2008-12-25 19:05:53.000000000 +0100
@@ -9,6 +9,7 @@
clock-time
extensions
gettime
+multiarch
sigaction
stdbool
sys_select
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- support for universal binaries on MacOS X (6/6),
Bruno Haible <=