Skip to content

Commit

Permalink
add WPE WebKit packages
Browse files Browse the repository at this point in the history
Add WEP WebKit HTML5 application runtime.
 * libwpe: backend abstraction (Wayland or KMS/DRM)
 * wpebackend-fdo: FreeDesktop Linux backend for WPE
 * wpewebkit: official WebKit port
 * cog: simple browser canvas application (best used with 'cage')

Signed-off-by: Daniel Golle <[email protected]>
  • Loading branch information
dangowrt committed Nov 14, 2024
1 parent f0e26c5 commit 55b8731
Show file tree
Hide file tree
Showing 4 changed files with 344 additions and 0 deletions.
77 changes: 77 additions & 0 deletions libs/cog/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=cog
PKG_VERSION:=0.19.1
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://wpewebkit.org/releases
PKG_HASH:=633760ba69e36e4fbc24757c927f46fa1fdb3c526d0a6ac6ab35a21d35ad57b3

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=BSD-2-clause
PKG_LICENSE_FILES:=COPYING

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/meson.mk

define Package/cog
SECTION:=libs
CATEGORY:=Libraries
TITLE:=launcher for WPE WebKit
URL:=https://wpewebkit.org/
DEPENDS:=+libcogcore
USERID:=cog:video=40
endef

define Package/cog/description/default
Cog is a small single "window" launcher for the WebKit WPE port.
It is small, provides no user interface, and is suitable to be used as a Web
application container. The "window" may be fullscreen depending on the WPE
backend being used.
endef

define Package/libcogcore
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WPE WebKit API library
URL:=https://wpewebkit.org/
DEPENDS:=+libdbus +libmanette +libwpewebkit +wpebackend-fdo
endef

define Package/libcogcore/description/default
libcogcore is a library with ready-to-use components typically needed
for implementing applications which use the WPE WebKit API.
endef

MESON_ARGS += \
-Dlibportal=disabled \
-Dcog_dbus_control=system \
-Dcog_dbus_system_owner=cog \
-Ddocumentation=false \
-Dmanpages=false

define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/cog
$(CP) $(PKG_INSTALL_DIR)/usr/include/cog/*.h $(1)/usr/include/cog
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
endef

define Package/libcogcore/install
$(INSTALL_DIR) $(1)/usr/lib/cog/modules
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/cog/modules/* $(1)/usr/lib/cog/modules
endef

define Package/cog/install
$(INSTALL_DIR) $(1)/usr/bin
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin
$(INSTALL_DIR) $(1)/usr/share/dbus-1/system.d
$(CP) $(PKG_INSTALL_DIR)/usr/share/dbus-1/system.d/com.igalia.Cog.conf $(1)/usr/share/dbus-1/system.d
endef

$(eval $(call BuildPackage,libcogcore))
$(eval $(call BuildPackage,cog))
53 changes: 53 additions & 0 deletions libs/libwpe/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=libwpe
PKG_VERSION:=1.16.0
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://wpewebkit.org/releases
PKG_HASH:=c7f3a3c6b3d006790d486dc7cceda2b6d2e329de07f33bc47dfc53f00f334b2a

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=BSD-2-clause
PKG_LICENSE_FILES:=COPYING

PKG_BUILD_DEPENDS:=mesa

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/meson.mk

define Package/libwpe
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WPE backend abstraction library
URL:=https://wpewebkit.org/
DEPENDS:=+libstdcpp +libxkbcommon
endef

define Package/libwpe/description
An Open Source WebKit port for Linux-based embedded devices designed
with flexibility and hardware acceleration in mind, leveraging common 3D
graphics APIs for best performance.
endef

MESON_ARGS += \
-Denable-xkb=true \
-Dbuild-docs=false \
-Ddefault_library=shared

define Package/libwpe/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
endef

define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/wpe-1.0/wpe
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-1.0/wpe/*.h $(1)/usr/include/wpe-1.0/wpe
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
endef

$(eval $(call BuildPackage,libwpe))
51 changes: 51 additions & 0 deletions libs/wpebackend-fdo/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=wpebackend-fdo
PKG_VERSION:=1.15.90
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://wpewebkit.org/releases
PKG_HASH:=4ac5be554560ed48b13a0745fc779d7f6663904f35f510a6c50e34cb96999083

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=BSD-2-clause
PKG_LICENSE_FILES:=COPYING

PKG_BUILD_DEPENDS:=mesa

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/meson.mk

define Package/wpebackend-fdo
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WPE's backend based on a freedesktop.org stack
URL:=https://wpewebkit.org/
DEPENDS:=+glib2 +libepoxy +libstdcpp +libwayland +libwpe
endef

define Package/wpebackend-fdo/description
An Open Source WebKit port for Linux-based embedded devices designed
with flexibility and hardware acceleration in mind, leveraging common 3D
graphics APIs for best performance.
endef

MESON_ARGS += \
-Dbuild_docs=false

define Package/wpebackend-fdo/install
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib/
endef

define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/wpe-fdo-1.0/wpe
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-fdo-1.0/wpe/* $(1)/usr/include/wpe-fdo-1.0/wpe
$(INSTALL_DIR) $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc $(1)/usr/lib/pkgconfig
endef

$(eval $(call BuildPackage,wpebackend-fdo))
163 changes: 163 additions & 0 deletions libs/wpewebkit/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,163 @@
include $(TOPDIR)/rules.mk

PKG_NAME:=wpewebkit
PKG_VERSION:=2.46.3
PKG_RELEASE:=1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://wpewebkit.org/releases
PKG_HASH:=56709f8cf113650d8cc30dc22f2b69cb6f74e651731f12e1db52ecce12ab86f2

PKG_MAINTAINER:=Daniel Golle <[email protected]>
PKG_LICENSE:=LGPL-2.1-or-later BSD-2-Clause
PKG_LICENSE_FILES:=Source/WebCore/LICENSE-Apple Source/Webcore/LICENSE-LGPL-2.1

PKG_BUILD_DEPENDS:=unifdef/host ruby/host
CMAKE_INSTALL:=1

include $(INCLUDE_DIR)/package.mk
include $(INCLUDE_DIR)/cmake.mk

CMAKE_BINARY_SUBDIR:=openwrt-build

CMAKE_OPTIONS += \
-DBWRAP_EXECUTABLE=/usr/bin/bwrap \
-DDBUS_PROXY_EXECUTABLE=/usr/bin/xdg-dbus-proxy \
-DGLIB_COMPILE_RESOURCES_EXECUTABLE="$(STAGING_DIR_HOSTPKG)/bin/glib-compile-resources" \
-DENABLE_ACCELERATED_2D_CANVAS=ON \
-DENABLE_ACCESSIBILITY=OFF \
-DENABLE_API_TESTS=OFF \
-DENABLE_BUBBLEWRAP_SANDBOX=ON \
-DENABLE_INTROSPECTION=OFF \
-DENABLE_DOCUMENTATION=OFF \
-DENABLE_WEB_CRYPTO=ON \
-DENABLE_JOURNALD_LOG=OFF \
-DENABLE_MINIBROWSER=$(if $(CONFIG_PACKAGE_wpewebkit-minibrowser),ON,OFF) \
-DENABLE_WPE_PLATFORM=ON \
-DENABLE_WPE_PLATFORM_WAYLAND=ON \
-DENABLE_WPE_PLATFORM_DRM=ON \
-DENABLE_SPELLCHECK=OFF \
-DENABLE_SPEECH_SYNTHESIS=OFF \
-DENABLE_JIT=ON \
-DENABLE_C_LOOP=OFF \
-DENABLE_WEBGL=ON \
-DENABLE_VIDEO=ON \
-DPORT=WPE \
-DUSE_ATK=OFF \
-DUSE_OPENGL_OR_ES=ON \
-DUSE_LIBBACKTRACE=OFF \
-DUSE_LIBHYPHEN=OFF \
-DUSE_LIBSECRET=OFF \
-DUSE_SOUP2=OFF \
-DUSE_JPEGXL=OFF \
-DUSE_WOFF2=OFF \
-DUSE_AVIF=OFF \
-DUSE_LCMS=OFF \
-DUSE_SYSTEM_SYSPROF_CAPTURE=OFF

define Package/libwpewebkit
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WPEWebKit Library
URL:=https://wpewebkit.org
DEPENDS:=+bubblewrap +glib2 +harfbuzz +icu-full-data +libepoxy +libgcrypt \
+libgst1allocators +libgst1app +libgst1audio +libgst1fft +libgst1gl \
+libgst1pbutils +libgst1tag +libgst1transcoder +libgst1video \
+libinput +libjpeg +libpng +libseccomp +libsoup3 +libsqlite3 \
+libtasn1 +libudev +libwayland +libwebp +libwpe +libxml2 +libxslt \
+zlib
endef

define Package/libwpewebkit/description
WebKitGTK is a full-featured port of the WebKit rendering engine,
suitable for projects requiring any kind of web integration, from
hybrid HTML/CSS applications to full-fledged web browsers.
endef

define Package/wpewebkit-driver
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WebDriver service implementation for WPE WebKit
URL:=https://wpewebkit.org
DEPENDS:=+libwpewebkit
endef

define Package/wpewebkit-driver/description
WebDriver is an automation API to control a web browser. It allows the
user to create automated tests for web applications independently of the
browser and platform.

The WebKitWebDriver binary provides the WebDriver service implementation
for WebKitGTK. It works as a server, processing client requests to spawn
and control the web browser. This driver is not tied to any specific
browser and can be used with any WebKitGTK-based browser, but it uses
MiniBrowser as the default.
endef

define Package/wpewebkit-minibrowser
SECTION:=libs
CATEGORY:=Libraries
TITLE:=WPE WebKit Mini Browser
URL:=https://wpewebkit.org/
DEPENDS:=+libwpewebkit +wpebackend-fdo
endef

define Package/wpewebkit-minibrowser/description
Minimalistic Web browser based on WPE WebKit.
endef

define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/wpe-webkit-2.0/jsc \
$(1)/usr/include/wpe-webkit-2.0/wpe \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/drm \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/headless \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/wayland \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe \
$(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/jsc/*.h \
$(1)/usr/include/wpe-webkit-2.0/jsc
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/wpe/*.h \
$(1)/usr/include/wpe-webkit-2.0/wpe
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/*.h \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/drm/*.h \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/drm
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/headless/*.h \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/headless
$(CP) $(PKG_INSTALL_DIR)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/wayland/*.h \
$(1)/usr/include/wpe-webkit-2.0/wpe-platform/wpe/wayland
$(CP) $(PKG_INSTALL_DIR)/usr/lib/*.so* $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
$(1)/usr/lib/pkgconfig
endef

define Package/libwpewebkit/install
$(INSTALL_DIR) $(1)/usr/lib/wpe-webkit-2.0/injected-bundle
$(CP) $(PKG_INSTALL_DIR)/usr/lib/lib*.so* $(1)/usr/lib
$(CP) $(PKG_INSTALL_DIR)/usr/lib/wpe-webkit-2.0/injected-bundle/*.so \
$(1)/usr/lib/wpe-webkit-2.0/injected-bundle
$(CP) $(PKG_INSTALL_DIR)/usr/lib/wpe-webkit-2.0/*.so \
$(1)/usr/lib/wpe-webkit-2.0
$(INSTALL_DIR) $(1)/usr/libexec/wpe-webkit-2.0
# $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/wpe-webkit-2.0/WPEGPUProcess \
# $(1)/usr/libexec/wpe-webkit-2.0
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/wpe-webkit-2.0/WPENetworkProcess \
$(1)/usr/libexec/wpe-webkit-2.0
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/wpe-webkit-2.0/WPEWebProcess \
$(1)/usr/libexec/wpe-webkit-2.0
endef

define Package/wpewebkit-driver/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/WPEWebDriver $(1)/usr/bin
endef

define Package/wpewebkit-minibrowser/install
$(INSTALL_DIR) $(1)/usr/libexec/wpe-webkit-2.0
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/libexec/wpe-webkit-2.0/MiniBrowser \
$(1)/usr/libexec/wpe-webkit-2.0
endef

$(eval $(call BuildPackage,libwpewebkit))
$(eval $(call BuildPackage,wpewebkit-driver))
$(eval $(call BuildPackage,wpewebkit-minibrowser))

0 comments on commit 55b8731

Please sign in to comment.