On 30/10/13 20:30, Torsten Bögershausen wrote: > On 2013-10-30 20.06, Ramsay Jones wrote: >> On 30/10/13 17:14, Torsten Bögershausen wrote: >>> On 2013-10-30 18.01, Vicent Martí wrote: >>>> On Wed, Oct 30, 2013 at 5:51 PM, Torsten Bögershausen <tboegi@xxxxxx> wrote: >>>>> There is a name clash under cygwin 1.7 (1.5 is OK) >>>>> The following "first aid hot fix" works for me: >>>>> /Torsten >>>> >>>> If Cygwin declares its own bswap_64, wouldn't it be better to use it >>>> instead of overwriting it with our own? >>> Yes, >>> this will be part of a longer patch. >>> I found that some systems have something like this: >>> >>> #define htobe64(x) bswap_64(x) >>> And bswap_64 is a function, so we can not detect it by "asking" >>> #ifdef bswap_64 >>> .. >>> #endif >>> >>> >>> But we can use >>> #ifdef htobe64 >>> ... >>> #endif >>> and this will be part of a bigger patch. >>> >>> And, in general, we should avoid to introduce functions which may have a >>> name clash. >>> Using the git_ prefix for function names is a good practice. >>> So in order to unbrake the compilation error under cygwin 17, >>> the "hotfix" can be used. >> >> heh, my patch (given below) took a different approach, but .... >> >> ATB, >> Ramsay Jones >> >> -- >8 -- >> Subject: [PATCH] compat/bswap.h: Fix redefinition of bswap_64 error on cygwin >> MIME-Version: 1.0 >> Content-Type: text/plain; charset=UTF-8 >> Content-Transfer-Encoding: 8bit >> >> Since commit 452e0f20 ("compat: add endianness helpers", 24-10-2013) >> the cygwin build has failed like so: >> >> GIT_VERSION = 1.8.4.1.804.g1f3748b >> * new build flags >> CC credential-store.o >> In file included from git-compat-util.h:305:0, >> from cache.h:4, >> from credential-store.c:1: >> compat/bswap.h:67:24: error: redefinition of 'bswap_64' >> In file included from /usr/include/endian.h:32:0, >> from /usr/include/cygwin/types.h:21, >> from /usr/include/sys/types.h:473, >> from /usr/include/sys/unistd.h:9, >> from /usr/include/unistd.h:4, >> from git-compat-util.h:98, >> from cache.h:4, >> from credential-store.c:1: >> /usr/include/byteswap.h:31:1: note: previous definition of \ >> ‘bswap_64’ was here >> Makefile:1985: recipe for target 'credential-store.o' failed >> make: *** [credential-store.o] Error 1 >> >> Note that cygwin has a defintion of 'bswap_64' in the <byteswap.h> >> header file (which had already been included by git-compat-util.h). >> In order to suppress the error, ensure that the <byteswap.h> header >> is included, just like the __GNUC__/__GLIBC__ case, rather than >> attempting to define a fallback implementation. >> >> Signed-off-by: Ramsay Jones <ramsay@xxxxxxxxxxxxxxxxxxx> >> --- >> compat/bswap.h | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/compat/bswap.h b/compat/bswap.h >> index ea1a9ed..b864abd 100644 >> --- a/compat/bswap.h >> +++ b/compat/bswap.h >> @@ -61,7 +61,7 @@ static inline uint32_t git_bswap32(uint32_t x) >> # define ntohll(n) (n) >> # define htonll(n) (n) >> #elif __BYTE_ORDER == __LITTLE_ENDIAN >> -# if defined(__GNUC__) && defined(__GLIBC__) >> +# if defined(__GNUC__) && (defined(__GLIBC__) || defined(__CYGWIN__)) >> # include <byteswap.h> >> # else /* GNUC & GLIBC */ >> static inline uint64_t bswap_64(uint64_t val) >> > > Nice, much better. > > And here comes a patch for a big endian machine. > I tryied to copy-paste a patch in my mail program, > not sure if this applies. > > -- >8 -- > Subject: [PATCH] compat/bswap.h: htonll and ntohll for big endian > > Since commit 452e0f20 ("compat: add endianness helpers", 24-10-2013) > the build on a Linux/ppc gave a warning like this: > CC ewah/ewah_io.o > ewah/ewah_io.c: In function ‘ewah_serialize_to’: > ewah/ewah_io.c:81: warning: implicit declaration of function ‘htonll’ > ewah/ewah_io.c: In function ‘ewah_read_mmap’: > ewah/ewah_io.c:132: warning: implicit declaration of function ‘ntohll’ > > Fix it by placing the #endif for "#ifdef bswap32" at the right place. > > Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> > --- > compat/bswap.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/compat/bswap.h b/compat/bswap.h > index ea1a9ed..b4ddab0 > --- a/compat/bswap.h > +++ b/compat/bswap.h > @@ -46,6 +46,7 @@ static inline uint32_t git_bswap32(uint32_t x) > #undef htonl > #define ntohl(x) bswap32(x) > #define htonl(x) bswap32(x) > +#endif > > #ifndef __BYTE_ORDER > # if defined(BYTE_ORDER) && defined(LITTLE_ENDIAN) && defined(BIG_ENDIAN) > @@ -82,4 +83,3 @@ static inline uint64_t bswap_64(uint64_t val) > # error "Can't define htonll or ntohll!" > #endif > > -#endif > > . > Yep, this was the first thing I did as well! ;-) (*late* last night) I haven't had time today to look into fixing up the msvc build (or a complete re-write), so I look forward to seeing your solution. (do you have msvc available? - or do you want me to look at fixing it? maybe in a day or two?) ATB, Ramsay Jones -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html