On 04/19/10 Jonathan Pryor wrote: > Index: mono/io-layer/collection.c > =================================================================== > --- mono/io-layer/collection.c (revision 155735) > +++ mono/io-layer/collection.c (working copy) > @@ -58,7 +58,10 @@ > ret = pthread_attr_init (&attr); > g_assert (ret == 0); > > -#ifdef HAVE_PTHREAD_ATTR_SETSTACKSIZE > +/* Android implements pthread_attr_setstacksize(), but errors out when using > + * PTHREAD_STACK_MIN: http://code.google.com/p/android/issues/detail?id=7808 > + */ > +#if defined(HAVE_PTHREAD_ATTR_SETSTACKSIZE) && !defined(PLATFORM_ANDROID) > if (set_stacksize == 0) { > #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) > ret = pthread_attr_setstacksize (&attr, 65536);
Instead of adding more checks there, just change the code to do: ret = pthread_attr_setstacksize (&attr, MAX (65536, PTHREAD_STACK_MIN)); > Index: mono/io-layer/mono-mutex.c > =================================================================== > --- mono/io-layer/mono-mutex.c (revision 155735) > +++ mono/io-layer/mono-mutex.c (working copy) > @@ -22,11 +22,24 @@ > > > #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK > +/* Android does not implement pthread_mutex_timedlock(), but does provide an > + * unusual declaration: > http://code.google.com/p/android/issues/detail?id=7807 > + */ > +#if defined(PLATFORM_ANDROID) > int pthread_mutex_timedlock (pthread_mutex_t *mutex, > + struct timespec *timeout); > +#else > +int pthread_mutex_timedlock (pthread_mutex_t *mutex, > const struct timespec *timeout); > +#endif Just do this at the start: #ifdef PLATFORM_ANDROID #define CONST_NEEDED const #else #define CONST_NEEDED const #endif And then insert CONST_NEEDED where appropriate instead of the ugly duplication and ifdef mess. > Index: mono/mini/exceptions-arm.c > =================================================================== > --- mono/mini/exceptions-arm.c (revision 155735) > +++ mono/mini/exceptions-arm.c (working copy) > @@ -12,7 +12,11 @@ > #include <glib.h> > #include <signal.h> > #include <string.h> > +#if defined(PLATFORM_ANDROID) > +#include <asm/sigcontext.h> > +#else > #include <ucontext.h> > +#endif Please make sure configure has the appropriate header checks and use: #ifdef HAVE_ASM_SIGCONTEXT_H #include <asm/sigcontext.h> #endif #ifdef HAVE_UCONTEXT_H #include <ucontext.h> #endif We must use feature checks and not platform checks as much as possible. lupus -- ----------------------------------------------------------------- lu...@debian.org debian/rules lu...@ximian.com Monkeys do it better _______________________________________________ Mono-devel-list mailing list Mono-devel-list@lists.ximian.com http://lists.ximian.com/mailman/listinfo/mono-devel-list