mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-30 08:44:16 +00:00
7847b92605
While this isn't a supported build configuration, some build systems need to build without going through our autotools steps, so defaulting to something sane may make it easier to build. Specifically, this fixes the inability to build rust-bitcoinconsensus on some non-x86 platforms. It needs to build without our autotools/configure steps to ensure correct compile args are passed from the rust build system to gcc. Converting the args from the rust build system to gcc would be a lot of unmaintainable work. GitHub-Pull: #12998 Rebased-From: 150b2f0
242 lines
4.8 KiB
C
242 lines
4.8 KiB
C
// Copyright (c) 2014-2017 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_COMPAT_ENDIAN_H
|
|
#define BITCOIN_COMPAT_ENDIAN_H
|
|
|
|
#if defined(HAVE_CONFIG_H)
|
|
#include <config/bitcoin-config.h>
|
|
#endif
|
|
|
|
#include <compat/byteswap.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#if defined(HAVE_ENDIAN_H)
|
|
#include <endian.h>
|
|
#elif defined(HAVE_SYS_ENDIAN_H)
|
|
#include <sys/endian.h>
|
|
#endif
|
|
|
|
#ifndef HAVE_CONFIG_H
|
|
// While not technically a supported configuration, defaulting to defining these
|
|
// DECLs when we were compiled without autotools makes it easier for other build
|
|
// systems to build things like libbitcoinconsensus for strange targets.
|
|
#ifdef htobe16
|
|
#define HAVE_DECL_HTOBE16 1
|
|
#endif
|
|
#ifdef htole16
|
|
#define HAVE_DECL_HTOLE16 1
|
|
#endif
|
|
#ifdef be16toh
|
|
#define HAVE_DECL_BE16TOH 1
|
|
#endif
|
|
#ifdef le16toh
|
|
#define HAVE_DECL_LE16TOH 1
|
|
#endif
|
|
|
|
#ifdef htobe32
|
|
#define HAVE_DECL_HTOBE32 1
|
|
#endif
|
|
#ifdef htole32
|
|
#define HAVE_DECL_HTOLE32 1
|
|
#endif
|
|
#ifdef be32toh
|
|
#define HAVE_DECL_BE32TOH 1
|
|
#endif
|
|
#ifdef le32toh
|
|
#define HAVE_DECL_LE32TOH 1
|
|
#endif
|
|
|
|
#ifdef htobe64
|
|
#define HAVE_DECL_HTOBE64 1
|
|
#endif
|
|
#ifdef htole64
|
|
#define HAVE_DECL_HTOLE64 1
|
|
#endif
|
|
#ifdef be64toh
|
|
#define HAVE_DECL_BE64TOH 1
|
|
#endif
|
|
#ifdef le64toh
|
|
#define HAVE_DECL_LE64TOH 1
|
|
#endif
|
|
|
|
#endif // HAVE_CONFIG_H
|
|
|
|
#if defined(WORDS_BIGENDIAN)
|
|
|
|
#if HAVE_DECL_HTOBE16 == 0
|
|
inline uint16_t htobe16(uint16_t host_16bits)
|
|
{
|
|
return host_16bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOBE16
|
|
|
|
#if HAVE_DECL_HTOLE16 == 0
|
|
inline uint16_t htole16(uint16_t host_16bits)
|
|
{
|
|
return bswap_16(host_16bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOLE16
|
|
|
|
#if HAVE_DECL_BE16TOH == 0
|
|
inline uint16_t be16toh(uint16_t big_endian_16bits)
|
|
{
|
|
return big_endian_16bits;
|
|
}
|
|
#endif // HAVE_DECL_BE16TOH
|
|
|
|
#if HAVE_DECL_LE16TOH == 0
|
|
inline uint16_t le16toh(uint16_t little_endian_16bits)
|
|
{
|
|
return bswap_16(little_endian_16bits);
|
|
}
|
|
#endif // HAVE_DECL_LE16TOH
|
|
|
|
#if HAVE_DECL_HTOBE32 == 0
|
|
inline uint32_t htobe32(uint32_t host_32bits)
|
|
{
|
|
return host_32bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOBE32
|
|
|
|
#if HAVE_DECL_HTOLE32 == 0
|
|
inline uint32_t htole32(uint32_t host_32bits)
|
|
{
|
|
return bswap_32(host_32bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOLE32
|
|
|
|
#if HAVE_DECL_BE32TOH == 0
|
|
inline uint32_t be32toh(uint32_t big_endian_32bits)
|
|
{
|
|
return big_endian_32bits;
|
|
}
|
|
#endif // HAVE_DECL_BE32TOH
|
|
|
|
#if HAVE_DECL_LE32TOH == 0
|
|
inline uint32_t le32toh(uint32_t little_endian_32bits)
|
|
{
|
|
return bswap_32(little_endian_32bits);
|
|
}
|
|
#endif // HAVE_DECL_LE32TOH
|
|
|
|
#if HAVE_DECL_HTOBE64 == 0
|
|
inline uint64_t htobe64(uint64_t host_64bits)
|
|
{
|
|
return host_64bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOBE64
|
|
|
|
#if HAVE_DECL_HTOLE64 == 0
|
|
inline uint64_t htole64(uint64_t host_64bits)
|
|
{
|
|
return bswap_64(host_64bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOLE64
|
|
|
|
#if HAVE_DECL_BE64TOH == 0
|
|
inline uint64_t be64toh(uint64_t big_endian_64bits)
|
|
{
|
|
return big_endian_64bits;
|
|
}
|
|
#endif // HAVE_DECL_BE64TOH
|
|
|
|
#if HAVE_DECL_LE64TOH == 0
|
|
inline uint64_t le64toh(uint64_t little_endian_64bits)
|
|
{
|
|
return bswap_64(little_endian_64bits);
|
|
}
|
|
#endif // HAVE_DECL_LE64TOH
|
|
|
|
#else // WORDS_BIGENDIAN
|
|
|
|
#if HAVE_DECL_HTOBE16 == 0
|
|
inline uint16_t htobe16(uint16_t host_16bits)
|
|
{
|
|
return bswap_16(host_16bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOBE16
|
|
|
|
#if HAVE_DECL_HTOLE16 == 0
|
|
inline uint16_t htole16(uint16_t host_16bits)
|
|
{
|
|
return host_16bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOLE16
|
|
|
|
#if HAVE_DECL_BE16TOH == 0
|
|
inline uint16_t be16toh(uint16_t big_endian_16bits)
|
|
{
|
|
return bswap_16(big_endian_16bits);
|
|
}
|
|
#endif // HAVE_DECL_BE16TOH
|
|
|
|
#if HAVE_DECL_LE16TOH == 0
|
|
inline uint16_t le16toh(uint16_t little_endian_16bits)
|
|
{
|
|
return little_endian_16bits;
|
|
}
|
|
#endif // HAVE_DECL_LE16TOH
|
|
|
|
#if HAVE_DECL_HTOBE32 == 0
|
|
inline uint32_t htobe32(uint32_t host_32bits)
|
|
{
|
|
return bswap_32(host_32bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOBE32
|
|
|
|
#if HAVE_DECL_HTOLE32 == 0
|
|
inline uint32_t htole32(uint32_t host_32bits)
|
|
{
|
|
return host_32bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOLE32
|
|
|
|
#if HAVE_DECL_BE32TOH == 0
|
|
inline uint32_t be32toh(uint32_t big_endian_32bits)
|
|
{
|
|
return bswap_32(big_endian_32bits);
|
|
}
|
|
#endif // HAVE_DECL_BE32TOH
|
|
|
|
#if HAVE_DECL_LE32TOH == 0
|
|
inline uint32_t le32toh(uint32_t little_endian_32bits)
|
|
{
|
|
return little_endian_32bits;
|
|
}
|
|
#endif // HAVE_DECL_LE32TOH
|
|
|
|
#if HAVE_DECL_HTOBE64 == 0
|
|
inline uint64_t htobe64(uint64_t host_64bits)
|
|
{
|
|
return bswap_64(host_64bits);
|
|
}
|
|
#endif // HAVE_DECL_HTOBE64
|
|
|
|
#if HAVE_DECL_HTOLE64 == 0
|
|
inline uint64_t htole64(uint64_t host_64bits)
|
|
{
|
|
return host_64bits;
|
|
}
|
|
#endif // HAVE_DECL_HTOLE64
|
|
|
|
#if HAVE_DECL_BE64TOH == 0
|
|
inline uint64_t be64toh(uint64_t big_endian_64bits)
|
|
{
|
|
return bswap_64(big_endian_64bits);
|
|
}
|
|
#endif // HAVE_DECL_BE64TOH
|
|
|
|
#if HAVE_DECL_LE64TOH == 0
|
|
inline uint64_t le64toh(uint64_t little_endian_64bits)
|
|
{
|
|
return little_endian_64bits;
|
|
}
|
|
#endif // HAVE_DECL_LE64TOH
|
|
|
|
#endif // WORDS_BIGENDIAN
|
|
|
|
#endif // BITCOIN_COMPAT_ENDIAN_H
|