HomeFreeBSD

www/qt6-webengine: fix build with clang and libc++ 19

Description

www/qt6-webengine: fix build with clang and libc++ 19

Clang 19 now implements CWG 96 [1], which requires a template
argument list after a 'template' keyword, resulting in errors similar
to:

../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:331:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
  331 |     Base::template Trace([](typename Base::TraceContext ctx) { ctx.Flush(); });
      |                    ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:337:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
  337 |     Base::template CallIfEnabled(
      |                    ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:352:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
  352 |     Base::template Trace([&](typename Base::TraceContext ctx) {
      |                    ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:499:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
  499 |     Base::template Trace([&](typename Base::TraceContext ctx) {
      |                    ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:1050:22: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
 1050 |       Base::template TraceWithInstances(instances, std::move(lambda));
      |                      ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/third_party/perfetto/include/perfetto/tracing/internal/track_event_data_source.h:1064:20: error: a template argument list is expected after a name prefixed by the template keyword [-Wmissing-template-arg-list-after-template-kw]
 1064 |     Base::template Trace([&](typename Base::TraceContext ctx) {
      |                    ^

For perfetto, this was fixed by upstream commit e2f661907a [1].

Another typo is in the third-party quiche library, resulting in:

../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h:201:48: error: no member named 'size' in 'QuicIntervalDeque<T, C>'; did you mean 'Size'?
  201 |       QUICHE_DCHECK(copy.index_ < copy.deque_->size());
      |                                                ^~~~
      |                                                Size
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/common/platform/api/quiche_logging.h:48:53: note: expanded from macro 'QUICHE_DCHECK'
   48 | #define QUICHE_DCHECK(condition) QUICHE_DCHECK_IMPL(condition)
      |                                                     ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/overrides/quiche_platform_impl/quiche_logging_impl.h:89:46: note: expanded from macro 'QUICHE_DCHECK_IMPL'
   89 | #define QUICHE_DCHECK_IMPL(condition) DCHECK(condition)
      |                                              ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/check.h:237:53: note: expanded from macro 'DCHECK'
  237 | #define DCHECK(condition) EAT_CHECK_STREAM_PARAMS(!(condition))
      |                                                     ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/check.h:58:35: note: expanded from macro 'EAT_CHECK_STREAM_PARAMS'
   58 |        : ::logging::VoidifyStream(expr) & (*::logging::g_swallow_stream)
      |                                   ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/net/third_party/quiche/src/quiche/quic/core/quic_interval_deque.h:241:15: note: 'Size' declared here
  241 |   std::size_t Size() const;
      |               ^

And finally there is a typo in chromium:

../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:181:19: error: no member named 'map' in 'Iterator<ReturnType>'; did you mean 'map_'?
  181 |       map_ = iter.map;
      |                   ^~~
      |                   map_
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:239:26: note: 'map_' declared here
  239 |     raw_ptr<IDMap<V, K>> map_;
      |                          ^
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:182:20: error: no member named 'iter' in 'Iterator<ReturnType>'; did you mean 'iter_'?
  182 |       iter_ = iter.iter;
      |                    ^~~~
      |                    iter_
../../../../../qtwebengine-everywhere-src-6.7.2/src/3rdparty/chromium/base/containers/id_map.h:240:40: note: 'iter_' declared here
  240 |     typename HashTable::const_iterator iter_;
      |                                        ^

[1] https://android.googlesource.com/platform/external/perfetto/+/e2f661907a

PR: 281474
Approved by: jhale (maintainer)

Details

Provenance
dimAuthored on Sep 13 2024, 7:34 AM
Parents
R11:e34a77083e96: devel/llvm13: fix build with clang 19
Branches
Unknown
Tags
Unknown
Reverted By
R11:c0fea1a13c66: Revert "www/qt6-webengine: fix build with clang and libc++ 19"