On 2015/11/06 18:02, Remi Pointel wrote: > Hi, > > this is the latest version of cmocka.
This doesn't build on i386, /usr/obj/ports/cmocka-1.0.1/cmocka-1.0.1/include/cmocka.h:113: error: conflicting types for 'uintptr_t' /usr/include/sys/stdint.h:96: error: previous declaration of 'uintptr_t' was here I think the current cmocka.h patch to add the ifdef OpenBSD is unnecessary, what would be better is to change the __WORDSIZE ifdef in line 59, but that still leaves us with problems with the uintptr_t typedef (they #define guards used in stdint.h on some platforms, _UINTPTR_T_DEFINED and _UINTPTR_T, to avoid this... but we don't have a specific guard for uintptr_t definition). This is a bit dirty but should do the trick for now. Maybe upstream can come up with something nicer. Index: patches/patch-include_cmocka_h =================================================================== RCS file: /cvs/ports/devel/cmocka/patches/patch-include_cmocka_h,v retrieving revision 1.3 diff -u -p -r1.3 patch-include_cmocka_h --- patches/patch-include_cmocka_h 6 Nov 2015 20:58:48 -0000 1.3 +++ patches/patch-include_cmocka_h 7 Nov 2015 14:45:44 -0000 @@ -1,12 +1,33 @@ $OpenBSD: patch-include_cmocka_h,v 1.3 2015/11/06 20:58:48 rpointel Exp $ ---- include/cmocka.h.orig Sun Mar 1 10:31:52 2015 -+++ include/cmocka.h Fri Nov 6 17:32:22 2015 -@@ -112,6 +112,8 @@ typedef uintmax_t LargestIntegralType; - # else - typedef unsigned int uintptr_t; - # endif /* __WORDSIZE == 64 */ -+# elif defined(__OpenBSD__) -+ typedef unsigned long int uintptr_t; - # else /* __WORDSIZE */ - # if defined(_LP64) || defined(_I32LPx) - typedef unsigned long int uintptr_t; +--- include/cmocka.h.orig Sun Mar 1 02:31:52 2015 ++++ include/cmocka.h Sat Nov 7 07:44:28 2015 +@@ -56,7 +56,7 @@ int __stdcall IsDebuggerPresent(); + + /* If __WORDSIZE is not set, try to figure it out and default to 32 bit. */ + #ifndef __WORDSIZE +-# if defined(__x86_64__) && !defined(__ILP32__) ++# if defined(_LP64) + # define __WORDSIZE 64 + # else + # define __WORDSIZE 32 +@@ -96,8 +96,11 @@ typedef uintmax_t LargestIntegralType; + #define cast_to_largest_integral_type(value) \ + ((LargestIntegralType)(value)) + ++#if defined(__OpenBSD__) ++#include <sys/stdint.h> ++#else + /* Smallest integral type capable of holding a pointer. */ +-#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) ++#if !defined(_UINTPTR_T) && !defined(_UINTPTR_T_DEFINED) && !defined(_INTPTR_T_DEFINED) + # if defined(_WIN32) + /* WIN32 is an ILP32 platform */ + typedef unsigned int uintptr_t; +@@ -124,6 +127,7 @@ typedef uintmax_t LargestIntegralType; + # define _UINTPTR_T + # define _UINTPTR_T_DEFINED + #endif /* !defined(_UINTPTR_T) || !defined(_UINTPTR_T_DEFINED) */ ++#endif + + /* Perform an unsigned cast to uintptr_t. */ + #define cast_to_pointer_integral_type(value) \
