[oe] [meta-oe][PATCH 2/3] cpprest: Fix build with clang
Khem Raj
raj.khem at gmail.com
Wed May 23 22:39:27 UTC 2018
Signed-off-by: Khem Raj <raj.khem at gmail.com>
---
.../0001-Fix-a-build-problem-on-Clang.patch | 28 +++++++++++++++++++
.../0002-Define-virtual-destructor.patch | 28 +++++++++++++++++++
.../recipes-support/cpprest/cpprest_2.10.2.bb | 8 ++++--
3 files changed, 61 insertions(+), 3 deletions(-)
create mode 100644 meta-oe/recipes-support/cpprest/cpprest-2.10.2/0001-Fix-a-build-problem-on-Clang.patch
create mode 100644 meta-oe/recipes-support/cpprest/cpprest-2.10.2/0002-Define-virtual-destructor.patch
diff --git a/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0001-Fix-a-build-problem-on-Clang.patch b/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0001-Fix-a-build-problem-on-Clang.patch
new file mode 100644
index 0000000000..dc6b9dfcab
--- /dev/null
+++ b/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0001-Fix-a-build-problem-on-Clang.patch
@@ -0,0 +1,28 @@
+From 0c07931f77aa9df2da065b633ae66faad5a570ec Mon Sep 17 00:00:00 2001
+From: Wu Yongwei <wuyongwei at gmail.com>
+Date: Tue, 10 Apr 2018 11:29:12 +0800
+Subject: [PATCH] Fix a build problem on Clang.
+
+AND_CAPTURE_MEMBER_FUNCTION_POINTERS workaround had a check for GCC,
+but did not exclude Clang. Clang has a fake GCC version of 4.2, thus
+caused problems.
+
+Upstream-Status: Backport [https://github.com/Microsoft/cpprestsdk/pull/732]
+Signed-off-by: Khem Raj <raj.khem at gmail.com>
+---
+ Release/src/http/client/http_client_asio.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Release/src/http/client/http_client_asio.cpp b/Release/src/http/client/http_client_asio.cpp
+index 4ba3e085..fca4bb5b 100644
+--- a/Release/src/http/client/http_client_asio.cpp
++++ b/Release/src/http/client/http_client_asio.cpp
+@@ -47,7 +47,7 @@
+ #include <unordered_set>
+ #include <memory>
+
+-#if defined(__GNUC__)
++#if defined(__GNUC__) && !defined(__clang__)
+
+ #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
+ #define AND_CAPTURE_MEMBER_FUNCTION_POINTERS
diff --git a/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0002-Define-virtual-destructor.patch b/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0002-Define-virtual-destructor.patch
new file mode 100644
index 0000000000..34cbe66974
--- /dev/null
+++ b/meta-oe/recipes-support/cpprest/cpprest-2.10.2/0002-Define-virtual-destructor.patch
@@ -0,0 +1,28 @@
+From 816d183eb0fe9ab4607cb049b4b792f8df84d5fe Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem at gmail.com>
+Date: Tue, 22 May 2018 22:17:43 -0700
+Subject: [PATCH] Define virtual destructor
+
+Fixes
+error: destructor called on non-final 'pplx::details::linux_scheduler' that has virtual functions but non-virtual destructor [-Werror,-Wdelete-non-virtual-dtor]
+ __data_.second().~_Tp();
+
+Upstream-Status: Pending [https://github.com/Microsoft/cpprestsdk/issues/747]
+
+Signed-off-by: Khem Raj <raj.khem at gmail.com>
+---
+ Release/include/pplx/pplxlinux.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Release/include/pplx/pplxlinux.h b/Release/include/pplx/pplxlinux.h
+index 6aa1ba35..f3f8d70d 100644
+--- a/Release/include/pplx/pplxlinux.h
++++ b/Release/include/pplx/pplxlinux.h
+@@ -240,6 +240,7 @@ namespace platform
+ {
+ public:
+ _PPLXIMP virtual void schedule( TaskProc_t proc, _In_ void* param);
++ virtual ~linux_scheduler() {}
+ };
+
+ } // namespace details
diff --git a/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb b/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb
index 2ba6fc66cc..1dbe093bee 100644
--- a/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb
+++ b/meta-oe/recipes-support/cpprest/cpprest_2.10.2.bb
@@ -5,9 +5,11 @@ LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${S}/../license.txt;md5=a2e15b954769218ff912468eecd6a02f"
DEPENDS = "openssl websocketpp zlib boost"
-SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master"
-
-SRC_URI += "file://fix-cmake-install.patch"
+SRC_URI = "git://github.com/Microsoft/cpprestsdk.git;protocol=https;branch=master \
+ file://fix-cmake-install.patch \
+ file://0001-Fix-a-build-problem-on-Clang.patch;patchdir=.. \
+ file://0002-Define-virtual-destructor.patch;patchdir=.. \
+ "
# tag 2.10.2
SRCREV= "fea848e2a77563cf2a6f28f8eab396fd6e787fbf"
--
2.17.0
More information about the Openembedded-devel
mailing list