diff --git a/recipes-browser/wpewebkit/wpewebkit-qt5.inc b/recipes-browser/wpewebkit/wpewebkit-qt5.inc new file mode 100644 index 00000000..f73616b6 --- /dev/null +++ b/recipes-browser/wpewebkit/wpewebkit-qt5.inc @@ -0,0 +1,44 @@ + +# We cannot inherit cmake_qt5 because it will unconditionally add packages +# to DEPENDS which cannot be removed later depending on the options chosen +# with PACKAGECONFIG. Instead, copy the set of options defined in it, in turn +# built upon qmake5_paths (which only defines things, without adding to the +# dependencies), and add those options along the rest needed for the "qtwpe" +# option ourselves. + +inherit qmake5_paths + +CMAKE_QT_OECONF = "\ + -DOE_QMAKE_PATH_PREFIX=${OE_QMAKE_PATH_PREFIX} \ + -DOE_QMAKE_PATH_HEADERS=${OE_QMAKE_PATH_HEADERS} \ + -DOE_QMAKE_PATH_LIBS=${OE_QMAKE_PATH_LIBS} \ + -DOE_QMAKE_PATH_ARCHDATA=${OE_QMAKE_PATH_ARCHDATA} \ + -DOE_QMAKE_PATH_DATA=${OE_QMAKE_PATH_DATA} \ + -DOE_QMAKE_PATH_BINS=${OE_QMAKE_PATH_BINS} \ + -DOE_QMAKE_PATH_LIBEXECS=${OE_QMAKE_PATH_LIBEXECS} \ + -DOE_QMAKE_PATH_PLUGINS=${OE_QMAKE_PATH_PLUGINS} \ + -DOE_QMAKE_PATH_QML=${OE_QMAKE_PATH_QML} \ + -DOE_QMAKE_PATH_TRANSLATIONS=${OE_QMAKE_PATH_TRANSLATIONS} \ + -DOE_QMAKE_PATH_DOCS=${OE_QMAKE_PATH_DOCS} \ + -DOE_QMAKE_PATH_SETTINGS=${OE_QMAKE_PATH_SETTINGS} \ + -DOE_QMAKE_PATH_EXAMPLES=${OE_QMAKE_PATH_EXAMPLES} \ + -DOE_QMAKE_PATH_TESTS=${OE_QMAKE_PATH_TESTS} \ + -DOE_QMAKE_PATH_HOST_PREFIX=${OE_QMAKE_PATH_HOST_PREFIX} \ + -DOE_QMAKE_PATH_HOST_BINS=${OE_QMAKE_PATH_HOST_BINS} \ + -DOE_QMAKE_PATH_HOST_DATA=${OE_QMAKE_PATH_HOST_DATA} \ + -DOE_QMAKE_PATH_HOST_LIBS=${OE_QMAKE_PATH_HOST_LIBS} \ + -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \ + -DOE_QMAKE_PATH_QT_HEADERS=${OE_QMAKE_PATH_QT_HEADERS} \ + -DOE_QMAKE_PATH_QT_ARCHDATA=${OE_QMAKE_PATH_QT_ARCHDATA} \ + -DOE_QMAKE_PATH_QT_DATA=${OE_QMAKE_PATH_QT_DATA} \ + -DOE_QMAKE_PATH_QT_BINS=${OE_QMAKE_PATH_QT_BINS} \ + -DOE_QMAKE_PATH_QT_TRANSLATIONS=${OE_QMAKE_PATH_QT_TRANSLATIONS} \ + -DOE_QMAKE_PATH_QT_DOCS=${OE_QMAKE_PATH_QT_DOCS} \ + -DOE_QMAKE_PATH_QT_SETTINGS=${OE_QMAKE_PATH_QT_SETTINGS} \ + -DOE_QMAKE_PATH_QT_EXAMPLES=${OE_QMAKE_PATH_QT_EXAMPLES} \ + -DOE_QMAKE_PATH_QT_TESTS=${OE_QMAKE_PATH_QT_TESTS} \ +" + +QT_BUILD_DEPS = "qtquickcontrols2" + +FILES:${PN}-qtwpe-qml-plugin += "${libdir}/qt5/qml/org/wpewebkit/qtwpe/*" diff --git a/recipes-browser/wpewebkit/wpewebkit-qt6.inc b/recipes-browser/wpewebkit/wpewebkit-qt6.inc new file mode 100644 index 00000000..5485c12c --- /dev/null +++ b/recipes-browser/wpewebkit/wpewebkit-qt6.inc @@ -0,0 +1,20 @@ +inherit qt6-cmake + +CMAKE_QT_OECONF = "\ + -DUSE_QT6=ON \ + -DENABLE_WPE_PLATFORM=ON \ +" + +QT_BUILD_DEPS = "qtdeclarative-native wayland-native wayland-protocols wpebackend-fdo" + +# Relocate the plugin to the default QML directory for accessibility. +do_install:append() { + if [ -d ${D}${libdir}/qt6/qml/org/wpewebkit ]; then + install -d ${D}${libdir}/qml/org/ + mv ${D}${libdir}/qt6/qml/org/wpewebkit ${D}${libdir}/qml/org/ + rm -rf ${D}${libdir}/qt6 + fi +} + + +FILES:${PN}-qtwpe-qml-plugin += "${libdir}/qml/org/wpewebkit/qtwpe/*" diff --git a/recipes-browser/wpewebkit/wpewebkit.inc b/recipes-browser/wpewebkit/wpewebkit.inc index 2c96f3ec..1cdcbafc 100644 --- a/recipes-browser/wpewebkit/wpewebkit.inc +++ b/recipes-browser/wpewebkit/wpewebkit.inc @@ -19,44 +19,9 @@ DEPENDS:append = " \ inherit cmake pkgconfig perlnative python3native -# We cannot inherit cmake_qt5 because it will unconditionally add packages -# to DEPENDS which cannot be removed later depending on the options chosen -# with PACKAGECONFIG. Instead, copy the set of options defined in it, in turn -# built upon qmake5_paths (which only defines things, without adding to the -# dependencies), and add those options along the rest needed for the "qtwpe" -# option ourselves. -# -inherit ${@'qmake5_paths' if 'qt5-layer' in d.getVar('BBFILE_COLLECTIONS').split() else ''} -CMAKE_QT5_OECONF = "\ - -DOE_QMAKE_PATH_PREFIX=${OE_QMAKE_PATH_PREFIX} \ - -DOE_QMAKE_PATH_HEADERS=${OE_QMAKE_PATH_HEADERS} \ - -DOE_QMAKE_PATH_LIBS=${OE_QMAKE_PATH_LIBS} \ - -DOE_QMAKE_PATH_ARCHDATA=${OE_QMAKE_PATH_ARCHDATA} \ - -DOE_QMAKE_PATH_DATA=${OE_QMAKE_PATH_DATA} \ - -DOE_QMAKE_PATH_BINS=${OE_QMAKE_PATH_BINS} \ - -DOE_QMAKE_PATH_LIBEXECS=${OE_QMAKE_PATH_LIBEXECS} \ - -DOE_QMAKE_PATH_PLUGINS=${OE_QMAKE_PATH_PLUGINS} \ - -DOE_QMAKE_PATH_QML=${OE_QMAKE_PATH_QML} \ - -DOE_QMAKE_PATH_TRANSLATIONS=${OE_QMAKE_PATH_TRANSLATIONS} \ - -DOE_QMAKE_PATH_DOCS=${OE_QMAKE_PATH_DOCS} \ - -DOE_QMAKE_PATH_SETTINGS=${OE_QMAKE_PATH_SETTINGS} \ - -DOE_QMAKE_PATH_EXAMPLES=${OE_QMAKE_PATH_EXAMPLES} \ - -DOE_QMAKE_PATH_TESTS=${OE_QMAKE_PATH_TESTS} \ - -DOE_QMAKE_PATH_HOST_PREFIX=${OE_QMAKE_PATH_HOST_PREFIX} \ - -DOE_QMAKE_PATH_HOST_BINS=${OE_QMAKE_PATH_HOST_BINS} \ - -DOE_QMAKE_PATH_HOST_DATA=${OE_QMAKE_PATH_HOST_DATA} \ - -DOE_QMAKE_PATH_HOST_LIBS=${OE_QMAKE_PATH_HOST_LIBS} \ - -DOE_QMAKE_PATH_EXTERNAL_HOST_BINS=${OE_QMAKE_PATH_EXTERNAL_HOST_BINS} \ - -DOE_QMAKE_PATH_QT_HEADERS=${OE_QMAKE_PATH_QT_HEADERS} \ - -DOE_QMAKE_PATH_QT_ARCHDATA=${OE_QMAKE_PATH_QT_ARCHDATA} \ - -DOE_QMAKE_PATH_QT_DATA=${OE_QMAKE_PATH_QT_DATA} \ - -DOE_QMAKE_PATH_QT_BINS=${OE_QMAKE_PATH_QT_BINS} \ - -DOE_QMAKE_PATH_QT_TRANSLATIONS=${OE_QMAKE_PATH_QT_TRANSLATIONS} \ - -DOE_QMAKE_PATH_QT_DOCS=${OE_QMAKE_PATH_QT_DOCS} \ - -DOE_QMAKE_PATH_QT_SETTINGS=${OE_QMAKE_PATH_QT_SETTINGS} \ - -DOE_QMAKE_PATH_QT_EXAMPLES=${OE_QMAKE_PATH_QT_EXAMPLES} \ - -DOE_QMAKE_PATH_QT_TESTS=${OE_QMAKE_PATH_QT_TESTS} \ -" + +require ${@'wpewebkit-qt6.inc' if 'qt6-layer' in d.getVar('BBFILE_COLLECTIONS').split() else ''} +require ${@'wpewebkit-qt5.inc' if 'qt5-layer' in d.getVar('BBFILE_COLLECTIONS').split() else ''} export WK_USE_CCACHE="NO" @@ -108,7 +73,7 @@ PACKAGECONFIG[webcrypto] = "-DENABLE_WEB_CRYPTO=ON,-DENABLE_WEB_CRYPTO=OFF,libgc PACKAGECONFIG[woff2] = "-DUSE_WOFF2=ON,-DUSE_WOFF2=OFF,woff2" PACKAGECONFIG[remote-inspector] = "-DENABLE_REMOTE_INSPECTOR=ON,-DENABLE_REMOTE_INSPECTOR=OFF," PACKAGECONFIG[webrtc] = "-DENABLE_WEB_RTC=ON,-DENABLE_WEB_RTC=OFF,libvpx libevent libopus openh264" -PACKAGECONFIG[qtwpe] = "-DENABLE_WPE_QT_API=ON ${CMAKE_QT5_OECONF},-DENABLE_WPE_QT_API=OFF,qtbase-native qtbase qtdeclarative qtquickcontrols2 libepoxy wpebackend-fdo" +PACKAGECONFIG[qtwpe] = "-DENABLE_WPE_QT_API=ON ${CMAKE_QT_OECONF},-DENABLE_WPE_QT_API=OFF,qtbase-native qtbase qtdeclarative libepoxy wpebackend-fdo ${QT_BUILD_DEPS}" PACKAGECONFIG[openjpeg] = "-DUSE_OPENJPEG=ON,-DUSE_OPENJPEG=OFF,openjpeg" PACKAGECONFIG[unified-builds] = "-DENABLE_UNIFIED_BUILDS=ON,-DENABLE_UNIFIED_BUILDS=OFF," PACKAGECONFIG[thunder] = "-DENABLE_THUNDER=ON,-DENABLE_THUNDER=OFF,virtual/open-cdm" @@ -154,7 +119,6 @@ FILES:${PN} += "${libdir}/wpe-webkit*/injected-bundle/libWPEInjectedBundle.so" FILES:${PN}-web-inspector-plugin += "${libdir}/libWPEWebInspectorResources.so ${libdir}/wpe-webkit-*/libWPEWebInspectorResources.so" INSANE_SKIP:${PN}-web-inspector-plugin = "dev-so" -FILES:${PN}-qtwpe-qml-plugin += "${libdir}/qt5/qml/org/wpewebkit/qtwpe/*" INSANE_SKIP:${PN}-qtwpe-qml-plugin = "dev-so" # JSC JIT on ARMv7 is better supported with Thumb2 instruction set. diff --git a/recipes-browser/wpewebkit/wpewebkit/0003-WPE-Platform-fix-wpe_toplevel_qtquick-has-not-been-d.patch b/recipes-browser/wpewebkit/wpewebkit/0003-WPE-Platform-fix-wpe_toplevel_qtquick-has-not-been-d.patch new file mode 100644 index 00000000..1702d4d0 --- /dev/null +++ b/recipes-browser/wpewebkit/wpewebkit/0003-WPE-Platform-fix-wpe_toplevel_qtquick-has-not-been-d.patch @@ -0,0 +1,35 @@ +From 955cfdd91676f35635e6a55da513f64b7c5555c9 Mon Sep 17 00:00:00 2001 +From: LI Qingwu +Date: Mon, 30 Sep 2024 11:54:19 +0800 +Subject: [PATCH 3/4] WPE Platform: fix wpe_toplevel_qtquick has not been + declared + +Fix the following compile failed issue for Qt6: + +Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp:35:46: +error: 'wpe_toplevel_qtquick' has not been declared + +Upstream-Status: Pending [1] +[1] https://github.com/WebKit/WebKit/pull/34441 + +Signed-off-by: LI Qingwu +--- + Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp b/Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp +index ff6daf3e9a28..966734abefc4 100644 +--- a/Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp ++++ b/Source/WebKit/UIProcess/API/wpe/qt6/WPEToplevelQtQuick.cpp +@@ -26,6 +26,8 @@ + #include "config.h" + #include "WPEToplevelQtQuick.h" + ++#include ++ + /** + * WPEToplevelQtQuick: + * +-- +2.34.1 + diff --git a/recipes-browser/wpewebkit/wpewebkit/0004-WPE-Platform-fix-wpe_view_resize-was-not-declared-is.patch b/recipes-browser/wpewebkit/wpewebkit/0004-WPE-Platform-fix-wpe_view_resize-was-not-declared-is.patch new file mode 100644 index 00000000..d5b4396f --- /dev/null +++ b/recipes-browser/wpewebkit/wpewebkit/0004-WPE-Platform-fix-wpe_view_resize-was-not-declared-is.patch @@ -0,0 +1,48 @@ +From b92e21659ae4621240e444156512961a14007881 Mon Sep 17 00:00:00 2001 +From: LI Qingwu +Date: Thu, 10 Oct 2024 12:56:58 +0800 +Subject: [PATCH 4/4] WPE Platform: fix wpe_view_resize was not declared issue + +fix Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp:87:5: +error: 'wpe_view_resize' was not declared in this scope; +did you mean 'wpe_view_resized'? + +Upstream-Status: Pending [1] +[1] https://github.com/WebKit/WebKit/pull/34441 + +Signed-off-by: LI Qingwu +--- + Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp b/Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp +index 5ff20ab8c2b8..f91cac137e5e 100644 +--- a/Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp ++++ b/Source/WebKit/UIProcess/API/wpe/qt6/WPEQtView.cpp +@@ -84,7 +84,10 @@ void WPEQtView::geometryChange(const QRectF& newGeometry, const QRectF&) + return; + + auto* wpeView = webkit_web_view_get_wpe_view(d->m_webView.get()); +- wpe_view_resize(wpeView, d->m_size.width(), d->m_size.height()); ++ auto* wpeToplevel = wpe_view_get_toplevel(wpeView); ++ if (wpeToplevel) ++ wpe_toplevel_resize(wpeToplevel, d->m_size.width(), d->m_size.height()); ++ + } + + void WPEQtView::configureWindow() +@@ -119,7 +122,10 @@ void WPEQtView::createWebView() + "settings", settings.get(), nullptr))); + + auto* wpeView = webkit_web_view_get_wpe_view(d->m_webView.get()); +- wpe_view_resize(wpeView, d->m_size.width(), d->m_size.height()); ++ auto* wpeToplevel = wpe_view_get_toplevel(wpeView); ++ if (wpeToplevel) ++ wpe_toplevel_resize(wpeToplevel, d->m_size.width(), d->m_size.height()); ++ + wpe_view_map(wpeView); // FIXME: unmap when appropriate and implement can_be_mapped if needed. + + if (!wpe_view_qtquick_initialize_rendering(WPE_VIEW_QTQUICK(wpeView), this, &error.outPtr())) { +-- +2.34.1 + diff --git a/recipes-browser/wpewebkit/wpewebkit_2.46.1.bb b/recipes-browser/wpewebkit/wpewebkit_2.46.1.bb index 5be7c7e4..6c390b84 100644 --- a/recipes-browser/wpewebkit/wpewebkit_2.46.1.bb +++ b/recipes-browser/wpewebkit/wpewebkit_2.46.1.bb @@ -5,6 +5,8 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI = "https://wpewebkit.org/releases/${BPN}-${PV}.tar.xz;name=tarball \ file://0001-JSC-Fix-build-failure-on-musl-Add-fallback-for-round.patch \ + file://0003-WPE-Platform-fix-wpe_toplevel_qtquick-has-not-been-d.patch \ + file://0004-WPE-Platform-fix-wpe_view_resize-was-not-declared-is.patch \ " SRC_URI[tarball.sha256sum] = "1e0aaf870f36001c42b1ce5a2027b4101bed878746e437cc6d6fed0693afe9ad"