diff --git a/src/bitvector.h b/src/bitvector.h index 5c0023b9c30a4047850763b9acba40d2c94b37d9..c53fba144953dcf197ef279b24d49ef3b28fbca6 100644 --- a/src/bitvector.h +++ b/src/bitvector.h @@ -75,7 +75,7 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) ctz32(unsigned INT32 i) { #define ctz16(i) (i ? ctz32(i) : 16) #define ctz8(i) (i ? ctz32(i) : 8) - +#if !defined(HAVE___BSWAP32) && !defined(HAVE_BSWAP32) static INLINE unsigned INT32 ATTRIBUTE((unused)) bswap32(unsigned INT32 x) { #ifdef HAS___BUILTIN_BSWAP32 return __builtin_bswap32(x); @@ -88,6 +88,7 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) bswap32(unsigned INT32 x) { | ((x & 0x00ff0000) >> 8) | ((x & 0x0000ff00) << 8)); #endif } +#endif /* !HAVE___BSWAP32 && !HAVE_BSWAP32 */ #ifdef INT64 @@ -150,6 +151,7 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) ctz64(unsigned INT64 i) { # endif } +#if !defined(HAVE___BSWAP64) && !defined(HAVE_BSWAP64) static INLINE unsigned INT64 ATTRIBUTE((unused)) bswap64(unsigned INT64 x) { #ifdef HAS___BUILTIN_BSWAP64 return __builtin_bswap64(x); @@ -161,6 +163,7 @@ static INLINE unsigned INT64 ATTRIBUTE((unused)) bswap64(unsigned INT64 x) { return bswap32(x >> 32) | (unsigned INT64)bswap32(x & 0xffffffff) << 32; #endif } +#endif /* !HAVE___BSWAP64 && !HAVE_BSWAP64 */ static INLINE unsigned INT64 PIKE_UNUSED_ATTRIBUTE round_up64(unsigned INT64 v) { unsigned INT32 i; @@ -213,7 +216,9 @@ static INLINE unsigned INT32 ATTRIBUTE((unused)) log2_u32(unsigned INT32 v) { return fls32(v) - 1; } +#if !defined(HAVE___BSWAP16) && !defined(HAVE_BSWAP16) #define bswap16(x) ((unsigned INT16)bswap32((unsigned INT32)x << 16)) +#endif /* !HAVE___BSWAP16 && !HAVE_BSWAP16 */ #if PIKE_BYTEORDER == 1234 #define get_unaligned_le16 get_unaligned16 diff --git a/src/configure.in b/src/configure.in index 0cab0396b354144673029fbd092a77a2aa8f6e88..4d8794a42d43ed9578c9df1543018606ec2de890 100644 --- a/src/configure.in +++ b/src/configure.in @@ -3236,7 +3236,8 @@ AC_CHECK_HEADERS(winsock2.h sys/rusage.h time.h sys/time.h sys/types.h \ sys/prctl.h sys/ioctl.h mach/task_info.h mach/task.h \ mach/mach_init.h syscall.h sys/syscall.h devices/timer.h \ direct.h CoreServices/CoreServices.h execinfo.h \ - mach/mach.h mach/thread_act.h mach/clock.h urcu.h,,,[ + mach/mach.h mach/thread_act.h mach/clock.h urcu.h \ + machine/bswap.h sys/endian.h,,,[ #if (defined(__WINNT__) || defined(__WIN32__)) && !defined(__NT__) #define __NT__ #endif @@ -4498,6 +4499,12 @@ AC_CHECK_FUNCS( \ setsid \ initgroups setgroups \ socketpair \ + bswap16 \ + __bswap16 \ + bswap32 \ + __bswap32 \ + bswap64 \ + __bswap64 \ fpclass \ fp_class_d \ isinf \