From d4717a38d2287c2f583fefb2a0ed273337a92bb6 Mon Sep 17 00:00:00 2001 From: Gwenhael Goavec-Merou Date: Mon, 11 Jan 2021 18:18:26 +0100 Subject: [PATCH] msgpack/predef: add riscV support When the target CPU is riscV, msgpack is unable to detect endianness with a list of errors like: uhd/host/lib/deps/rpclib/include/rpc/msgpack/pack.hpp:190:2: error: #error msgpack-c supports only big endian and little endian 190 | #error msgpack-c supports only big endian and little endian | ^~~~~ and with subsequent errors: uhd0/host/lib/deps/rpclib/include/rpc/msgpack/pack.hpp:236:46: error: there are no arguments to 'take8_8' that depend on a template parameter, so a declaration of 'take8_8' must be available [-fpermissive] 236 | char buf[2] = {static_cast(0xccu), take8_8(d)}; | This is due to a missing support for this architecture in msgpack. This patch adapt commit from https://github.com/boostorg/predef [backported from https://github.com/EttusResearch/uhd/pull/400] Signed-off-by: Gwenhael Goavec-Merou --- .../include/rpc/msgpack/predef/architecture.h | 1 + .../rpc/msgpack/predef/architecture/riscv.h | 48 +++++++++++++++++++ .../include/rpc/msgpack/predef/other/endian.h | 3 +- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h diff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h index 4a0ce2749..1bd998c59 100644 --- a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h +++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture.h @@ -18,6 +18,7 @@ http://www.boost.org/LICENSE_1_0.txt) #include #include #include +#include #include #include #include diff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h new file mode 100644 index 000000000..8b819d77e --- /dev/null +++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/architecture/riscv.h @@ -0,0 +1,48 @@ +/* +Copyright Andreas Schwab 2019 +Distributed under the Boost Software License, Version 1.0. +(See accompanying file LICENSE_1_0.txt or copy at +http://www.boost.org/LICENSE_1_0.txt) +*/ + +#ifndef BOOST_PREDEF_ARCHITECTURE_RISCV_H +#define BOOST_PREDEF_ARCHITECTURE_RISCV_H + +#include +#include + +/* tag::reference[] += `BOOST_ARCH_RISCV` + +http://en.wikipedia.org/wiki/RISC-V[RISC-V] architecture. + +[options="header"] +|=== +| {predef_symbol} | {predef_version} + +| `+__riscv+` | {predef_detection} +|=== +*/ // end::reference[] + +#define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_NOT_AVAILABLE + +#if defined(__riscv) +# undef BOOST_ARCH_RISCV +# define BOOST_ARCH_RISCV BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#if BOOST_ARCH_RISCV +# define BOOST_ARCH_RISCV_AVAILABLE +#endif + +#if BOOST_ARCH_RISCV +# undef BOOST_ARCH_WORD_BITS_32 +# define BOOST_ARCH_WORD_BITS_32 BOOST_VERSION_NUMBER_AVAILABLE +#endif + +#define BOOST_ARCH_RISCV_NAME "RISC-V" + +#endif + +#include +BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RISCV,BOOST_ARCH_RISCV_NAME) diff --git a/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h b/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h index 3f367b3d4..a7c1fb4dc 100644 --- a/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h +++ b/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h @@ -127,7 +127,8 @@ information and acquired knowledge: defined(__AARCH64EL__) || \ defined(_MIPSEL) || \ defined(__MIPSEL) || \ - defined(__MIPSEL__) + defined(__MIPSEL__) || \ + defined(__riscv) # undef MSGPACK_ENDIAN_LITTLE_BYTE # define MSGPACK_ENDIAN_LITTLE_BYTE MSGPACK_VERSION_NUMBER_AVAILABLE # endif -- 2.26.2