* [Buildroot] [PATCH] package/uhd: fix build with riscV
@ 2021-01-12 6:30 Gwenhael Goavec-Merou
2021-01-23 21:00 ` Thomas Petazzoni
2021-01-28 17:01 ` Peter Korsgaard
0 siblings, 2 replies; 5+ messages in thread
From: Gwenhael Goavec-Merou @ 2021-01-12 6:30 UTC (permalink / raw)
To: buildroot
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
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<char>(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]
Fix:
- http://autobuild.buildroot.net/results/afacf5c5c2cd9dff6962523f1fdded9b474b9d66/
- http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
- http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
- and others
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
.../0003-add-RISC-V-endian-detection.patch | 113 ++++++++++++++++++
1 file changed, 113 insertions(+)
create mode 100644 package/uhd/0003-add-RISC-V-endian-detection.patch
diff --git a/package/uhd/0003-add-RISC-V-endian-detection.patch b/package/uhd/0003-add-RISC-V-endian-detection.patch
new file mode 100644
index 0000000000..fb1168ba3e
--- /dev/null
+++ b/package/uhd/0003-add-RISC-V-endian-detection.patch
@@ -0,0 +1,113 @@
+From d4717a38d2287c2f583fefb2a0ed273337a92bb6 Mon Sep 17 00:00:00 2001
+From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
+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<char>(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 <gwenhael.goavec-merou@trabucayre.com>
+---
+ .../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 <rpc/msgpack/predef/architecture/parisc.h>
+ #include <rpc/msgpack/predef/architecture/ppc.h>
+ #include <rpc/msgpack/predef/architecture/pyramid.h>
++#include <rpc/msgpack/predef/architecture/riscv.h>
+ #include <rpc/msgpack/predef/architecture/rs6k.h>
+ #include <rpc/msgpack/predef/architecture/sparc.h>
+ #include <rpc/msgpack/predef/architecture/superh.h>
+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 <boost/predef/version_number.h>
++#include <boost/predef/make.h>
++
++/* 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/detail/test.h>
++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
+
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/uhd: fix build with riscV
2021-01-12 6:30 [Buildroot] [PATCH] package/uhd: fix build with riscV Gwenhael Goavec-Merou
@ 2021-01-23 21:00 ` Thomas Petazzoni
2021-01-28 17:01 ` Peter Korsgaard
1 sibling, 0 replies; 5+ messages in thread
From: Thomas Petazzoni @ 2021-01-23 21:00 UTC (permalink / raw)
To: buildroot
On Tue, 12 Jan 2021 07:30:27 +0100
Gwenhael Goavec-Merou <gwenj@trabucayre.com> wrote:
> From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
>
> 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<char>(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]
>
> Fix:
> - http://autobuild.buildroot.net/results/afacf5c5c2cd9dff6962523f1fdded9b474b9d66/
> - http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
> - http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
> - and others
>
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
> ---
> .../0003-add-RISC-V-endian-detection.patch | 113 ++++++++++++++++++
> 1 file changed, 113 insertions(+)
> create mode 100644 package/uhd/0003-add-RISC-V-endian-detection.patch
Applied to master, thanks.
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/uhd: fix build with riscV
2021-01-12 6:30 [Buildroot] [PATCH] package/uhd: fix build with riscV Gwenhael Goavec-Merou
2021-01-23 21:00 ` Thomas Petazzoni
@ 2021-01-28 17:01 ` Peter Korsgaard
1 sibling, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2021-01-28 17:01 UTC (permalink / raw)
To: buildroot
>>>>> "Gwenhael" == Gwenhael Goavec-Merou <gwenj@trabucayre.com> writes:
> From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
> 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<char>(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]
> Fix:
> - http://autobuild.buildroot.net/results/afacf5c5c2cd9dff6962523f1fdded9b474b9d66/
> - http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
> - http://autobuild.buildroot.net/results/91530538d630a7f09d85327e514f01b45253c1a6/
> - and others
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
Committed to 2020.11.x, thanks.
--
Bye, Peter Korsgaard
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/uhd: fix build with riscV
2020-10-30 15:31 Gwenhael Goavec-Merou
@ 2020-11-01 10:14 ` Yann E. MORIN
0 siblings, 0 replies; 5+ messages in thread
From: Yann E. MORIN @ 2020-11-01 10:14 UTC (permalink / raw)
To: buildroot
Gwenhael, All,
On 2020-10-30 16:31 +0100, Gwenhael Goavec-Merou spake thusly:
> From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
>
> UHD with riscV CPU fails to build with error like:
> /xxx/output-1/build/uhd-3.15.0.0/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
> | ^~~~~
>
> msgpack, required by MPMD, support many architecture but not riscV, and,
> consequently is unable to determine the endianess.
The issue is two folds:
1. uhd bundles (or re-implements?) its own copy of msgpack-c;
2. the bundled msgpack-c borked its detection of the endianness.
So, I think a better solution would be to actually fix the endian
detection [0]. Indeed, a CPU is either big or little endian [1], so
failing to detect actually detect that is pretty serious...
[0] uhd-3.15.0.0/host/lib/deps/rpclib/include/rpc/msgpack/predef/other/endian.h
[1] Yeah, back in the good old days, we had mixed endian CPUs that were
word-swapped, but those really no longer exist, and are definitely not a
target for Buildroot.
Regards,
Yann E. MORIN.
> This patch add a depends on !(BR2_RISCV_64 || BR2_RISCV_32) to disable MPMD
> for riscV target.
> Since E300 and E320 needs MPMD, the select is replaced by depends on
>
> Fixes:
> - http://autobuild.buildroot.net/results/b501a8bf90f2eb10c3f98f26a52539392d320088/
> - http://autobuild.buildroot.net/results/f7ae898c6ecdfa568eb97f7cae6447e97ce306a0/
>
> Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
> ---
> package/uhd/Config.in | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/package/uhd/Config.in b/package/uhd/Config.in
> index 32cb4cf89d..cf4f470629 100644
> --- a/package/uhd/Config.in
> +++ b/package/uhd/Config.in
> @@ -45,13 +45,13 @@ config BR2_PACKAGE_UHD_B200
>
> config BR2_PACKAGE_UHD_E300
> bool "E300 support"
> - select BR2_PACKAGE_UHD_MPMD
> + depends on BR2_PACKAGE_UHD_MPMD
> help
> enable E300 support
>
> config BR2_PACKAGE_UHD_E320
> bool "E320 support"
> - select BR2_PACKAGE_UHD_MPMD
> + depends on BR2_PACKAGE_UHD_MPMD
> help
> enable E320 support
>
> @@ -62,6 +62,7 @@ config BR2_PACKAGE_UHD_EXAMPLES
>
> config BR2_PACKAGE_UHD_MPMD
> bool "MPMD support"
> + depends on !(BR2_RISCV_64 || BR2_RISCV_32)
> help
> enable MPMD support
>
> --
> 2.20.1
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
^ permalink raw reply [flat|nested] 5+ messages in thread
* [Buildroot] [PATCH] package/uhd: fix build with riscV
@ 2020-10-30 15:31 Gwenhael Goavec-Merou
2020-11-01 10:14 ` Yann E. MORIN
0 siblings, 1 reply; 5+ messages in thread
From: Gwenhael Goavec-Merou @ 2020-10-30 15:31 UTC (permalink / raw)
To: buildroot
From: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
UHD with riscV CPU fails to build with error like:
/xxx/output-1/build/uhd-3.15.0.0/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
| ^~~~~
msgpack, required by MPMD, support many architecture but not riscV, and,
consequently is unable to determine the endianess.
This patch add a depends on !(BR2_RISCV_64 || BR2_RISCV_32) to disable MPMD
for riscV target.
Since E300 and E320 needs MPMD, the select is replaced by depends on
Fixes:
- http://autobuild.buildroot.net/results/b501a8bf90f2eb10c3f98f26a52539392d320088/
- http://autobuild.buildroot.net/results/f7ae898c6ecdfa568eb97f7cae6447e97ce306a0/
Signed-off-by: Gwenhael Goavec-Merou <gwenhael.goavec-merou@trabucayre.com>
---
package/uhd/Config.in | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/package/uhd/Config.in b/package/uhd/Config.in
index 32cb4cf89d..cf4f470629 100644
--- a/package/uhd/Config.in
+++ b/package/uhd/Config.in
@@ -45,13 +45,13 @@ config BR2_PACKAGE_UHD_B200
config BR2_PACKAGE_UHD_E300
bool "E300 support"
- select BR2_PACKAGE_UHD_MPMD
+ depends on BR2_PACKAGE_UHD_MPMD
help
enable E300 support
config BR2_PACKAGE_UHD_E320
bool "E320 support"
- select BR2_PACKAGE_UHD_MPMD
+ depends on BR2_PACKAGE_UHD_MPMD
help
enable E320 support
@@ -62,6 +62,7 @@ config BR2_PACKAGE_UHD_EXAMPLES
config BR2_PACKAGE_UHD_MPMD
bool "MPMD support"
+ depends on !(BR2_RISCV_64 || BR2_RISCV_32)
help
enable MPMD support
--
2.20.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-01-28 17:01 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-12 6:30 [Buildroot] [PATCH] package/uhd: fix build with riscV Gwenhael Goavec-Merou
2021-01-23 21:00 ` Thomas Petazzoni
2021-01-28 17:01 ` Peter Korsgaard
-- strict thread matches above, loose matches on Subject: below --
2020-10-30 15:31 Gwenhael Goavec-Merou
2020-11-01 10:14 ` Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.