summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-networking/recipes-connectivity/openthread
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-networking/recipes-connectivity/openthread')
-rw-r--r--meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch40
-rw-r--r--meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/Turn-off-sign-compare-for-musl-libc.patch131
-rw-r--r--meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb4
-rw-r--r--meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb2
4 files changed, 44 insertions, 133 deletions
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch
new file mode 100644
index 0000000000..f0bb392a9f
--- /dev/null
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch
@@ -0,0 +1,40 @@
+From aa706d714294b83db696de2beca9a722a512796f Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Tue, 19 Apr 2022 14:04:40 -0700
+Subject: [PATCH] cmake: Disable nonnull-compare warning on gcc
+
+GCC finds a legit warning which clang does not on code like this
+
+class Message;
+void SendResponse(Message & aMessage)
+{
+ if ((&aMessage) != nullptr) { return; }
+}
+
+Perhaps it should be fixed upstream but for now disable treating this
+warning as error when using gcc
+
+Upstream-Status: Pending
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ CMakeLists.txt | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 59a567e729..3134740ff6 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -57,6 +57,10 @@ endif()
+
+ set(CMAKE_CXX_EXTENSIONS OFF)
+
++if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
++ add_compile_options(-Wno-error=nonnull-compare)
++endif()
++
+ if (OTBR_COVERAGE AND CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ message(STATUS "Coverage: ON")
+ target_compile_options(otbr-config INTERFACE -g -O0 --coverage)
+--
+2.36.0
+
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/Turn-off-sign-compare-for-musl-libc.patch b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/Turn-off-sign-compare-for-musl-libc.patch
deleted file mode 100644
index df84550be0..0000000000
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix/Turn-off-sign-compare-for-musl-libc.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From: Stefan Schmidt <stefan.schmidt@huawei.com>
-Subject: Turn off sign compare for musl libc
-
-When building with musl and clang the usage of CMSG_NXTHDR results in
-sign-compare error. Disable the check only in this specific part of the
-code with a #pragma.
-
-| /home/stefan/huawei/yocto-upstream/yoe/workspace/sources/ot-br-posix/third_party/openthread/repo/src/posix/platform/udp.cpp:147:28: fatal error: comparison of integers of different signs: 'unsigned long' and 'long' [-Wsign-compare]
-| cmsg = CMSG_NXTHDR(&msg, cmsg);
-| ^~~~~~~~~~~~~~~~~~~~~~~
-| /home/stefan/huawei/yocto-upstream/yoe/build/tmp/work/cortexa57-yoe-linux-musl/ot-br-posix/0.3.0+git999-r0/recipe-sysroot/usr/include/sys/socket.h:358:44: note: expanded from macro 'CMSG_NXTHDR'
-| __CMSG_LEN(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) - (unsigned char *)(cmsg) \
-| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-| 1 error generated.
-
-Idea and fix taken from
-recipes-devtools/breakpad/breakpad/0001-Turn-off-sign-compare-for-musl-libc.patch
-by Khem Raj.
-
-Upstream-Status: Inappropriate [OE specific]
-
-Signed-off-by: Stefan Schmidt <stefan.schmidt@huawei.com>
-
-diff --git a/src/backbone_router/nd_proxy.cpp b/src/backbone_router/nd_proxy.cpp
-index 7136878c3d..8a223c95c7 100644
---- a/src/backbone_router/nd_proxy.cpp
-+++ b/src/backbone_router/nd_proxy.cpp
-@@ -185,9 +185,18 @@ void NdProxyManager::ProcessMulticastNeighborSolicition()
- VerifyOrExit(icmp6header->icmp6_type == ND_NEIGHBOR_SOLICIT, error = OTBR_ERROR_PARSE);
-
- otbrLogDebug("NdProxyManager: Received ND-NS from %s", src.ToString().c_str());
--
-+#ifndef __GLIBC__
-+ // In musl-libc, CMSG_NXTHDR typecasts char* to cmsghdr* which causes
-+ // clang to throw sign-compare warning. This is to suppress the warning
-+ // inline.
-+ #pragma clang diagnostic push
-+ #pragma clang diagnostic ignored "-Wsign-compare"
-+#endif
- for (cmsghdr = CMSG_FIRSTHDR(&msghdr); cmsghdr; cmsghdr = CMSG_NXTHDR(&msghdr, cmsghdr))
-- {
-+#ifndef __GLIBC__
-+ #pragma clang diagnostic pop
-+#endif
-+ {
- if (cmsghdr->cmsg_level != IPPROTO_IPV6)
- {
- continue;
-Submodule third_party/openthread/repo contains modified content
-diff --git a/third_party/openthread/repo/src/posix/platform/infra_if.cpp b/third_party/openthread/repo/src/posix/platform/infra_if.cpp
-index 9f93d2b1c..1ed40fe50 100644
---- a/third_party/openthread/repo/src/posix/platform/infra_if.cpp
-+++ b/third_party/openthread/repo/src/posix/platform/infra_if.cpp
-@@ -228,7 +228,17 @@ otError InfraNetif::SendIcmp6Nd(uint32_t aInfraIfIndex,
- packetInfo->ipi6_ifindex = mInfraIfIndex;
-
- // Per section 6.1.2 of RFC 4861, we need to send the ICMPv6 message with IP Hop Limit 255.
-+#ifndef __GLIBC__
-+ // In musl-libc, CMSG_NXTHDR typecasts char* to cmsghdr* which causes
-+ // clang to throw sign-compare warning. This is to suppress the warning
-+ // inline.
-+ #pragma clang diagnostic push
-+ #pragma clang diagnostic ignored "-Wsign-compare"
-+#endif
- cmsgPointer = CMSG_NXTHDR(&msgHeader, cmsgPointer);
-+#ifndef __GLIBC__
-+ #pragma clang diagnostic pop
-+#endif
- cmsgPointer->cmsg_level = IPPROTO_IPV6;
- cmsgPointer->cmsg_type = IPV6_HOPLIMIT;
- cmsgPointer->cmsg_len = CMSG_LEN(sizeof(hopLimit));
-@@ -481,7 +491,17 @@ void InfraNetif::ReceiveIcmp6Message(void)
-
- bufferLength = static_cast<uint16_t>(rval);
-
-+#ifndef __GLIBC__
-+ // In musl-libc, CMSG_NXTHDR typecasts char* to cmsghdr* which causes
-+ // clang to throw sign-compare warning. This is to suppress the warning
-+ // inline.
-+ #pragma clang diagnostic push
-+ #pragma clang diagnostic ignored "-Wsign-compare"
-+#endif
- for (cmh = CMSG_FIRSTHDR(&msg); cmh; cmh = CMSG_NXTHDR(&msg, cmh))
-+#ifndef __GLIBC__
-+ #pragma clang diagnostic pop
-+#endif
- {
- if (cmh->cmsg_level == IPPROTO_IPV6 && cmh->cmsg_type == IPV6_PKTINFO &&
- cmh->cmsg_len == CMSG_LEN(sizeof(struct in6_pktinfo)))
-diff --git a/third_party/openthread/repo/src/posix/platform/udp.cpp b/third_party/openthread/repo/src/posix/platform/udp.cpp
-index b7aacc5fa..a814fea70 100644
---- a/third_party/openthread/repo/src/posix/platform/udp.cpp
-+++ b/third_party/openthread/repo/src/posix/platform/udp.cpp
-@@ -144,8 +144,18 @@ otError transmitPacket(int aFd, uint8_t *aPayload, uint16_t aLength, const otMes
- {
- struct in6_pktinfo pktinfo;
-
-+#ifndef __GLIBC__
-+ // In musl-libc, CMSG_NXTHDR typecasts char* to cmsghdr* which causes
-+ // clang to throw sign-compare warning. This is to suppress the warning
-+ // inline.
-+ #pragma clang diagnostic push
-+ #pragma clang diagnostic ignored "-Wsign-compare"
-+#endif
- cmsg = CMSG_NXTHDR(&msg, cmsg);
-- cmsg->cmsg_level = IPPROTO_IPV6;
-+#ifndef __GLIBC__
-+ #pragma clang diagnostic pop
-+#endif
-+ cmsg->cmsg_level = IPPROTO_IPV6;
- cmsg->cmsg_type = IPV6_PKTINFO;
- cmsg->cmsg_len = CMSG_LEN(sizeof(pktinfo));
-
-@@ -200,7 +210,17 @@ otError receivePacket(int aFd, uint8_t *aPayload, uint16_t &aLength, otMessageIn
- VerifyOrExit(rval > 0, perror("recvmsg"));
- aLength = static_cast<uint16_t>(rval);
-
-+#ifndef __GLIBC__
-+ // In musl-libc, CMSG_NXTHDR typecasts char* to cmsghdr* which causes
-+ // clang to throw sign-compare warning. This is to suppress the warning
-+ // inline.
-+ #pragma clang diagnostic push
-+ #pragma clang diagnostic ignored "-Wsign-compare"
-+#endif
- for (struct cmsghdr *cmsg = CMSG_FIRSTHDR(&msg); cmsg != nullptr; cmsg = CMSG_NXTHDR(&msg, cmsg))
-+#ifndef __GLIBC__
-+ #pragma clang diagnostic pop
-+#endif
- {
- if (cmsg->cmsg_level == IPPROTO_IPV6)
- {
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
index d9f558d792..a16b77849e 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/ot-br-posix_git.bb
@@ -16,7 +16,7 @@ PV = "0.3.0+git${SRCPV}"
SRC_URI = "gitsm://github.com/openthread/ot-br-posix.git;protocol=https;branch=main \
file://0001-otbr-agent.service.in-remove-pre-exec-hook-for-mdns-.patch \
- file://Turn-off-sign-compare-for-musl-libc.patch \
+ file://0001-cmake-Disable-nonnull-compare-warning-on-gcc.patch \
"
S = "${WORKDIR}/git"
@@ -24,6 +24,8 @@ SYSTEMD_SERVICE:${PN} = "otbr-agent.service"
inherit pkgconfig cmake systemd
+CXXFLAGS:append:libc-musl:toolchain-clang = " -Wno-error=sign-compare"
+
EXTRA_OECMAKE = "-DBUILD_TESTING=OFF \
-DOTBR_DBUS=ON \
-DOTBR_REST=ON \
diff --git a/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
index bb444d04f5..a7fcc202a4 100644
--- a/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
+++ b/meta-openembedded/meta-networking/recipes-connectivity/openthread/wpantund_git.bb
@@ -11,7 +11,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=e7820bc7f7d1638a6b54fc2e8d7fb103 \
file://third_party/openthread/LICENSE;md5=543b6fe90ec5901a683320a36390c65f \
file://third_party/pt/LICENSE;md5=dcd598b69cad786beea33da7b1ae14b7 \
"
-DEPENDS = "autoconf-archive dbus readline"
+DEPENDS = "autoconf-archive dbus readline boost"
SRCREV = "0fb1f57e4224e2df3e630e146702bfcf63fbf07a"
PV = "0.07.01+git${SRCPV}"