Jonathan Gray <j...@jsg.id.au> writes: > On Mon, Dec 28, 2015 at 01:27:50AM +0100, Jrmie Courrges-Anglas wrote: >> Stuart Henderson <st...@openbsd.org> writes: >> >> > On 2015/12/21 17:21, Jonathan Gray wrote: >> >> Waffle is another library along the lines of GLUT that provides a way to >> >> select a windowing system and api for OpenGL. >> >> >> >> This is primarily of interest for using the piglit OpenGL tests as >> >> Waffle is required for testing OpenGL ES. >> > >> > This fails on i386 (and presumably other 32-bit arch), ports/devel/cmocka >> > already has a patch for this situation, but the file in the version of >> > cmocka that is bundled with waffle is a bit different, I don't really >> > have time to unpick it at the moment. >> >> Here's a backport of the cmocka fix (modulo sys/stdin.h -> stdint.h). >> Builds fine on i386. >> >> (That cmocka header is damn ugly...) >> >> $OpenBSD$ >> >> Avoid a conflicting typedef on 32-bit arch. >> >> --- third_party/cmocka/include/cmocka.h.orig Mon Dec 28 01:20:04 2015 >> +++ third_party/cmocka/include/cmocka.h Mon Dec 28 01:23:28 2015 >> @@ -81,6 +81,9 @@ int __stdcall IsDebuggerPresent(); >> #define cast_to_largest_integral_type(value) \ >> ((LargestIntegralType)((size_t)(value))) >> >> +#if defined(__OpenBSD__) >> +#include <stdint.h> >> +#else >> /* Smallest integral type capable of holding a pointer. */ >> #if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) >> # if defined(_WIN32) >> @@ -109,6 +112,7 @@ int __stdcall IsDebuggerPresent(); >> # define _UINTPTR_T >> # define _UINTPTR_T_DEFINED >> #endif /* !defined(_UINTPTR_T) || !defined(_UINTPTR_T_DEFINED) */ >> +#endif /* !defined(__OpenBSD__) */ >> >> /* Perform an unsigned cast to uintptr_t. */ >> #define cast_to_pointer_integral_type(value) \ > > I wonder if we should instead have a uintptr_t define in stdint.h > and add !defined(_UINTPTR_T_DEFINED_) ?
Well, that may "solve" the cmocka problem and would be consistent with its signed counterpart. But "_UINTPTR_T_DEFINED_" doesn't seem to exist anywhere outside of that cmocka.h header. cmocka builds on glibc/solaris rely on implementation details. IMHO an ugly ifdef __OpenBSD__ in the ports tree is better than hiding problems by relying on implementation details. Maybe we can propose a better diff upstream (eg rely on stdint.h); I'm volunteering. In the meantime, I'd rather use the same patch as in devel/cmocka. > Index: stdint.h > =================================================================== > RCS file: /cvs/src/sys/sys/stdint.h,v > retrieving revision 1.10 > diff -u -p -U7 -r1.10 stdint.h > --- stdint.h 30 Apr 2015 18:19:25 -0000 1.10 > +++ stdint.h 28 Dec 2015 02:26:09 -0000 > @@ -89,15 +89,18 @@ typedef __uint_fast64_t uint_fast64_t; > > /* 7.18.1.4 Integer types capable of holding object pointers */ > #ifndef _INTPTR_T_DEFINED_ > #define _INTPTR_T_DEFINED_ > typedef __intptr_t intptr_t; > #endif > > +#ifndef _UINTPTR_T_DEFINED_ > +#define _UINTPTR_T_DEFINED_ > typedef __uintptr_t uintptr_t; > +#endif > > /* 7.18.1.5 Greatest-width integer types */ > typedef __intmax_t intmax_t; > typedef __uintmax_t uintmax_t; > > /* > * 7.18.2 Limits of specified-width integer types. > -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE