Still no luck, with one or both patches. Greetings Michael 2017-06-26 14:47 GMT+02:00 Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx>: > > On Mon, Jun 26 2017, Michael Kebe jotted: > >> No luck with the patch. >> >> Still got: >> >> CC sha1dc/sha1.o >> sha1dc/sha1.c:43:58: error: operator '==' has no right operand >> (defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)) || \ >> ^ >> gmake: *** [sha1dc/sha1.o] Error 1 > > Does this patch change anything, with or without the previous patch: > > diff --git a/git-compat-util.h b/git-compat-util.h > index 047172d173..1327aea229 100644 > --- a/git-compat-util.h > +++ b/git-compat-util.h > @@ -131,6 +131,14 @@ > # else > # define _XOPEN_SOURCE 500 > # endif > + > +/* > + * Bring in macros defining _BIG_ENDIAN etc. Should be brought in by > + * the likes of stdio.h, but include it here in case it hasn't been > + * included already. > + */ > +#include <sys/isa_defs.h> > + > #elif !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__USLC__) && \ > !defined(_M_UNIX) && !defined(__sgi) && !defined(__DragonFly__) && \ > !defined(__TANDEM) && !defined(__QNX__) && !defined(__MirBSD__) && \ > >> >> Greetings >> Michael >> >> 2017-06-26 10:42 GMT+02:00 Ævar Arnfjörð Bjarmason <avarab@xxxxxxxxx>: >>> >>> On Mon, Jun 26 2017, Michael Kebe jotted: >>> >>>> When compiling 2.13.2 on Solaris SPARC I get this error: >>>> >>>> CC sha1dc/sha1.o >>>> sha1dc/sha1.c:41:58: error: operator '==' has no right operand >>>> #if ((defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)) || \ >>>> ^ >>>> gmake: *** [sha1dc/sha1.o] Error 1 >>>> >>>> The define _BIG_ENDIAN is set by Solaris on SPARC systems. So the >>>> check in line 41 gives this error. >>>> >>>> The _BIG_ENDIAN define is used few line below for defining >>>> SHA1DC_BIGENDIAN. This is needed for Solaris SPARC systems. >>>> See >>>> https://github.com/cr-marcstevens/sha1collisiondetection/commit/33a694a9ee1b79c24be45f9eab5ac0e1aeeaf271 >>> >>> I can see why this would error out. In sys/isa_defs.h on SPARC there's >>> just `#define _BIG_ENDIAN` >>> (http://src.illumos.org/source/xref/illumos-gate/usr/src/uts/common/sys/isa_defs.h), >>> and (on Linux): >>> >>> $ cat /tmp/test.c >>> #define _FOO >>> #define _BAR 1 >>> #if (_BAR == _FOO) >>> #endif >>> $ gcc -E /tmp/test.c >>> # 1 "/tmp/test.c" >>> # 1 "<built-in>" >>> # 1 "<command-line>" >>> # 31 "<command-line>" >>> # 1 "/usr/include/stdc-predef.h" 1 3 4 >>> # 32 "<command-line>" 2 >>> # 1 "/tmp/test.c" >>> /tmp/test.c:3:18: error: operator '==' has no right operand >>> #if (_BAR == _FOO) >>> >>> What I don't get is how this would have worked for Liam then (see >>> 20170613020939.gemh3m5z6czgwmzp@xxxxxxxxxx). Differences in Solaris >>> versions and how their headers look like? >>> >>> Does this patch fix it for you? >>> >>> diff --git a/sha1dc/sha1.c b/sha1dc/sha1.c >>> index facea1bb56..0b75b31b67 100644 >>> --- a/sha1dc/sha1.c >>> +++ b/sha1dc/sha1.c >>> @@ -36,9 +36,11 @@ >>> #undef SHA1DC_BIGENDIAN >>> #endif >>> >>> -#if (defined(_BYTE_ORDER) || defined(__BYTE_ORDER) || defined(__BYTE_ORDER__)) >>> +#if (defined(BYTE_ORDER) || defined(_BYTE_ORDER) || defined(__BYTE_ORDER) || \ >>> + defined(__BYTE_ORDER__)) >>> >>> -#if ((defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)) || \ >>> +#if ((defined(BYTE_ORDER) && (BYTE_ORDER == BIG_ENDIAN)) || \ >>> + (defined(_BYTE_ORDER) && (_BYTE_ORDER == _BIG_ENDIAN)) || \ >>> (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)) || \ >>> (defined(__BYTE_ORDER__) && (__BYTE_ORDER__ == __BIG_ENDIAN__)) ) >>> #define SHA1DC_BIGENDIAN >>> >>> I thought maybe BYTE_ORDER would work after searching the Illumos >>> sources a bit more: >>> http://src.illumos.org/source/search?q=BYTE_ORDER&project=illumos-gate >