summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bswap.h8
-rwxr-xr-xconfigure9
2 files changed, 17 insertions, 0 deletions
diff --git a/bswap.h b/bswap.h
index 523d805a21..08b77d9377 100644
--- a/bswap.h
+++ b/bswap.h
@@ -5,6 +5,12 @@
#include <inttypes.h>
+#ifdef HAVE_MACHINE_BSWAP_H
+#include <sys/endian.h>
+#include <sys/types.h>
+#include <machine/bswap.h>
+#else
+
#ifdef HAVE_BYTESWAP_H
#include <byteswap.h>
#else
@@ -58,6 +64,8 @@ static inline uint64_t bswap64(uint64_t x)
return bswap_64(x);
}
+#endif /* ! HAVE_MACHINE_BSWAP_H */
+
static inline void bswap16s(uint16_t *s)
{
*s = bswap16(*s);
diff --git a/configure b/configure
index 57b3b5a04d..7f82786606 100755
--- a/configure
+++ b/configure
@@ -1229,6 +1229,15 @@ EOF
if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
echo "#define HAVE_BYTESWAP_H 1" >> $config_h
fi
+ cat > $TMPC << EOF
+#include <sys/endian.h>
+#include <sys/types.h>
+#include <machine/bswap.h>
+int main(void) { return bswap32(0); }
+EOF
+ if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
+ echo "#define HAVE_MACHINE_BSWAP_H 1" >> $config_h
+ fi
fi
if [ "$openbsd" = "yes" ] ; then