From 89080bac9bc47946a09c1e74f2f872363bf6785b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABl=20PORTAY?= Date: Tue, 15 Aug 2017 16:38:53 -0400 Subject: [PATCH] qt5webengine: new package MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit This patch is based on works [1] and [2]. With this patch, one can run the Qt5 WebEngine quicknanobrowser sample with the following options. BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" and BR2_TOOLCHAIN_BUILDROOT_CXX (Qt 5 needs a toolchain w/ wchar, NPTL, C++, dynamic library; for now it builds only with glibc) BR2_PACKAGE_LIBERATION (Qt needs at least one font) BR2_PACKAGE_QT5BASE_EXAMPLES (to install quicknanobrowser sample) BR2_PACKAGE_QT5BASE_GIF (do display gif) BR2_PACKAGE_QT5BASE_JPEG (do display jpeg) BR2_PACKAGE_QT5BASE_PNG (do display png) BR2_PACKAGE_QT5QUICKCONTROLS (needed by webengine) BR2_PACKAGE_QT5QUICKCONTROLS2 (needed by webengine) BR2_PACKAGE_QT5WEBENGINE (because it is what we want) Qt WebEngine requires an Open(E)GL-capable backend. As an example, the package rpi-userland must be enabled to build for a rpi. BR2_PACKAGE_RPI_USERLAND (to enable OpenGL ES backend) To browse for HTTPS websites, please consider adding the following options as well for SSL/TLS. BR2_PACKAGE_CA_CERT (for certificates) BR2_PACKAGE_NTPD (to sync date for certificates) Since version 5.9, chromium requires udev at runtime (see note 4). BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV (input backend) To run quicknanobrowser # cd /usr/lib/qt/examples/webengine/quicknanobrowser/ # ./quicknanobrowser https://www.buildroot.org/ Note: The chromium.inc has been generated using the following command. ( echo 'CHROMIUM_LICENSE_FILES = \' && cd output/build/qt5webengine-5.9.1/ && \ find "src/3rdparty/chromium/" -type f -iname "*LICENSE*" -o -iname "*COPYING*" -o -iname "*GPL*" | \ sed -e '/\.asm$/d' \ -e '/\.h$/d' \ -e '/\.c$/d' \ -e '/\.cc$/d' \ -e '/\.cpp$/d' \ -e '/\.pyc\?$/d' \ -e '/\.pl$/d' \ -e '/\.sha1$/d' \ -e '/\.patch$/d' \ -e '/licensecheck/d' \ -e 's,^,\t,' \ -e 's,$, \\,' | \ sort && \ echo '' ) >package/qt5/qt5webengine/chromium.inc Note 2: Since 5.9.1, the chromium's copy of opus fails with neon [3]. Qt WebEngine can uses buildroot ffmpeg copy which compiles fine (using qmake flag WEBENGINE_CONFIG+=use_system_ffmpeg). It implies selecting the following options. BR2_PACKAGE_FFMPEG BR2_PACKAGE_OPUS BR2_PACKAGE_LIBVPX BR2_PACKAGE_WEBP BR2_PACKAGE_WEBP_DEMUX In file included from ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:31:0: /home/gportay/src/buildroot/output-rpi3-qt5.9/host/lib/gcc/arm-buildroot-linux-gnueabihf/6.4.0/include/arm_neon.h:8997:1: error: inlining failed in call to always_inline ‘vld1q_s32’: target specific option mismatch vld1q_s32 (const int32_t * __a) ^~~~~~~~~ ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c:40:15: note: called from here int32x4_t coef0 = vld1q_s32(coef32); ^~~~~ ../../3rdparty/chromium/third_party/opus/src/silk/arm/NSQ_neon.c: At top level: cc1: warning: unrecognized command line option ‘-Wno-#pragma-messages’ Note 3: Version 5.6.2 causes a build issue while building chromium. The build against this version is disabled until the release 5.6.3 is out. Note 4: Here is trace when udev does not run # cd /usr/lib/qt/examples/webengine/quicknanobrowser # ./quicknanobrowser QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root' Unable to query physical screen size, defaulting to 100 dpi. To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters). [0101/000248.161973:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale [0101/000248.384693:WARNING:resource_bundle_qt.cpp(114)] locale_file_path.empty() for locale [202:223:0101/000248.484954:FATAL:udev_loader.cc(38)] Check failed: false. #0 0x0000742b93de #1 0x0000742c3c38 #2 0x000073e1e1aa #3 0x000073e1d96e #4 0x000073e1defa #5 0x000074af6364 #6 0x000074302878 #7 0x0000742c8fee #8 0x0000742c9f44 #9 0x0000742ca21e #10 0x0000742cac4c #11 0x0000742c87b2 #12 0x0000742da4f6 #13 0x000073ed9d38 #14 0x000073eda03c #15 0x0000742e9aec #16 0x0000742e71dc Aborted Note 5: On rpi and depending on what is insinde the .config, more GPU memory should be allocated to run properly qt samples. #0 0x0000742c63de #1 0x0000742d0c38 #2 0x0000749d7bde #3 0x0000749e3c70 #4 0x00007530227c #5 0x000075302480 #6 0x0000752fb1e4 #7 0x00007430f878 #8 0x0000742d5fee #9 0x0000742d6f44 #10 0x0000742d721e #11 0x0000742d7ad6 #12 0x0000742d57b2 #13 0x0000742e74f6 #14 0x0000742f6a74 #15 0x0000742f41dc Received signal 6 #0 0x0000742c63de #1 0x0000742c66a0 #2 0x0000725b5d10 [end of stack trace] qml: Render process exited with code 256 (abnormal exit) # mount /dev/mmcblk0p1 /mnt # sed '/^gpu_mem_/s,=.*,=200,' -i /mnt/config.txt # umount /mnt Note 6: The first patch fixes a build issue when samples are compiled without the support of printing [4]. This patch is already merged in branch 5.9 [5] and concerns only 5.9.1. 085c2c52 Always compile QWebEnginePage::print It fixes the error below. .obj/browsermainwindow.o: In function `BrowserMainWindow::printRequested(QWebEnginePage*)': browsermainwindow.cpp:(.text+0x2cc0): undefined reference to `QWebEnginePage::print(QPrinter*, QWebEngineCallback const&)' The second patch loads both libEGL and libGLESv2 symbols implicitly instead of loading them with explicitly using hard-coded locations. It fixes a bug when providers of lib*GL does not create libraries named libEGL.so.1 and libGLESv2.s2 [6]. This patch is already merged in branch 5.9 [7]. d4c621f6 Load libEGL and libGLES2 symbols implicitly It fixes the error below. [327:347:1221/085837:ERROR:surface_factory_qt.cpp(68)] Failed to load /usr/lib/libGLESv2.so.2: /usr/lib/libGLESv2.so.2: cannot open shared object file: No such file or directory [1]: http://lists.busybox.net/pipermail/buildroot/2015-July/132010.html [2]: https://patchwork.ozlabs.org/patch/640633/ [3]: https://patchwork.ozlabs.org/patch/791332/ [4]: https://bugreports.qt.io/browse/QTBUG-61510 [5]: https://codereview.qt-project.org/#/c/198041/ [6]: https://bugreports.qt.io/browse/QTBUG-57761 [7]: https://codereview.qt-project.org/#/c/199554/ Cc: Akihiko Odaki Cc: Julien Corjon Signed-off-by: Gaël PORTAY [Arnout: - move more dependencies to _ARCH_DEPENDS; - mention all toolchain dependencies in the comments] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) --- DEVELOPERS | 1 + package/qt5/Config.in | 1 + ...-Always-compile-QWebEnginePage-print.patch | 246 ++++++++++++++ ...bEGL-and-libGLES2-symbols-implicitly.patch | 89 +++++ package/qt5/qt5webengine/Config.in | 86 +++++ package/qt5/qt5webengine/chromium.inc | 310 ++++++++++++++++++ package/qt5/qt5webengine/qt5webengine.hash | 2 + package/qt5/qt5webengine/qt5webengine.mk | 80 +++++ 8 files changed, 815 insertions(+) create mode 100644 package/qt5/qt5webengine/5.9.1/0001-Always-compile-QWebEnginePage-print.patch create mode 100644 package/qt5/qt5webengine/5.9.1/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch create mode 100644 package/qt5/qt5webengine/Config.in create mode 100644 package/qt5/qt5webengine/chromium.inc create mode 100644 package/qt5/qt5webengine/qt5webengine.hash create mode 100644 package/qt5/qt5webengine/qt5webengine.mk diff --git a/DEVELOPERS b/DEVELOPERS index 536ec5680a..e34802f2ba 100644 --- a/DEVELOPERS +++ b/DEVELOPERS @@ -643,6 +643,7 @@ F: package/zxing-cpp/ N: Gaël Portay F: package/qt5/qt5virtualkeyboard/ +F: package/qt5/qt5webengine/ N: Gary Bisson F: board/boundarydevices/ diff --git a/package/qt5/Config.in b/package/qt5/Config.in index 1802c86f85..8513c36623 100644 --- a/package/qt5/Config.in +++ b/package/qt5/Config.in @@ -80,6 +80,7 @@ source "package/qt5/qt5virtualkeyboard/Config.in" source "package/qt5/qt5wayland/Config.in" source "package/qt5/qt5webchannel/Config.in" source "package/qt5/qt5webkit/Config.in" +source "package/qt5/qt5webengine/Config.in" source "package/qt5/qt5websockets/Config.in" source "package/qt5/qt5x11extras/Config.in" source "package/qt5/qt5xmlpatterns/Config.in" diff --git a/package/qt5/qt5webengine/5.9.1/0001-Always-compile-QWebEnginePage-print.patch b/package/qt5/qt5webengine/5.9.1/0001-Always-compile-QWebEnginePage-print.patch new file mode 100644 index 0000000000..5e863231ac --- /dev/null +++ b/package/qt5/qt5webengine/5.9.1/0001-Always-compile-QWebEnginePage-print.patch @@ -0,0 +1,246 @@ +From 085c2c529473bbe9dd7c8c5698a45053520cc423 Mon Sep 17 00:00:00 2001 +From: =?utf-8?q?J=C3=BCri=20Valdmann?= +Date: Tue, 20 Jun 2017 15:36:43 +0200 +Subject: [PATCH 1/1] Always compile QWebEnginePage::print + +- Remove two out of five layers of ifdefs around and inside this method. +- Now always compiled but will yield an error if printing is disabled. +- Remove printing-related ifdefs from demobrowser. + +Task-number: QTBUG-61510 +Change-Id: I79781189d3d3fb62db0a2216b2b989e3fa1d1f86 +Reviewed-by: Allan Sandfeld Jensen +Reviewed-by: Rolf Eike Beer +Upstream-Status: Merged +Signed-off-by: Gaël PORTAY +--- + examples/webenginewidgets/demobrowser/browsermainwindow.cpp | 12 ------------ + examples/webenginewidgets/demobrowser/browsermainwindow.h | 6 ------ + examples/webenginewidgets/demobrowser/printtopdfdialog.cpp | 7 ------- + src/webenginewidgets/api/qwebenginepage.cpp | 10 ++-------- + src/webenginewidgets/api/qwebenginepage.h | 8 -------- + 5 files changed, 2 insertions(+), 41 deletions(-) + +diff --git a/examples/webenginewidgets/demobrowser/browsermainwindow.cpp b/examples/webenginewidgets/demobrowser/browsermainwindow.cpp +index 327d7a9d..14d49f7f 100644 +--- a/examples/webenginewidgets/demobrowser/browsermainwindow.cpp ++++ b/examples/webenginewidgets/demobrowser/browsermainwindow.cpp +@@ -109,9 +109,7 @@ BrowserMainWindow::BrowserMainWindow(QWidget *parent, Qt::WindowFlags flags) + , m_historyForward(0) + , m_stop(0) + , m_reload(0) +-#ifndef QT_NO_PRINTER + , m_currentPrinter(nullptr) +-#endif + { + setToolButtonStyle(Qt::ToolButtonFollowStyle); + setAttribute(Qt::WA_DeleteOnClose, true); +@@ -312,9 +310,7 @@ void BrowserMainWindow::setupMenu() + #if defined(QWEBENGINEPAGE_PRINT) + fileMenu->addAction(tr("P&rint Preview..."), this, SLOT(slotFilePrintPreview())); + #endif +-#ifndef QT_NO_PRINTER + fileMenu->addAction(tr("&Print..."), this, SLOT(slotFilePrint()), QKeySequence::Print); +-#endif + fileMenu->addAction(tr("&Print to PDF..."), this, SLOT(slotFilePrintToPDF())); + fileMenu->addSeparator(); + +@@ -702,23 +698,19 @@ void BrowserMainWindow::slotFileOpen() + + void BrowserMainWindow::slotFilePrintPreview() + { +-#ifndef QT_NO_PRINTPREVIEWDIALOG + if (!currentTab()) + return; + QPrintPreviewDialog *dialog = new QPrintPreviewDialog(this); + connect(dialog, SIGNAL(paintRequested(QPrinter*)), + currentTab(), SLOT(print(QPrinter*))); + dialog->exec(); +-#endif + } + + void BrowserMainWindow::slotFilePrint() + { +-#ifndef QT_NO_PRINTER + if (!currentTab()) + return; + printRequested(currentTab()->page()); +-#endif + } + + void BrowserMainWindow::slotHandlePdfPrinted(const QByteArray& result) +@@ -751,7 +743,6 @@ void BrowserMainWindow::slotFilePrintToPDF() + currentTab()->page()->printToPdf(invoke(this, &BrowserMainWindow::slotHandlePdfPrinted), dialog->pageLayout()); + } + +-#ifndef QT_NO_PRINTER + void BrowserMainWindow::slotHandlePagePrinted(bool result) + { + Q_UNUSED(result); +@@ -763,7 +754,6 @@ void BrowserMainWindow::slotHandlePagePrinted(bool result) + + void BrowserMainWindow::printRequested(QWebEnginePage *page) + { +-#ifndef QT_NO_PRINTDIALOG + if (m_currentPrinter) + return; + m_currentPrinter = new QPrinter(); +@@ -774,9 +764,7 @@ void BrowserMainWindow::printRequested(QWebEnginePage *page) + return; + } + page->print(m_currentPrinter, invoke(this, &BrowserMainWindow::slotHandlePagePrinted)); +-#endif + } +-#endif + + void BrowserMainWindow::slotPrivateBrowsing() + { +diff --git a/examples/webenginewidgets/demobrowser/browsermainwindow.h b/examples/webenginewidgets/demobrowser/browsermainwindow.h +index 91e1c1d2..5bbbb292 100644 +--- a/examples/webenginewidgets/demobrowser/browsermainwindow.h ++++ b/examples/webenginewidgets/demobrowser/browsermainwindow.h +@@ -56,9 +56,7 @@ + #include + + QT_BEGIN_NAMESPACE +-#ifndef QT_NO_PRINTER + class QPrinter; +-#endif + class QWebEnginePage; + QT_END_NAMESPACE + +@@ -142,10 +140,8 @@ private slots: + void slotSwapFocus(); + void slotHandlePdfPrinted(const QByteArray&); + +-#ifndef QT_NO_PRINTER + void slotHandlePagePrinted(bool result); + void printRequested(QWebEnginePage *page); +-#endif + void geometryChangeRequested(const QRect &geometry); + void updateToolbarActionText(bool visible); + void updateBookmarksToolbarActionText(bool visible); +@@ -180,9 +176,7 @@ private: + QAction *m_restoreLastSession; + QAction *m_addBookmark; + +-#ifndef QT_NO_PRINTER + QPrinter *m_currentPrinter; +-#endif + + QIcon m_reloadIcon; + QIcon m_stopIcon; +diff --git a/examples/webenginewidgets/demobrowser/printtopdfdialog.cpp b/examples/webenginewidgets/demobrowser/printtopdfdialog.cpp +index 0f3b1765..50a8bb91 100644 +--- a/examples/webenginewidgets/demobrowser/printtopdfdialog.cpp ++++ b/examples/webenginewidgets/demobrowser/printtopdfdialog.cpp +@@ -52,10 +52,8 @@ + #include "ui_printtopdfdialog.h" + + #include +-#ifndef QT_NO_PRINTER + #include + #include +-#endif // QT_NO_PRINTER + #include + + PrintToPdfDialog::PrintToPdfDialog(const QString &filePath, QWidget *parent) : +@@ -66,11 +64,8 @@ PrintToPdfDialog::PrintToPdfDialog(const QString &filePath, QWidget *parent) : + ui->setupUi(this); + setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + connect(ui->chooseFilePathButton, &QToolButton::clicked, this, &PrintToPdfDialog::onChooseFilePathButtonClicked); +-#ifndef QT_NO_PRINTER + connect(ui->choosePageLayoutButton, &QToolButton::clicked, this, &PrintToPdfDialog::onChoosePageLayoutButtonClicked); +-#else + ui->choosePageLayoutButton->hide(); +-#endif // QT_NO_PRINTER + updatePageLayoutLabel(); + setFilePath(filePath); + } +@@ -82,7 +77,6 @@ PrintToPdfDialog::~PrintToPdfDialog() + + void PrintToPdfDialog::onChoosePageLayoutButtonClicked() + { +-#ifndef QT_NO_PRINTER + QPrinter printer; + printer.setPageLayout(currentPageLayout); + +@@ -92,7 +86,6 @@ void PrintToPdfDialog::onChoosePageLayoutButtonClicked() + currentPageLayout.setPageSize(printer.pageLayout().pageSize()); + currentPageLayout.setOrientation(printer.pageLayout().orientation()); + updatePageLayoutLabel(); +-#endif // QT_NO_PRINTER + } + + void PrintToPdfDialog::onChooseFilePathButtonClicked() +diff --git a/src/webenginewidgets/api/qwebenginepage.cpp b/src/webenginewidgets/api/qwebenginepage.cpp +index 2cdb0116..6042b9fd 100644 +--- a/src/webenginewidgets/api/qwebenginepage.cpp ++++ b/src/webenginewidgets/api/qwebenginepage.cpp +@@ -80,11 +80,9 @@ + #include + #include + #include +-#if defined(QT_PRINTSUPPORT_LIB) +-#ifndef QT_NO_PRINTER ++#ifdef ENABLE_PRINTING + #include +-#endif //QT_NO_PRINTER +-#endif //QT_PRINTSUPPORT_LIB ++#endif + #include + #include + #include +@@ -2051,8 +2049,6 @@ void QWebEnginePage::printToPdf(const QWebEngineCallback &res + #endif // if defined(ENABLE_PDF) + } + +-#if defined(QT_PRINTSUPPORT_LIB) +-#ifndef QT_NO_PRINTER + /*! + \fn void QWebEnginePage::print(QPrinter *printer, FunctorOrLambda resultCallback) + Renders the current content of the page into a temporary PDF document, then prints it using \a printer. +@@ -2089,8 +2085,6 @@ void QWebEnginePage::print(QPrinter *printer, const QWebEngineCallback &re + d->m_callbacks.invokeDirectly(resultCallback, false); + #endif // if defined(ENABLE_PDF) + } +-#endif // if defined(QT_NO_PRINTER) +-#endif // if defined(QT_PRINTSUPPORT_LIB) + + /*! + \since 5.7 +diff --git a/src/webenginewidgets/api/qwebenginepage.h b/src/webenginewidgets/api/qwebenginepage.h +index c7d5a19e..5619639c 100644 +--- a/src/webenginewidgets/api/qwebenginepage.h ++++ b/src/webenginewidgets/api/qwebenginepage.h +@@ -55,11 +55,7 @@ + + QT_BEGIN_NAMESPACE + class QMenu; +-#if defined(QT_PRINTSUPPORT_LIB) +-#ifndef QT_NO_PRINTER + class QPrinter; +-#endif // QT_NO_PRINTER +-#endif // QT_PRINTSUPPORT_LIB + + class QWebChannel; + class QWebEngineContextMenuData; +@@ -294,15 +290,11 @@ public: + void printToPdf(const QWebEngineCallback &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF())); + #endif + +-#if defined(QT_PRINTSUPPORT_LIB) +-#ifndef QT_NO_PRINTER + #ifdef Q_QDOC + void print(QPrinter *printer, FunctorOrLambda resultCallback); + #else + void print(QPrinter *printer, const QWebEngineCallback &resultCallback); + #endif // QDOC +-#endif // QT_NO_PRINTER +-#endif // QT_PRINTSUPPORT_LIB + + const QWebEngineContextMenuData &contextMenuData() const; + +-- +2.13.2 + diff --git a/package/qt5/qt5webengine/5.9.1/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch b/package/qt5/qt5webengine/5.9.1/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch new file mode 100644 index 0000000000..b8ef687f99 --- /dev/null +++ b/package/qt5/qt5webengine/5.9.1/0002-Load-libEGL-and-libGLES2-symbols-implicitly.patch @@ -0,0 +1,89 @@ +From d4c621f6a6b87f2a86069fa393b9f7c4f9e7b9ad Mon Sep 17 00:00:00 2001 +From: Viktor Engelmann +Date: Fri, 7 Jul 2017 12:56:19 +0200 +Subject: [PATCH] Load libEGL and libGLES2 symbols implicitly + +Instead of explicitly loading libraries from hard-coded locations, +we now just call dlopen(NULL, RTLD_LAZY). This returns a handle to +the host process'es context, which already contains the symbols of +both these libraries, because we link against them. +It was necessary to bypass LoadLibrary, because that expects a non-NULL +file path, so we couldn't pass NULL through that interface. + +Task-number: QTBUG-57761 +Change-Id: I29f037dfe542222b5188a33c7727c81a464a87bb +Reviewed-by: Allan Sandfeld Jensen +Reviewed-by: Michal Klocek +Upstream-Status: Merged +Signed-off-by: Gaël PORTAY +--- + src/core/surface_factory_qt.cpp | 40 ++++++++-------------------------------- + 1 file changed, 8 insertions(+), 32 deletions(-) + +diff --git a/src/core/surface_factory_qt.cpp b/src/core/surface_factory_qt.cpp +index 36c05ec5..e8be8480 100644 +--- a/src/core/surface_factory_qt.cpp ++++ b/src/core/surface_factory_qt.cpp +@@ -51,51 +51,27 @@ + #if defined(USE_OZONE) + + #include +- +-#ifndef QT_LIBDIR_EGL +-#define QT_LIBDIR_EGL "/usr/lib" +-#endif +-#ifndef QT_LIBDIR_GLES2 +-#define QT_LIBDIR_GLES2 QT_LIBDIR_EGL +-#endif ++#include + + namespace QtWebEngineCore { + +-base::NativeLibrary LoadLibrary(const base::FilePath& filename) { +- base::NativeLibraryLoadError error; +- base::NativeLibrary library = base::LoadNativeLibrary(filename, &error); +- if (!library) { +- LOG(ERROR) << "Failed to load " << filename.MaybeAsASCII() << ": " << error.ToString(); +- return NULL; +- } +- return library; +-} +- + bool SurfaceFactoryQt::LoadEGLGLES2Bindings() + { +- base::FilePath libEGLPath = QtWebEngineCore::toFilePath(QT_LIBDIR_EGL); +- libEGLPath = libEGLPath.Append("libEGL.so.1"); +- base::NativeLibrary eglLibrary = LoadLibrary(libEGLPath); +- if (!eglLibrary) +- return false; +- +- base::FilePath libGLES2Path = QtWebEngineCore::toFilePath(QT_LIBDIR_GLES2); +- libGLES2Path = libGLES2Path.Append("libGLESv2.so.2"); +- base::NativeLibrary gles2Library = LoadLibrary(libGLES2Path); +- if (!gles2Library) ++ base::NativeLibrary eglgles2Library = dlopen(NULL, RTLD_LAZY); ++ if (!eglgles2Library) { ++ LOG(ERROR) << "Failed to open EGL/GLES2 context " << dlerror(); + return false; ++ } + +- gl::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglLibrary, "eglGetProcAddress")); ++ gl::GLGetProcAddressProc get_proc_address = reinterpret_cast(base::GetFunctionPointerFromNativeLibrary(eglgles2Library, "eglGetProcAddress")); + if (!get_proc_address) { + LOG(ERROR) << "eglGetProcAddress not found."; +- base::UnloadNativeLibrary(eglLibrary); +- base::UnloadNativeLibrary(gles2Library); ++ base::UnloadNativeLibrary(eglgles2Library); + return false; + } + + gl::SetGLGetProcAddressProc(get_proc_address); +- gl::AddGLNativeLibrary(eglLibrary); +- gl::AddGLNativeLibrary(gles2Library); ++ gl::AddGLNativeLibrary(eglgles2Library); + return true; + } + +-- +2.13.2 + diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in new file mode 100644 index 0000000000..6b68d1b2a8 --- /dev/null +++ b/package/qt5/qt5webengine/Config.in @@ -0,0 +1,86 @@ +config BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + bool + default y if BR2_aarch64 || BR2_arm || \ + BR2_i386 || BR2_x86_64 || \ + BR2_mips || BR2_mips64 + depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE # qt5declarative + depends on !BR2_BINFMT_FLAT # qt5base-icu + depends on BR2_USE_MMU # libglib2, qt5base-dbus + +comment "qt5webengine needs udev /dev management and a glibc toolchain w/ gcc >= 4.8, host gcc >= 4.8, threads, wchar" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_HAS_UDEV || !BR2_TOOLCHAIN_USES_GLIBC || \ + !BR2_HOST_GCC_AT_LEAST_4_8 || !BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 || \ + !BR2_TOOLCHAIN_HAS_THREADS || !BR2_USE_WCHAR + +comment "qt5webengine needs an OpenGL and EGL-capable backend" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on !BR2_PACKAGE_QT5_GL_AVAILABLE || !BR2_PACKAGE_HAS_LIBEGL + +comment "qt5webengine is not available with Qt 5.6" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on BR2_PACKAGE_QT5_VERSION_5_6 + +config BR2_PACKAGE_QT5WEBENGINE + bool "qt5webengine" + depends on BR2_PACKAGE_QT5WEBENGINE_ARCH_SUPPORTS + depends on BR2_TOOLCHAIN_USES_GLIBC # execinfo.h, mallinfo + depends on BR2_HOST_GCC_AT_LEAST_4_8 # qt5base-icu + depends on BR2_TOOLCHAIN_GCC_AT_LEAST_4_8 # qt5base-icu + depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, libvpx, qt5base-dbus + depends on BR2_USE_WCHAR # libglib2 + depends on BR2_PACKAGE_QT5_GL_AVAILABLE # qt5declarative, qt5base-eglfs + depends on BR2_PACKAGE_HAS_LIBEGL # qt5base-eglfs + depends on BR2_PACKAGE_HAS_UDEV + depends on !BR2_PACKAGE_QT5_VERSION_5_6 + # v8 (a chromium 3rd-party) compiles its internal host-tools with the + # same word size as the target. For 32-bits targets, it adds the -m32 + # flag (for 64-bits, it adds the -m64 flag). + # https://github.com/v8/v8/blob/5.6.326.55/gypfiles/toolchain.gypi#L1036-L1037 + select BR2_HOSTARCH_NEEDS_IA32_COMPILER if !BR2_ARCH_IS_64 # v8/chromium + select BR2_PACKAGE_FFMPEG + select BR2_PACKAGE_LIBGLIB2 + select BR2_PACKAGE_LIBVPX + select BR2_PACKAGE_OPUS + select BR2_PACKAGE_WEBP + select BR2_PACKAGE_WEBP_DEMUX + select BR2_PACKAGE_QT5BASE_DBUS + select BR2_PACKAGE_QT5BASE_EGLFS + select BR2_PACKAGE_QT5BASE_FONTCONFIG + select BR2_PACKAGE_QT5BASE_ICU + select BR2_PACKAGE_QT5BASE_GUI + select BR2_PACKAGE_QT5BASE_WIDGETS + select BR2_PACKAGE_QT5DECLARATIVE + select BR2_PACKAGE_QT5DECLARATIVE_QUICK + select BR2_PACKAGE_QT5QUICKCONTROLS + select BR2_PACKAGE_QT5QUICKCONTROLS2 + select BR2_PACKAGE_QT5WEBCHANNEL + select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXCURSOR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXI if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXRANDR if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXSCRNSAVER if BR2_PACKAGE_QT5BASE_XCB + select BR2_PACKAGE_XLIB_LIBXTST if BR2_PACKAGE_QT5BASE_XCB + help + The Qt WebEngine module provides a web browser engine that + makes it easy to embed content from the World Wide Web into + your Qt application. + + Qt WebEngine provides C++ classes and QML types for rendering + HTML, XHTML, and SVG documents, styled using Cascading Style + Sheets (CSS) and scripted with JavaScript. HTML documents can + be made fully editable by the user through the use of the + contenteditable attribute on HTML elements. + + http://doc.qt.io/qt-5/qtwebengine-index.html + +if BR2_PACKAGE_QT5WEBENGINE + +config BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS + bool "proprietary codecs" + help + Qt WebEngine supports the MPEG-4 Part 14 (MP4) file format, + which includes required proprietary audio and video codecs, + such as H.264 and MPEG layer-3 (MP3). + +endif diff --git a/package/qt5/qt5webengine/chromium.inc b/package/qt5/qt5webengine/chromium.inc new file mode 100644 index 0000000000..da709fd5a0 --- /dev/null +++ b/package/qt5/qt5webengine/chromium.inc @@ -0,0 +1,310 @@ +CHROMIUM_LICENSE_FILES = \ + src/3rdparty/chromium/base/third_party/dmg_fp/LICENSE \ + src/3rdparty/chromium/base/third_party/dynamic_annotations/LICENSE \ + src/3rdparty/chromium/base/third_party/icu/LICENSE \ + src/3rdparty/chromium/base/third_party/libevent/LICENSE \ + src/3rdparty/chromium/base/third_party/nspr/LICENSE \ + src/3rdparty/chromium/base/third_party/superfasthash/LICENSE \ + src/3rdparty/chromium/base/third_party/symbolize/LICENSE \ + src/3rdparty/chromium/base/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_mime/LICENSE \ + src/3rdparty/chromium/base/third_party/xdg_user_dirs/LICENSE \ + src/3rdparty/chromium/buildtools/LICENSE \ + src/3rdparty/chromium/buildtools/third_party/libc++abi/trunk/LICENSE.TXT \ + src/3rdparty/chromium/buildtools/third_party/libc++/trunk/LICENSE.TXT \ + src/3rdparty/chromium/chrome/third_party/chromevox/LICENSE \ + src/3rdparty/chromium/chrome/third_party/chromevox/third_party/closure-library/LICENSE \ + src/3rdparty/chromium/LICENSE \ + src/3rdparty/chromium/LICENSE.chromium_os \ + src/3rdparty/chromium/mojo/public/LICENSE \ + src/3rdparty/chromium/net/third_party/mozilla_security_manager/LICENSE \ + src/3rdparty/chromium/net/third_party/nss/LICENSE \ + src/3rdparty/chromium/ppapi/LICENSE \ + src/3rdparty/chromium/sdch/open-vcdiff/COPYING \ + src/3rdparty/chromium/testing/gmock/LICENSE \ + src/3rdparty/chromium/testing/gmock/scripts/generator/LICENSE \ + src/3rdparty/chromium/testing/gtest/LICENSE \ + src/3rdparty/chromium/third_party/accessibility_test_framework/LICENSE \ + src/3rdparty/chromium/third_party/afl/src/docs/COPYING \ + src/3rdparty/chromium/third_party/angle/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/compiler/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/angle/src/third_party/murmurhash/LICENSE \ + src/3rdparty/chromium/third_party/apache-portable-runtime/LICENSE \ + src/3rdparty/chromium/third_party/apache_velocity/LICENSE \ + src/3rdparty/chromium/third_party/apple_apsl/LICENSE \ + src/3rdparty/chromium/third_party/bintrees/LICENSE.txt \ + src/3rdparty/chromium/third_party/blanketjs/LICENSE \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE.Apache \ + src/3rdparty/chromium/third_party/blimp_fonts/LICENSE.OFL \ + src/3rdparty/chromium/third_party/boringssl/src/LICENSE \ + src/3rdparty/chromium/third_party/boringssl/src/third_party/android-cmake/LICENSE \ + src/3rdparty/chromium/third_party/bouncycastle/LICENSE \ + src/3rdparty/chromium/third_party/brotli/LICENSE \ + src/3rdparty/chromium/third_party/bspatch/LICENSE \ + src/3rdparty/chromium/third_party/byte_buddy/LICENSE \ + src/3rdparty/chromium/third_party/ced/LICENSE \ + src/3rdparty/chromium/third_party/ced/src/LICENSE \ + src/3rdparty/chromium/third_party/chaijs/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE \ + src/3rdparty/chromium/third_party/checkstyle/LICENSE.apache20 \ + src/3rdparty/chromium/third_party/cld_3/LICENSE \ + src/3rdparty/chromium/third_party/cld_3/src/LICENSE \ + src/3rdparty/chromium/third_party/cld/LICENSE \ + src/3rdparty/chromium/third_party/closure_compiler/compiler/COPYING \ + src/3rdparty/chromium/third_party/closure_compiler/LICENSE \ + src/3rdparty/chromium/third_party/closure_linter/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cctools/cctools/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/apple_cf/APPLE_LICENSE \ + src/3rdparty/chromium/third_party/crashpad/crashpad/third_party/getopt/LICENSE \ + src/3rdparty/chromium/third_party/cros_system_api/LICENSE \ + src/3rdparty/chromium/third_party/cros_system_api/MODULE_LICENSE_BSD \ + src/3rdparty/chromium/third_party/custom_tabs_client/LICENSE \ + src/3rdparty/chromium/third_party/d3/src/LICENSE \ + src/3rdparty/chromium/third_party/decklink/LICENSE \ + src/3rdparty/chromium/third_party/devscripts/COPYING \ + src/3rdparty/chromium/third_party/dom_distiller_js/LICENSE \ + src/3rdparty/chromium/third_party/dpkg-dev/LICENSE \ + src/3rdparty/chromium/third_party/drmemory/LICENSE \ + src/3rdparty/chromium/third_party/errorprone/LICENSE \ + src/3rdparty/chromium/third_party/espresso/LICENSE \ + src/3rdparty/chromium/third_party/expat/files/COPYING \ + src/3rdparty/chromium/third_party/ffmpeg/chromium/scripts/license_texts/full_lgpl.txt \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv2 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.GPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv2.1 \ + src/3rdparty/chromium/third_party/ffmpeg/COPYING.LGPLv3 \ + src/3rdparty/chromium/third_party/ffmpeg/LICENSE.md \ + src/3rdparty/chromium/third_party/fips181/COPYING \ + src/3rdparty/chromium/third_party/flac/COPYING.FDL \ + src/3rdparty/chromium/third_party/flac/COPYING.GPL \ + src/3rdparty/chromium/third_party/flac/COPYING.LGPL \ + src/3rdparty/chromium/third_party/flac/COPYING.Xiph \ + src/3rdparty/chromium/third_party/flatbuffers/LICENSE \ + src/3rdparty/chromium/third_party/flatbuffers/src/LICENSE.txt \ + src/3rdparty/chromium/third_party/flot/LICENSE.txt \ + src/3rdparty/chromium/third_party/fontconfig/LICENSE \ + src/3rdparty/chromium/third_party/fontconfig/src/COPYING \ + src/3rdparty/chromium/third_party/freetype2/src/docs/GPLv2.TXT \ + src/3rdparty/chromium/third_party/freetype2/src/docs/LICENSE.TXT \ + src/3rdparty/chromium/third_party/gardiner_mod/LICENSE \ + src/3rdparty/chromium/third_party/gif_player/LICENSE \ + src/3rdparty/chromium/third_party/glslang/LICENSE \ + src/3rdparty/chromium/third_party/grpc/LICENSE \ + src/3rdparty/chromium/third_party/grpc/src/node/health_check/LICENSE \ + src/3rdparty/chromium/third_party/grpc/src/php/ext/grpc/LICENSE \ + src/3rdparty/chromium/third_party/grpc/third_party/nanopb/LICENSE.txt \ + src/3rdparty/chromium/third_party/grpc/third_party/rake-compiler-dock/LICENSE.txt \ + src/3rdparty/chromium/third_party/guava/LICENSE \ + src/3rdparty/chromium/third_party/gvr-android-sdk/LICENSE \ + src/3rdparty/chromium/third_party/haha/LICENSE \ + src/3rdparty/chromium/third_party/hamcrest/LICENSE \ + src/3rdparty/chromium/third_party/harfbuzz-ng/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING \ + src/3rdparty/chromium/third_party/hunspell/COPYING.LGPL \ + src/3rdparty/chromium/third_party/hunspell/COPYING.MPL \ + src/3rdparty/chromium/third_party/hunspell/src/hunspell/license.hunspell \ + src/3rdparty/chromium/third_party/hunspell/src/hunspell/license.myspell \ + src/3rdparty/chromium/third_party/hwcplus/LICENSE \ + src/3rdparty/chromium/third_party/iaccessible2/LICENSE \ + src/3rdparty/chromium/third_party/iccjpeg/LICENSE \ + src/3rdparty/chromium/third_party/icu4j/LICENSE \ + src/3rdparty/chromium/third_party/icu/LICENSE \ + src/3rdparty/chromium/third_party/icu/license.html \ + src/3rdparty/chromium/third_party/icu/scripts/LICENSE \ + src/3rdparty/chromium/third_party/ijar/LICENSE \ + src/3rdparty/chromium/third_party/inspector_protocol/LICENSE \ + src/3rdparty/chromium/third_party/intellij/LICENSE \ + src/3rdparty/chromium/third_party/isimpledom/LICENSE \ + src/3rdparty/chromium/third_party/javax_inject/LICENSE \ + src/3rdparty/chromium/third_party/jinja2/LICENSE \ + src/3rdparty/chromium/third_party/jmake/LICENSE \ + src/3rdparty/chromium/third_party/jsoncpp/LICENSE \ + src/3rdparty/chromium/third_party/jstemplate/COPYING \ + src/3rdparty/chromium/third_party/khronos/LICENSE \ + src/3rdparty/chromium/third_party/leakcanary/LICENSE \ + src/3rdparty/chromium/third_party/leveldatabase/src/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/LICENSE \ + src/3rdparty/chromium/third_party/libaddressinput/src/cpp/LICENSE.chromium \ + src/3rdparty/chromium/third_party/libaddressinput/src/LICENSE \ + src/3rdparty/chromium/third_party/libFuzzer/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libjpeg/LICENSE \ + src/3rdparty/chromium/third_party/libjpeg_turbo/LICENSE.md \ + src/3rdparty/chromium/third_party/libpng/LICENSE \ + src/3rdparty/chromium/third_party/libsecret/LICENSE \ + src/3rdparty/chromium/third_party/libsrtp/LICENSE \ + src/3rdparty/chromium/third_party/libsync/LICENSE \ + src/3rdparty/chromium/third_party/libudev/LICENSE \ + src/3rdparty/chromium/third_party/libusb/src/COPYING \ + src/3rdparty/chromium/third_party/libva/COPYING \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/googletest/src/LICENSE \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/libwebm/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libvpx/source/libvpx/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/libwebm/source/LICENSE.TXT \ + src/3rdparty/chromium/third_party/libwebp/LICENSE \ + src/3rdparty/chromium/third_party/libxml/src/COPYING \ + src/3rdparty/chromium/third_party/libXNVCtrl/LICENSE \ + src/3rdparty/chromium/third_party/libxslt/linux/COPYING \ + src/3rdparty/chromium/third_party/libyuv/LICENSE \ + src/3rdparty/chromium/third_party/libyuv/LICENSE_THIRD_PARTY \ + src/3rdparty/chromium/third_party/libyuv/third_party/gflags/LICENSE \ + src/3rdparty/chromium/third_party/lzma_sdk/LICENSE \ + src/3rdparty/chromium/third_party/mach_override/LICENSE \ + src/3rdparty/chromium/third_party/markupsafe/LICENSE \ + src/3rdparty/chromium/third_party/mesa/LICENSE \ + src/3rdparty/chromium/third_party/mesa/src/docs/COPYING \ + src/3rdparty/chromium/third_party/mesa/src/docs/license.html \ + src/3rdparty/chromium/third_party/mesa/src/src/gallium/drivers/radeon/LICENSE.TXT \ + src/3rdparty/chromium/third_party/minigbm/LICENSE \ + src/3rdparty/chromium/third_party/mocha/LICENSE \ + src/3rdparty/chromium/third_party/mockito/LICENSE \ + src/3rdparty/chromium/third_party/modp_b64/LICENSE \ + src/3rdparty/chromium/third_party/molokocacao/LICENSE \ + src/3rdparty/chromium/third_party/motemplate/LICENSE \ + src/3rdparty/chromium/third_party/mozilla/LICENSE \ + src/3rdparty/chromium/third_party/mt19937ar/LICENSE \ + src/3rdparty/chromium/third_party/netty4/LICENSE \ + src/3rdparty/chromium/third_party/netty-tcnative/LICENSE \ + src/3rdparty/chromium/third_party/objenesis/LICENSE \ + src/3rdparty/chromium/third_party/ocmock/License.txt \ + src/3rdparty/chromium/third_party/openh264/src/LICENSE \ + src/3rdparty/chromium/third_party/openmax_dl/LICENSE \ + src/3rdparty/chromium/third_party/opus/src/COPYING \ + src/3rdparty/chromium/third_party/ots/LICENSE \ + src/3rdparty/chromium/third_party/ow2_asm/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/bigint/LICENSE \ + src/3rdparty/chromium/third_party/pdfium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/pexpect/LICENSE \ + src/3rdparty/chromium/third_party/ply/LICENSE \ + src/3rdparty/chromium/third_party/polymer/v1_0/components-chromium/polymer/LICENSE.txt \ + src/3rdparty/chromium/third_party/proguard/LICENSE \ + src/3rdparty/chromium/third_party/protobuf/LICENSE \ + src/3rdparty/chromium/third_party/pycoverage/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/elftools/construct/LICENSE \ + src/3rdparty/chromium/third_party/pyelftools/LICENSE \ + src/3rdparty/chromium/third_party/pyftpdlib/src/LICENSE \ + src/3rdparty/chromium/third_party/pymock/LICENSE.txt \ + src/3rdparty/chromium/third_party/python_gflags/COPYING \ + src/3rdparty/chromium/third_party/Python-Markdown/LICENSE.md \ + src/3rdparty/chromium/third_party/py_trace_event/src/LICENSE \ + src/3rdparty/chromium/third_party/pywebsocket/src/LICENSE \ + src/3rdparty/chromium/third_party/qcms/src/COPYING \ + src/3rdparty/chromium/third_party/qunit/LICENSE \ + src/3rdparty/chromium/third_party/re2/LICENSE \ + src/3rdparty/chromium/third_party/re2/src/LICENSE \ + src/3rdparty/chromium/third_party/requests/LICENSE \ + src/3rdparty/chromium/third_party/robolectric/LICENSE \ + src/3rdparty/chromium/third_party/robolectric/licenses/extreme.indiana.edu.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/javolution.license.txt \ + src/3rdparty/chromium/third_party/robolectric/licenses/pivotal.labs.license.txt \ + src/3rdparty/chromium/third_party/sfntly/COPYING.txt \ + src/3rdparty/chromium/third_party/sfntly/src/cpp/COPYING.txt \ + src/3rdparty/chromium/third_party/sfntly/src/java/COPYING \ + src/3rdparty/chromium/third_party/shaderc/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/LICENSE \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.glslang \ + src/3rdparty/chromium/third_party/shaderc/src/third_party/LICENSE.spirv-tools \ + src/3rdparty/chromium/third_party/simplejson/LICENSE.txt \ + src/3rdparty/chromium/third_party/sinonjs/LICENSE \ + src/3rdparty/chromium/third_party/skia/LICENSE \ + src/3rdparty/chromium/third_party/skia/platform_tools/android/third_party/ashmem/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/etc1/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/gif/LICENSE \ + src/3rdparty/chromium/third_party/skia/third_party/libpng/LICENSE \ + src/3rdparty/chromium/third_party/smhasher/LICENSE \ + src/3rdparty/chromium/third_party/snappy/src/COPYING \ + src/3rdparty/chromium/third_party/SPIRV-Tools/LICENSE \ + src/3rdparty/chromium/third_party/SPIRV-Tools/src/LICENSE \ + src/3rdparty/chromium/third_party/sqlite4java/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/LICENSE \ + src/3rdparty/chromium/third_party/sqlite/sqlite-src-3100200/autoconf/tea/license.terms \ + src/3rdparty/chromium/third_party/sqlite/src/autoconf/tea/license.terms \ + src/3rdparty/chromium/third_party/sudden_motion_sensor/LICENSE \ + src/3rdparty/chromium/third_party/swiftshader/LICENSE.txt \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/autoconf/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/include/llvm/Support/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/projects/sample/autoconf/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/llvm-subzero/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/LLVM/utils/unittest/googletest/LICENSE.TXT \ + src/3rdparty/chromium/third_party/swiftshader/third_party/PowerVR_SDK/License.txt \ + src/3rdparty/chromium/third_party/tcmalloc/LICENSE \ + src/3rdparty/chromium/third_party/tcmalloc/vendor/COPYING \ + src/3rdparty/chromium/third_party/tlslite/LICENSE \ + src/3rdparty/chromium/third_party/typ/LICENSE \ + src/3rdparty/chromium/third_party/ub-uiautomator/LICENSE \ + src/3rdparty/chromium/third_party/usb_ids/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/LICENSE \ + src/3rdparty/chromium/third_party/usrsctp/usrsctplib/LICENSE.md \ + src/3rdparty/chromium/third_party/v4l2capture/LICENSE \ + src/3rdparty/chromium/third_party/v4l-utils/COPYING.libv4l \ + src/3rdparty/chromium/third_party/visualmetrics/src/LICENSE \ + src/3rdparty/chromium/third_party/vulkan/LICENSE \ + src/3rdparty/chromium/third_party/wayland/LICENSE \ + src/3rdparty/chromium/third_party/wayland-protocols/LICENSE \ + src/3rdparty/chromium/third_party/wayland-protocols/src/COPYING \ + src/3rdparty/chromium/third_party/wayland/src/COPYING \ + src/3rdparty/chromium/third_party/wds/LICENSE \ + src/3rdparty/chromium/third_party/wds/src/COPYING \ + src/3rdparty/chromium/third_party/web-animations-js/LICENSE \ + src/3rdparty/chromium/third_party/web-animations-js/sources/COPYING \ + src/3rdparty/chromium/third_party/webdriver/COPYING \ + src/3rdparty/chromium/third_party/webdriver/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/LICENSE_FOR_ABOUT_CREDITS \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-APPLE \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-LGPL-2 \ + src/3rdparty/chromium/third_party/WebKit/Source/core/LICENSE-LGPL-2.1 \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/audits2_worker/lighthouse/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm/LICENSE_python \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/cm_modes/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/formatter_worker/acorn/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/gonzales/MIT-LICENSE.txt \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/front_end/terminal/xterm.js/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Source/devtools/scripts/closure/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Source/wtf/dtoa/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Source/wtf/dtoa/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/six/LICENSE \ + src/3rdparty/chromium/third_party/WebKit/Tools/Scripts/webkitpy/thirdparty/wpt/wpt/tools/wptserve/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/COPYING \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/dns/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/ipaddr/COPYING \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/ipfw_win32/LICENSE \ + src/3rdparty/chromium/third_party/webpagereplay/third_party/jsmin/LICENSE.txt \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/examples/androidapp/third_party/autobanh/LICENSE.md \ + src/3rdparty/chromium/third_party/webrtc/examples/objc/AppRTCMobile/third_party/SocketRocket/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/LICENSE \ + src/3rdparty/chromium/third_party/webrtc/LICENSE_THIRD_PARTY \ + src/3rdparty/chromium/third_party/webtreemap/src/COPYING \ + src/3rdparty/chromium/third_party/woff2/LICENSE \ + src/3rdparty/chromium/third_party/x86inc/LICENSE \ + src/3rdparty/chromium/third_party/xdg-utils/LICENSE \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/COPYING \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/GNU_GPL-2.0 \ + src/3rdparty/chromium/third_party/yasm/source/patched-yasm/GNU_LGPL-2.0 \ + src/3rdparty/chromium/third_party/zlib/LICENSE \ + src/3rdparty/chromium/tools/gn/out/Release/obj/third_party/widevine/cdm/widevine_test_license_server.ninja \ + src/3rdparty/chromium/tools/gyp/LICENSE \ + src/3rdparty/chromium/tools/origin_trials/third_party/ed25519/LICENSE \ + src/3rdparty/chromium/tools/page_cycler/acid3/LICENSE \ + src/3rdparty/chromium/tools/symsrc/COPYING-pefile \ + src/3rdparty/chromium/tools/win/ChromeDebug/ChromeDebug/LICENSE \ + src/3rdparty/chromium/url/third_party/mozilla/LICENSE.txt \ + src/3rdparty/chromium/v8/LICENSE \ + src/3rdparty/chromium/v8/LICENSE.fdlibm \ + src/3rdparty/chromium/v8/LICENSE.strongtalk \ + src/3rdparty/chromium/v8/LICENSE.v8 \ + src/3rdparty/chromium/v8/LICENSE.valgrind \ + src/3rdparty/chromium/v8/src/third_party/valgrind/LICENSE \ + src/3rdparty/chromium/v8/src/third_party/vtune/LICENSE \ + src/3rdparty/chromium/v8/third_party/inspector_protocol/LICENSE \ + diff --git a/package/qt5/qt5webengine/qt5webengine.hash b/package/qt5/qt5webengine/qt5webengine.hash new file mode 100644 index 0000000000..d45500c441 --- /dev/null +++ b/package/qt5/qt5webengine/qt5webengine.hash @@ -0,0 +1,2 @@ +# Hash from: http://download.qt.io/official_releases/qt/5.9/5.9.1/submodules/qtwebengine-opensource-src-5.9.1.tar.xz.mirrorlist +sha256 f6a37eeb9188474a16d29ede498fce959396ab80329a0a83eaeb925251686401 qtwebengine-opensource-src-5.9.1.tar.xz diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk new file mode 100644 index 0000000000..96dd401c6c --- /dev/null +++ b/package/qt5/qt5webengine/qt5webengine.mk @@ -0,0 +1,80 @@ +################################################################################ +# +# qt5webengine +# +################################################################################ + +QT5WEBENGINE_VERSION = $(QT5_VERSION) +QT5WEBENGINE_SITE = $(QT5_SITE) +QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz +QT5WEBENGINE_DEPENDENCIES = ffmpeg libglib2 libvpx opus webp qt5base \ + qt5declarative qt5webchannel host-bison host-flex host-gperf \ + host-pkgconf host-python +QT5WEBENGINE_INSTALL_STAGING = YES + +include package/qt5/qt5webengine/chromium.inc +QT5WEBENGINE_LICENSE = GPL-2.0 or LGPL-3.0 or GPL-3.0 or GPL-3.0 with exception +QT5WEBENGINE_LICENSE_FILES = LICENSE.GPL2 LICENSE.GPL3 LICENSE.GPL3-EXCEPT \ + LICENSE.GPLv3 LICENSE.LGPL3 $(CHROMIUM_LICENSE_FILES) + +ifeq ($(BR2_PACKAGE_QT5BASE_XCB),y) +QT5WEBENGINE_DEPENDENCIES += xlib_libXScrnSaver xlib_libXcomposite \ + xlib_libXcursor xlib_libXi xlib_libXrandr xlib_libXtst +endif + +QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_system_ffmpeg + +ifeq ($(BR2_PACKAGE_QT5WEBENGINE_PROPRIETARY_CODECS),y) +QT5WEBENGINE_QMAKEFLAGS += WEBENGINE_CONFIG+=use_proprietary_codecs +endif + +# QtWebengine's build system uses python, but only supports python2. We work +# around this by forcing python2 early in the PATH, via a python->python2 +# symlink. +QT5WEBENGINE_ENV = PATH=$(@D)/host-bin:$(BR_PATH) +define QT5WEBENGINE_PYTHON2_SYMLINK + mkdir -p $(@D)/host-bin + ln -sf $(HOST_DIR)/bin/python2 $(@D)/host-bin/python +endef +QT5WEBENGINE_PRE_CONFIGURE_HOOKS += QT5WEBENGINE_PYTHON2_SYMLINK + +define QT5WEBENGINE_CONFIGURE_CMDS + (cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(HOST_DIR)/usr/bin/qmake $(QT5WEBENGINE_QMAKEFLAGS)) +endef + +define QT5WEBENGINE_BUILD_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D) +endef + +define QT5WEBENGINE_INSTALL_STAGING_CMDS + $(TARGET_MAKE_ENV) $(QT5WEBENGINE_ENV) $(MAKE) -C $(@D) install + $(QT5_LA_PRL_FILES_FIXUP) +endef + +define QT5WEBENGINE_INSTALL_TARGET_QMLS + cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/ +endef + +ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y) +define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES + cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/ +endef +endif + +ifneq ($(BR2_STATIC_LIBS),y) +define QT5WEBENGINE_INSTALL_TARGET_LIBS + cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib + cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/ + cp -dpfr $(STAGING_DIR)/usr/resources/ $(TARGET_DIR)/usr/ + mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales/ + cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales $(TARGET_DIR)/usr/translations/qtwebengine_locales/ +endef +endif + +define QT5WEBENGINE_INSTALL_TARGET_CMDS + $(QT5WEBENGINE_INSTALL_TARGET_LIBS) + $(QT5WEBENGINE_INSTALL_TARGET_QMLS) + $(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES) +endef + +$(eval $(generic-package)) -- 2.30.2