webkitgtk24: new package

Add new webkitgtk24 package.

The difference with the legacy webkit package is that this one uses the
new webkit2 API, and optionally the webkit1 API.

It's versioned because the latest release of midori can't use the newer
2.6.x or 2.8.x webkitgtk versions yet.

This paves the way for a newer webkitgtk26 or webkitgtk28 package that
can live side-by-side with this one for other uses.

Some loose checks (like !xorg7) are in place for possible/future wayland
support.
Right now wayland requires gtk2, hence xorg, but it might be possible to
patch that out with some work (it seems to be done for version 2.6.x,
though the build system changed to cmake so it might not be a
straighfoward patch).

Choices had to be made in the GL-area, right now the preference order is
libGL (full OpenGL), then GLES, then nothing (obviously).
And when gtk3 is around it's also preferred as well.

Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Gustavo Zacarias 2015-07-29 09:40:24 -03:00 committed by Thomas Petazzoni
parent ac73040ea2
commit 804042606c
5 changed files with 212 additions and 0 deletions

View File

@ -835,6 +835,7 @@ menu "Graphics"
source "package/tiff/Config.in"
source "package/wayland/Config.in"
source "package/webkit/Config.in"
source "package/webkitgtk24/Config.in"
source "package/webp/Config.in"
source "package/zxing/Config.in"
endmenu

View File

@ -0,0 +1,34 @@
From https://bugs.webkit.org/show_bug.cgi?id=130837
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
diff -Nura webkitgtk-2.4.8/Source/WebKit2/Platform/IPC/Connection.h webkitgtk-2.4.8-ppc/Source/WebKit2/Platform/IPC/Connection.h
--- webkitgtk-2.4.8/Source/WebKit2/Platform/IPC/Connection.h 2015-01-07 06:45:43.000000000 -0300
+++ webkitgtk-2.4.8-ppc/Source/WebKit2/Platform/IPC/Connection.h 2015-04-20 01:55:41.554547510 -0300
@@ -216,7 +216,11 @@
Client* m_client;
bool m_isServer;
+#if CPU(PPC)
+ uint64_t m_syncRequestID;
+#else
std::atomic<uint64_t> m_syncRequestID;
+#endif
bool m_onlySendMessagesAsDispatchWhenWaitingForSyncReplyWhenProcessingSuchAMessage;
bool m_shouldExitOnSyncMessageSendFailure;
diff -Nura webkitgtk-2.4.8/Source/WebKit2/UIProcess/StatisticsRequest.cpp webkitgtk-2.4.8-ppc/Source/WebKit2/UIProcess/StatisticsRequest.cpp
--- webkitgtk-2.4.8/Source/WebKit2/UIProcess/StatisticsRequest.cpp 2015-01-07 06:45:43.000000000 -0300
+++ webkitgtk-2.4.8-ppc/Source/WebKit2/UIProcess/StatisticsRequest.cpp 2015-04-20 01:55:41.555547544 -0300
@@ -44,7 +44,11 @@
uint64_t StatisticsRequest::addOutstandingRequest()
{
+#if CPU(PPC)
+ static int64_t uniqueRequestID;
+#else
static std::atomic<int64_t> uniqueRequestID;
+#endif
uint64_t requestID = ++uniqueRequestID;
m_outstandingRequests.add(requestID);

View File

@ -0,0 +1,55 @@
config BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
bool
# ARM needs BLX, so v5t+, BE completely untested so disabled
default y if BR2_arm && !BR2_ARM_CPU_ARMV4
# i386 / x86_64 external toolchains have issues and old gcc versions
# https://bugs.webkit.org/show_bug.cgi?id=132231
# https://stackoverflow.com/questions/9140019/yield-is-not-a-member-of-stdthis-thread
default y if BR2_i386 || BR2_x86_64
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109
# Disabled on MIPS big endian due to sigbus
default y if BR2_mipsel || BR2_mips64el
# Disabled on PowerPC pending runtime testing
# Disabled on SuperH because of segfault
depends on BR2_USE_MMU # libglib2
comment "webkitgtk24 needs libgtk2 and a toolchain w/ C++, wchar, NPTL"
depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
depends on BR2_ARCH_HAS_ATOMICS
depends on !BR2_PACKAGE_LIBGTK2 || !BR2_PACKAGE_XORG7 || \
!BR2_TOOLCHAIN_HAS_THREADS_NPTL || !BR2_INSTALL_LIBSTDCPP \
|| !BR2_USE_WCHAR
depends on BR2_USE_MMU
config BR2_PACKAGE_WEBKITGTK24
bool "webkitgtk 2.4.x"
depends on BR2_INSTALL_LIBSTDCPP
depends on BR2_USE_WCHAR
depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
depends on (BR2_PACKAGE_LIBGTK2 && BR2_PACKAGE_XORG7)
depends on BR2_PACKAGE_WEBKITGTK24_ARCH_SUPPORTS
depends on BR2_ARCH_HAS_ATOMICS
select BR2_PACKAGE_CAIRO
select BR2_PACKAGE_CAIRO_PNG
select BR2_PACKAGE_ENCHANT
select BR2_PACKAGE_HARFBUZZ
select BR2_PACKAGE_ICU
select BR2_PACKAGE_JPEG
select BR2_PACKAGE_LIBCURL
select BR2_PACKAGE_LIBSECRET
select BR2_PACKAGE_LIBSOUP
select BR2_PACKAGE_LIBXML2
select BR2_PACKAGE_LIBXSLT
select BR2_PACKAGE_SQLITE
select BR2_PACKAGE_WEBP
select BR2_PACKAGE_XLIB_LIBXT if BR2_PACKAGE_XORG7
select BR2_PACKAGE_XLIB_LIBXCOMPOSITE if BR2_PACKAGE_HAS_LIBGL || \
(BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL)
select BR2_PACKAGE_XLIB_LIBXDAMAGE if BR2_PACKAGE_HAS_LIBGL || \
(BR2_PACKAGE_HAS_LIBGLES && BR2_PACKAGE_HAS_LIBEGL)
help
WebKit is an open source, standards compliant web browser engine.
http://www.webkitgtk.org/

View File

@ -0,0 +1,2 @@
# From http://www.webkitgtk.org/releases/webkitgtk-2.4.9.tar.xz.sha1
sha1 fbe02db8a4f01a70e7cdf0d16f8a18463e18b104 webkitgtk-2.4.9.tar.xz

View File

@ -0,0 +1,120 @@
################################################################################
#
# webkitgtk 2.4.x
#
################################################################################
WEBKITGTK24_VERSION = 2.4.9
WEBKITGTK24_SITE = http://www.webkitgtk.org/releases
WEBKITGTK24_SOURCE = webkitgtk-$(WEBKITGTK24_VERSION).tar.xz
WEBKITGTK24_INSTALL_STAGING = YES
WEBKITGTK24_LICENSE = LGPLv2+ BSD-2c
WEBKITGTK24_LICENSE_FILES = \
Source/WebCore/LICENSE-APPLE \
Source/WebCore/LICENSE-LGPL-2
WEBKITGTK24_DEPENDENCIES = host-ruby host-flex host-bison host-gperf \
enchant harfbuzz icu jpeg libcurl libgtk2 libsecret libsoup \
libxml2 libxslt sqlite webp
WEBKITGTK24_DEPENDENCIES += \
$(if $(BR_PACKAGE_XLIB_LIBXCOMPOSITE),xlib_libXcomposite) \
$(if $(BR_PACKAGE_XLIB_LIBXDAMAGE),xlib_libXdamage)
# make 3.81 loops into oblivion with numjobs > 1
ifneq ($(findstring x3.81,x$(RUNNING_MAKE_VERSION)),)
WEBKITGTK24_MAKE = $(MAKE1)
endif
# Give explicit path to icu-config to avoid host leakage
WEBKITGTK24_CONF_ENV = ac_cv_path_icu_config=$(STAGING_DIR)/usr/bin/icu-config
# Some 32-bit architectures need libatomic support for 64-bit ops
ifeq ($(BR2_i386)$(BR2_mips)$(BR2_mipsel)$(BR2_sh),y)
WEBKITGTK24_CONF_ENV += LIBS="-latomic"
endif
# dependency tracking is to avoid build issues in the GEN/WTF phase
WEBKITGTK24_CONF_OPTS = \
--enable-dependency-tracking \
--enable-spellcheck \
--disable-geolocation \
--disable-glibtest \
--disable-gtk-doc-html \
--disable-wayland-target
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_BASE),y)
WEBKITGTK24_CONF_OPTS += \
--enable-video \
--enable-web-audio
WEBKITGTK24_DEPENDENCIES += gst1-plugins-good
else
WEBKITGTK24_CONF_OPTS += \
--disable-video \
--disable-web-audio
endif
# OpenGL
ifeq ($(BR2_PACKAGE_HAS_LIBGL),y)
WEBKITGTK24_CONF_OPTS += \
--enable-accelerated-compositing \
--enable-glx \
--enable-webgl \
--disable-gles2
WEBKITGTK24_DEPENDENCIES += libgl
# EGL + GLES
else ifeq ($(BR2_PACKAGE_HAS_LIBEGL)$(BR2_PACKAGE_HAS_LIBGLES),yy)
WEBKITGTK24_CONF_OPTS += \
--enable-accelerated-compositing \
--enable-gles2 \
--enable-webgl \
--disable-glx
WEBKITGTK24_DEPENDENCIES += libegl libgles
# No GL
else
WEBKITGTK24_CONF_OPTS += \
--disable-accelerated-compositing \
--disable-gles2 \
--disable-glx \
--disable-webgl
endif
# X11 target with GTK2 (optionally GTK3)
ifeq ($(BR2_PACKAGE_XLIB_LIBXT),y)
WEBKITGTK24_CONF_OPTS += --enable-x11-target
WEBKITGTK24_DEPENDENCIES += xlib_libXt
else
WEBKITGTK24_CONF_OPTS += --disable-x11-target
endif
# ARM needs NEON for JIT
# i386 & x86_64 don't seem to have any special requirements
ifeq ($(BR2_ARM_ENABLE_NEON)$(BR2_i386)$(BR2_x86_64),y)
WEBKITGTK24_CONF_OPTS += --enable-jit
else
WEBKITGTK24_CONF_OPTS += --disable-jit
# Disabling assembly and JIT needs an extra push sometimes (ppc)
# See https://bugs.webkit.org/show_bug.cgi?format=multiple&id=113638
WEBKITGTK24_CONF_ENV += \
CPPFLAGS="$(TARGET_CPPFLAGS) -DENABLE_JIT=0 -DENABLE_YARR_JIT=0 -DENABLE_ASSEMBLER=0"
endif
# webkit1 (old API) uses gtk2, webkit2 (new API) uses gtk3
# Both can be built simultaneously, prefer "newer" for size/time savings
# gtk2 is mandatory for plugin support
ifeq ($(BR2_PACKAGE_LIBGTK3),y)
WEBKITGTK24_CONF_OPTS += \
--with-gtk=3.0 \
--disable-webkit1
WEBKITGTK24_DEPENDENCIES += libgtk3
define WEBKITGTK24_INSTALL_BROWSER
$(INSTALL) -D -m 0755 $(@D)/Programs/MiniBrowser \
$(TARGET_DIR)/usr/bin/MiniBrowser
endef
WEBKITGTK24_POST_INSTALL_TARGET_HOOKS += WEBKITGTK24_INSTALL_BROWSER
else
WEBKITGTK24_CONF_OPTS += \
--with-gtk=2.0 \
--disable-webkit2
endif
$(eval $(autotools-package))