[cef][wam] Make the recipe work with official chromium release tarballs
[AGL/meta-agl-demo.git] / recipes-wam / cef / files / chromium / 0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
diff --git a/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch b/recipes-wam/cef/files/chromium/0018-meta-browser-Fix-undefined-symbol-PaintOpWriter-Seri.patch
new file mode 100644 (file)
index 0000000..2c953d3
--- /dev/null
@@ -0,0 +1,49 @@
+From 1b8ee706e8bb16a9b6c59c832d33b56915d1f410 Mon Sep 17 00:00:00 2001
+From: Max Ihlenfeldt <max@igalia.com>
+Date: Tue, 5 Sep 2023 09:51:38 +0000
+Subject: [PATCH 18/33] [meta-browser] Fix "undefined symbol:
+ PaintOpWriter::SerializedSize<unsigned long>()"
+
+For some reason, clang 14 (currently used on dunfell and kirkstone)
+seems to fail to correctly generate a needed instantiation of
+`cc::PaintOpWriter::SerializedSize<T>()`, and thus the final linking
+step fails with an "undefined symbol" error.
+
+We can fix this by explicitly providing a specialization, which does the
+same thing as the generic implementation.
+
+Upstream-Status: Inappropriate [specific to older versions of clang]
+Signed-off-by: Max Ihlenfeldt <max@igalia.com>
+---
+ cc/paint/paint_op_writer.h | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/cc/paint/paint_op_writer.h b/cc/paint/paint_op_writer.h
+index 70153c0aa64ac..f47eb934c1eb1 100644
+--- a/cc/paint/paint_op_writer.h
++++ b/cc/paint/paint_op_writer.h
+@@ -122,6 +122,9 @@ class CC_PAINT_EXPORT PaintOpWriter {
+   static size_t SerializedSize(const PaintRecord& record);
+   static size_t SerializedSize(const SkHighContrastConfig& config);
++  template<>
++  constexpr size_t SerializedSize<size_t>();
++
+   // Serialization of raw/smart pointers is not supported by default.
+   template <typename T>
+   static inline size_t SerializedSize(const T* p);
+@@ -385,6 +388,11 @@ constexpr size_t PaintOpWriter::SerializedSize<SkGainmapInfo>() {
+          SerializedSizeSimple<uint32_t>();    // fBaseImageType
+ }
++template<>
++constexpr size_t PaintOpWriter::SerializedSize<size_t>() {
++  return SerializedSizeSimple<size_t>();
++}
++
+ template <typename T>
+ constexpr size_t PaintOpWriter::SerializedSize() {
+   static_assert(std::is_arithmetic_v<T> || std::is_enum_v<T>);
+-- 
+2.42.1
+