--- a/source/modules/water/memory/ByteOrder.h.orig 2018-12-25 09:55:04.000000000 +0100 +++ b/source/modules/water/memory/ByteOrder.h 2018-12-25 13:00:27.500279074 +0100 @@ -28,7 +28,11 @@ #include "../water.h" -#ifdef CARLA_OS_MAC +#if defined(CARLA_OS_BSD) +# include +#elif defined(CARLA_OS_LINUX) +# include +#elif defined(CARLA_OS_MAC) # include #endif @@ -146,14 +150,24 @@ //============================================================================== inline uint16 ByteOrder::swap (uint16 n) noexcept { + #if defined(CARLA_OS_BSD) + return bswap16 (n); + #elif defined(CARLA_OS_LINUX) + return bswap_16 (n); + #else return static_cast ((n << 8) | (n >> 8)); + #endif } inline uint32 ByteOrder::swap (uint32 n) noexcept { - #ifdef CARLA_OS_MAC + #if defined(CARLA_OS_BSD) + return bswap32 (n); + #elif defined(CARLA_OS_LINUX) + return bswap_32 (n); + #elif defined(CARLA_OS_MAC) return OSSwapInt32 (n); - #elif defined(CARLA_OS_WIN) || ! (defined (__arm__) || defined (__arm64__) || defined (__aarch64__)) + #elif defined(__i386__) || defined(__x86_64__) asm("bswap %%eax" : "=a"(n) : "a"(n)); return n; #else @@ -163,7 +177,11 @@ inline uint64 ByteOrder::swap (uint64 value) noexcept { - #ifdef CARLA_OS_MAC + #if defined(CARLA_OS_BSD) + return bswap64 (value); + #elif defined(CARLA_OS_LINUX) + return bswap_64 (value); + #elif defined(CARLA_OS_MAC) return OSSwapInt64 (value); #else return (((uint64) swap ((uint32) value)) << 32) | swap ((uint32) (value >> 32));