[gtk-osx: 6/17] Build WebKitGTK 2.10.2
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk-osx: 6/17] Build WebKitGTK 2.10.2
- Date: Tue, 10 Nov 2015 23:49:10 +0000 (UTC)
commit a262e2385441d345a8849a82e7b131942fc1e8f7
Author: Philip Chimento <philip chimento gmail com>
Date: Sat Jun 27 15:14:44 2015 -0700
Build WebKitGTK 2.10.2
This adds a "webkit2gtk3" module. (Rationale for the name, discussed at
the time that "webkit1gtk3" was added: this is WebKitGTK's WebKit2 API
for GTK 3.)
WebKit has replaced its autotools build system with a cmake one, and so
this is a cmake module. They dropped support for the Quartz backend, so
the first patch re-enables that. The second patch fixes various build
issues stemming from the assumption that building on an OS X system means
you are compiling Webkit for Safari. The other three patches fix minor
build issues that I am still trying to get the WebKit maintainers to
merge.
modulesets-stable/gtk-osx-unsupported.modules | 44 ++-
modulesets-unstable/gtk-osx-unsupported.modules | 46 +-
modulesets/gtk-osx-unsupported.modules | 44 ++-
patches/patch status | 13 +
patches/webkit-144560-platform-fixes.patch | 647 ++++++++++++++++++++
patches/webkit-144561-quartz-backend.patch | 45 ++
patches/webkit-144785-link-injected-bundle.patch | 10 +
...148606-build-texture-mapper-gl-separately.patch | 23 +
...nclude-stub-for-plugin-permission-request.patch | 14 +
9 files changed, 872 insertions(+), 14 deletions(-)
---
diff --git a/modulesets-stable/gtk-osx-unsupported.modules b/modulesets-stable/gtk-osx-unsupported.modules
index 55c0669..76257f5 100644
--- a/modulesets-stable/gtk-osx-unsupported.modules
+++ b/modulesets-stable/gtk-osx-unsupported.modules
@@ -56,7 +56,7 @@
<dependencies>
<dep package="meta-gtk-osx-gtk3"/>
<dep package="libsoup"/>
- <dep package="WebKit"/>
+ <dep package="webkit2gtk3"/>
</dependencies>
</metamodule>
@@ -302,4 +302,46 @@
<dep package="meta-gstreamer-1.0"/>
</after>
</autotools>
+
+ <!-- This is the stable release of WebKitGTK, for GTK 3.x. Use it if you need
+ the WebKit2 API (most applications do.)
+ ENABLE_MINIBROWSER: This is enabled because it's an easy test of whether the
+ library is working correctly: run "jhbuild run MiniBrowser".
+ ENABLE_PLUGIN_PROCESS_GTK2: Requires both GTK 2.x and 3.x. Currently not
+ supported.
+ ENABLE_VIDEO, ENABLE_WEB_AUDIO: Requires gstreamer. If you want video and
+ audio, fix this in your .jhbuildrc-custom. You may need some extra
+ patches, this is untested.
+ ENABLE_CREDENTIAL_STORAGE: Requires libsecret. No module for this yet.
+ ENABLE_GEOLOCATION: Requires geoclue. No module for this yet.
+ ENABLE_OPENGL: Untested.
+ USE_LIBNOTIFY: Requires libnotify. No module for this yet.
+ USE_LIBHYPHEN: Requires libhyphen. No module for this yet.
+ -->
+ <cmake id="webkit2gtk3"
+ cmakeargs="-DPORT=GTK -DENABLE_X11_TARGET=OFF -DENABLE_QUARTZ_TARGET=ON -DENABLE_TOOLS=ON
-DENABLE_MINIBROWSER=ON -DENABLE_PLUGIN_PROCESS_GTK2=OFF -DENABLE_VIDEO=OFF -DENABLE_WEB_AUDIO=OFF
-DENABLE_CREDENTIAL_STORAGE=OFF -DENABLE_GEOLOCATION=OFF -DENABLE_OPENGL=OFF -DUSE_LIBNOTIFY=OFF
-DUSE_LIBHYPHEN=OFF -DCMAKE_CXX_FLAGS='-stdlib=libc++'">
+ <branch repo="webkit.org" module="webkitgtk-2.10.2.tar.xz" version="2.10.2">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144561-quartz-backend.patch"
+ strip="1"/>
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144560-platform-fixes.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144785-link-injected-bundle.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148606-build-texture-mapper-gl-separately.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148607-include-stub-for-plugin-permission-request.patch"
+ strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="libwebp"/>
+ <dep package="enchant"/>
+ <dep package="icu"/>
+ <dep package="libsoup"/>
+ <dep package="meta-gtk-osx-freetype"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-gtk3"/>
+ <dep package="meta-gstreamer-1.0"/>
+ </after>
+ </cmake>
</moduleset>
diff --git a/modulesets-unstable/gtk-osx-unsupported.modules b/modulesets-unstable/gtk-osx-unsupported.modules
index 8152512..b40e68c 100644
--- a/modulesets-unstable/gtk-osx-unsupported.modules
+++ b/modulesets-unstable/gtk-osx-unsupported.modules
@@ -236,23 +236,45 @@
</after>
</autotools>
- <autotools id="WebKit-git"
- autogenargs="--enable-quartz-target --disable-x11-target --disable-video
--with-font-backend=pango --with-gtk=2.0 --disable-geolocation --disable-webkit2 --disable-credential-storage
--disable-svg-fonts --disable-web-audio --disable-fast-malloc --disable-gtk-doc-html">
- <!--branch repo="svn.webkit.org" module="webkit/trunk" checkoutdir="WebKit-svn"/-->
- <branch repo="git.webkit.org" module="WebKit" checkoutdir="WebKit-git"/>
+ <!-- This is the stable release of WebKitGTK, for GTK 3.x. Use it if you need
+ the WebKit2 API (most applications do.)
+ ENABLE_MINIBROWSER: This is enabled because it's an easy test of whether the
+ library is working correctly: run "jhbuild run MiniBrowser".
+ ENABLE_PLUGIN_PROCESS_GTK2: Requires both GTK 2.x and 3.x. Currently not
+ supported.
+ ENABLE_VIDEO, ENABLE_WEB_AUDIO: Requires gstreamer. If you want video and
+ audio, fix this in your .jhbuildrc-custom. You may need some extra
+ patches, this is untested.
+ ENABLE_CREDENTIAL_STORAGE: Requires libsecret. No module for this yet.
+ ENABLE_GEOLOCATION: Requires geoclue. No module for this yet.
+ ENABLE_OPENGL: Untested.
+ USE_LIBNOTIFY: Requires libnotify. No module for this yet.
+ USE_LIBHYPHEN: Requires libhyphen. No module for this yet.
+ -->
+ <cmake id="webkit2gtk3"
+ cmakeargs="-DPORT=GTK -DENABLE_X11_TARGET=OFF -DENABLE_QUARTZ_TARGET=ON -DENABLE_TOOLS=ON
-DENABLE_MINIBROWSER=ON -DENABLE_PLUGIN_PROCESS_GTK2=OFF -DENABLE_VIDEO=OFF -DENABLE_WEB_AUDIO=OFF
-DENABLE_CREDENTIAL_STORAGE=OFF -DENABLE_GEOLOCATION=OFF -DENABLE_OPENGL=OFF -DUSE_LIBNOTIFY=OFF
-DUSE_LIBHYPHEN=OFF -DCMAKE_CXX_FLAGS='-stdlib=libc++'">
+ <branch repo="webkit.org" module="webkitgtk-2.10.2.tar.xz" version="2.10.2">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144561-quartz-backend.patch"
+ strip="1"/>
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144560-platform-fixes.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144785-link-injected-bundle.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148606-build-texture-mapper-gl-separately.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148607-include-stub-for-plugin-permission-request.patch"
+ strip="1"/>
+ </branch>
<dependencies>
- <dep package="libsoup"/>
+ <dep package="libwebp"/>
<dep package="enchant"/>
- <dep package="meta-gtk-osx-freetype"/>
<dep package="icu"/>
+ <dep package="libsoup"/>
+ <dep package="meta-gtk-osx-freetype"/>
</dependencies>
<after>
- <dep package="libcurl"/>
- <dep package="bison"/>
- <!--dep package="gst-plugins-base"/-->
<dep package="meta-gtk-osx-gtk3"/>
+ <dep package="meta-gstreamer-1.0"/>
</after>
- </autotools>
-
-
+ </cmake>
</moduleset>
diff --git a/modulesets/gtk-osx-unsupported.modules b/modulesets/gtk-osx-unsupported.modules
index 82b652b..40c7cdb 100644
--- a/modulesets/gtk-osx-unsupported.modules
+++ b/modulesets/gtk-osx-unsupported.modules
@@ -50,7 +50,7 @@
<dependencies>
<dep package="meta-gtk-osx-gtk3"/>
<dep package="libsoup-gtk3"/>
- <dep package="WebKit"/>
+ <dep package="webkit2gtk3"/>
</dependencies>
</metamodule>
@@ -244,4 +244,46 @@
<dep package="meta-gstreamer-1.0"/>
</after>
</autotools>
+
+ <!-- This is the stable release of WebKitGTK, for GTK 3.x. Use it if you need
+ the WebKit2 API (most applications do.)
+ ENABLE_MINIBROWSER: This is enabled because it's an easy test of whether the
+ library is working correctly: run "jhbuild run MiniBrowser".
+ ENABLE_PLUGIN_PROCESS_GTK2: Requires both GTK 2.x and 3.x. Currently not
+ supported.
+ ENABLE_VIDEO, ENABLE_WEB_AUDIO: Requires gstreamer. If you want video and
+ audio, fix this in your .jhbuildrc-custom. You may need some extra
+ patches, this is untested.
+ ENABLE_CREDENTIAL_STORAGE: Requires libsecret. No module for this yet.
+ ENABLE_GEOLOCATION: Requires geoclue. No module for this yet.
+ ENABLE_OPENGL: Untested.
+ USE_LIBNOTIFY: Requires libnotify. No module for this yet.
+ USE_LIBHYPHEN: Requires libhyphen. No module for this yet.
+ -->
+ <cmake id="webkit2gtk3"
+ cmakeargs="-DPORT=GTK -DENABLE_X11_TARGET=OFF -DENABLE_QUARTZ_TARGET=ON -DENABLE_TOOLS=ON
-DENABLE_MINIBROWSER=ON -DENABLE_PLUGIN_PROCESS_GTK2=OFF -DENABLE_VIDEO=OFF -DENABLE_WEB_AUDIO=OFF
-DENABLE_CREDENTIAL_STORAGE=OFF -DENABLE_GEOLOCATION=OFF -DENABLE_OPENGL=OFF -DUSE_LIBNOTIFY=OFF
-DUSE_LIBHYPHEN=OFF -DCMAKE_CXX_FLAGS='-stdlib=libc++'">
+ <branch repo="webkit.org" module="webkitgtk-2.10.2.tar.xz" version="2.10.2">
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144561-quartz-backend.patch"
+ strip="1"/>
+ <patch file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144560-platform-fixes.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-144785-link-injected-bundle.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148606-build-texture-mapper-gl-separately.patch"
+ strip="1"/>
+ <patch
file="http://git.gnome.org/browse/gtk-osx/plain/patches/webkit-148607-include-stub-for-plugin-permission-request.patch"
+ strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="libwebp"/>
+ <dep package="enchant"/>
+ <dep package="icu"/>
+ <dep package="libsoup"/>
+ <dep package="meta-gtk-osx-freetype"/>
+ </dependencies>
+ <after>
+ <dep package="meta-gtk-osx-gtk3"/>
+ <dep package="meta-gstreamer-1.0"/>
+ </after>
+ </cmake>
</moduleset>
diff --git a/patches/patch status b/patches/patch status
index 6cef8be..7eb12c3 100644
--- a/patches/patch status
+++ b/patches/patch status
@@ -42,6 +42,19 @@ webkit1gtk: webkit-140167-disable-netscape-api.patch
This patch is a workaround for a clang bug in XCode < 6.3. It can
be commented out for XCode 6.3 and later versions.
+webkit2gtk3: webkit-144561-quartz-backend.patch
+ Unlikely to be merged unless WebKit gains a build bot
+ for WebKitGTK on OS X.
+ webkit-144560-platform-fixes.patch
+ Various fixes to disable OS X-specific functionality that
+ works for Safari but shouldn't be enabled for WebKitGTK.
+ webkit-144785-link-injected-bundle.patch
+ Languishing in Bugzilla
+ webkit-148606-build-texture-mapper-gl-separately.patch
+ Languishing in Bugzilla
+ webkit-148607-include-stub-for-plugin-permission-request.patch
+ Languishing in Bugzilla
+
GConf: GConf-characters.patch Bug 161209. Unlikely ever to be fixed.
Glade: Glade-3-8-Bug-663492-Update-Mac-integration-bindings-to-.patch
diff --git a/patches/webkit-144560-platform-fixes.patch b/patches/webkit-144560-platform-fixes.patch
new file mode 100644
index 0000000..37b82d8
--- /dev/null
+++ b/patches/webkit-144560-platform-fixes.patch
@@ -0,0 +1,647 @@
+--- a/Source/WTF/wtf/Platform.h
++++ b/Source/WTF/wtf/Platform.h
+@@ -628,8 +628,10 @@
+ #define HAVE_PTHREAD_SETNAME_NP 1
+ #define HAVE_READLINE 1
+ #define HAVE_SYS_TIMEB_H 1
+-#define USE_ACCELERATE 1
+
++#if !PLATFORM(GTK)
++#define USE_ACCELERATE 1
++#endif
+ #if !PLATFORM(IOS)
+ #define HAVE_HOSTED_CORE_ANIMATION 1
+ #endif
+--- a/Source/WTF/wtf/WorkQueue.h
++++ b/Source/WTF/wtf/WorkQueue.h
+@@ -34,7 +34,7 @@
+ #include <wtf/RefCounted.h>
+ #include <wtf/Threading.h>
+
+-#if OS(DARWIN)
++#if OS(DARWIN) && !PLATFORM(GTK)
+ #include <dispatch/dispatch.h>
+ #endif
+
+@@ -71,14 +71,14 @@ public:
+ WTF_EXPORT_PRIVATE virtual void dispatch(std::function<void ()>) override;
+ WTF_EXPORT_PRIVATE void dispatchAfter(std::chrono::nanoseconds, std::function<void ()>);
+
+-#if OS(DARWIN)
+- dispatch_queue_t dispatchQueue() const { return m_dispatchQueue; }
+-#elif PLATFORM(GTK)
++#if PLATFORM(GTK)
+ void registerSocketEventHandler(int, std::function<void ()>, std::function<void ()>);
+ void unregisterSocketEventHandler(int);
+ #elif PLATFORM(EFL)
+ void registerSocketEventHandler(int, std::function<void ()>);
+ void unregisterSocketEventHandler(int);
++#elif OS(DARWIN)
++ dispatch_queue_t dispatchQueue() const { return m_dispatchQueue; }
+ #endif
+
+ private:
+@@ -100,16 +100,16 @@ private:
+ static DWORD WINAPI unregisterWaitAndDestroyItemCallback(void* context);
+ #endif
+
+-#if OS(DARWIN)
+- static void executeFunction(void*);
+- dispatch_queue_t m_dispatchQueue;
+-#elif PLATFORM(GTK)
++#if PLATFORM(GTK)
+ ThreadIdentifier m_workQueueThread;
+ GRefPtr<GMainContext> m_eventContext;
+ GRefPtr<GMainLoop> m_eventLoop;
+ GMainLoopSource m_socketEventSource;
+ #elif PLATFORM(EFL)
+ RefPtr<DispatchQueue> m_dispatchQueue;
++#elif OS(DARWIN)
++ static void executeFunction(void*);
++ dispatch_queue_t m_dispatchQueue;
+ #elif OS(WINDOWS)
+ volatile LONG m_isWorkThreadRegistered;
+
+--- a/Source/WebCore/platform/graphics/PlatformDisplay.cpp
++++ b/Source/WebCore/platform/graphics/PlatformDisplay.cpp
+@@ -42,6 +42,10 @@
+ #endif
+
+ #if PLATFORM(GTK)
++#include <gdk/gdk.h>
++#endif
++
++#if PLATFORM(GTK)
+ #if PLATFORM(X11)
+ #include <gdk/gdkx.h>
+ #endif
+--- a/Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp
++++ b/Source/WebCore/platform/graphics/opentype/OpenTypeMathData.cpp
+@@ -40,7 +40,7 @@ namespace WebCore {
+ #if ENABLE(OPENTYPE_MATH)
+ namespace OpenType {
+
+-#if OS(DARWIN)
++#if PLATFORM(COCOA)
+ const FourCharCode MATHTag = 'MATH';
+ #else
+ const uint32_t MATHTag = OT_MAKE_TAG('M', 'A', 'T', 'H');
+--- a/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp
++++ b/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp
+@@ -176,7 +176,11 @@ void DatabaseProcess::performNextDatabaseTask()
+
+ void DatabaseProcess::createDatabaseToWebProcessConnection()
+ {
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
++ m_databaseToWebProcessConnections.append(DatabaseToWebProcessConnection::create(socketPair.server));
++
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidCreateDatabaseToWebProcessConnection(IPC::Attachment(socketPair.client)),
0);
++#elif OS(DARWIN)
+ // Create the listening port.
+ mach_port_t listeningPort;
+ mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort);
+@@ -187,10 +191,6 @@ void DatabaseProcess::createDatabaseToWebProcessConnection()
+
+ IPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
+
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidCreateDatabaseToWebProcessConnection(clientPort),
0);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
+- m_databaseToWebProcessConnections.append(DatabaseToWebProcessConnection::create(socketPair.server));
+-
parentProcessConnection()->send(Messages::DatabaseProcessProxy::DidCreateDatabaseToWebProcessConnection(IPC::Attachment(socketPair.client)),
0);
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/NetworkProcess/NetworkProcess.cpp
++++ b/Source/WebKit2/NetworkProcess/NetworkProcess.cpp
+@@ -235,7 +235,15 @@ void NetworkProcess::initializeConnection(IPC::Connection* connection)
+
+ void NetworkProcess::createNetworkConnectionToWebProcess()
+ {
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
++
++ RefPtr<NetworkConnectionToWebProcess> connection =
NetworkConnectionToWebProcess::create(socketPair.server);
++ m_webProcessConnections.append(connection.release());
++
++ IPC::Attachment clientSocket(socketPair.client);
++
parentProcessConnection()->send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientSocket),
0);
++#elif OS(DARWIN)
+ // Create the listening port.
+ mach_port_t listeningPort;
+ mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort);
+@@ -246,14 +254,6 @@ void NetworkProcess::createNetworkConnectionToWebProcess()
+
+ IPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
+
parentProcessConnection()->send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientPort),
0);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
+-
+- RefPtr<NetworkConnectionToWebProcess> connection =
NetworkConnectionToWebProcess::create(socketPair.server);
+- m_webProcessConnections.append(connection.release());
+-
+- IPC::Attachment clientSocket(socketPair.client);
+-
parentProcessConnection()->send(Messages::NetworkProcessProxy::DidCreateNetworkConnectionToWebProcess(clientSocket),
0);
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/Platform/IPC/Attachment.cpp
++++ b/Source/WebKit2/Platform/IPC/Attachment.cpp
+@@ -36,7 +36,7 @@ Attachment::Attachment()
+ {
+ }
+
+-#if OS(DARWIN)
++#if PLATFORM(COCOA)
+ Attachment::Attachment(mach_port_name_t port, mach_msg_type_name_t disposition)
+ : m_type(MachPortType)
+ , m_port(port)
+--- a/Source/WebKit2/Platform/IPC/Attachment.h
++++ b/Source/WebKit2/Platform/IPC/Attachment.h
+@@ -26,7 +26,7 @@
+ #ifndef Attachment_h
+ #define Attachment_h
+
+-#if OS(DARWIN)
++#if OS(DARWIN) && !USE(UNIX_DOMAIN_SOCKETS)
+ #include <mach/mach_init.h>
+ #include <mach/mach_traps.h>
+ #endif
+@@ -42,38 +42,37 @@ public:
+
+ enum Type {
+ Uninitialized,
+-#if OS(DARWIN)
+- MachPortType,
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ SocketType,
+- MappedMemoryType
++ MappedMemoryType,
++#elif OS(DARWIN)
++ MachPortType
+ #endif
+ };
+
+-#if OS(DARWIN)
+- Attachment(mach_port_name_t port, mach_msg_type_name_t disposition);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ Attachment(Attachment&&);
+ Attachment& operator=(Attachment&&);
+ Attachment(int fileDescriptor, size_t);
+ Attachment(int fileDescriptor);
+ ~Attachment();
++#elif OS(DARWIN)
++ Attachment(mach_port_name_t, mach_msg_type_name_t disposition);
+ #endif
+
+ Type type() const { return m_type; }
+
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ size_t size() const { return m_size; }
++
++ int releaseFileDescriptor() { int temp = m_fileDescriptor; m_fileDescriptor = -1; return temp; }
++ int fileDescriptor() const { return m_fileDescriptor; }
++#elif OS(DARWIN)
+ void release();
+
+ // MachPortType
+ mach_port_name_t port() const { return m_port; }
+ mach_msg_type_name_t disposition() const { return m_disposition; }
+-
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- size_t size() const { return m_size; }
+-
+- int releaseFileDescriptor() { int temp = m_fileDescriptor; m_fileDescriptor = -1; return temp; }
+- int fileDescriptor() const { return m_fileDescriptor; }
+ #endif
+
+ void encode(ArgumentEncoder&) const;
+@@ -82,12 +81,12 @@ public:
+ private:
+ Type m_type;
+
+-#if OS(DARWIN)
+- mach_port_name_t m_port;
+- mach_msg_type_name_t m_disposition;
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ int m_fileDescriptor { -1 };
+ size_t m_size;
++#elif OS(DARWIN)
++ mach_port_name_t m_port;
++ mach_msg_type_name_t m_disposition;
+ #endif
+ };
+
+--- a/Source/WebKit2/Platform/IPC/Connection.h
++++ b/Source/WebKit2/Platform/IPC/Connection.h
+@@ -41,7 +41,7 @@
+ #include <wtf/WorkQueue.h>
+ #include <wtf/text/CString.h>
+
+-#if OS(DARWIN)
++#if OS(DARWIN) && !USE(UNIX_DOMAIN_SOCKETS)
+ #include <mach/mach_port.h>
+ #include <wtf/OSObjectPtr.h>
+ #include <wtf/spi/darwin/XPCSPI.h>
+@@ -102,7 +102,22 @@ public:
+ class WorkQueueMessageReceiver : public MessageReceiver, public
ThreadSafeRefCounted<WorkQueueMessageReceiver> {
+ };
+
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ typedef int Identifier;
++ static bool identifierIsNull(Identifier identifier) { return identifier == -1; }
++
++ struct SocketPair {
++ int client;
++ int server;
++ };
++
++ enum ConnectionOptions {
++ SetCloexecOnClient = 1 << 0,
++ SetCloexecOnServer = 1 << 1,
++ };
++
++ static Connection::SocketPair createPlatformConnection(unsigned options = SetCloexecOnClient |
SetCloexecOnServer);
++#elif OS(DARWIN)
+ struct Identifier {
+ Identifier()
+ : port(MACH_PORT_NULL)
+@@ -127,21 +142,6 @@ public:
+ xpc_connection_t xpcConnection() const { return m_xpcConnection.get(); }
+ bool getAuditToken(audit_token_t&);
+ pid_t remoteProcessID() const;
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- typedef int Identifier;
+- static bool identifierIsNull(Identifier identifier) { return identifier == -1; }
+-
+- struct SocketPair {
+- int client;
+- int server;
+- };
+-
+- enum ConnectionOptions {
+- SetCloexecOnClient = 1 << 0,
+- SetCloexecOnServer = 1 << 1,
+- };
+-
+- static Connection::SocketPair createPlatformConnection(unsigned options = SetCloexecOnClient |
SetCloexecOnServer);
+ #endif
+
+ static Ref<Connection> createServerConnection(Identifier, Client&, WTF::RunLoop& clientRunLoop);
+@@ -313,7 +313,17 @@ private:
+ bool m_shouldBoostMainThreadOnSyncMessage { false };
+ #endif
+
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ // Called on the connection queue.
++ void readyReadHandler();
++ bool processMessage();
++
++ Vector<uint8_t> m_readBuffer;
++ size_t m_readBufferSize;
++ Vector<int> m_fileDescriptors;
++ size_t m_fileDescriptorsSize;
++ int m_socketDescriptor;
++#elif OS(DARWIN)
+ // Called on the connection queue.
+ void receiveSourceEventHandler();
+ void initializeDeadNameSource();
+@@ -334,17 +344,6 @@ private:
+ #endif
+
+ OSObjectPtr<xpc_connection_t> m_xpcConnection;
+-
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- // Called on the connection queue.
+- void readyReadHandler();
+- bool processMessage();
+-
+- Vector<uint8_t> m_readBuffer;
+- size_t m_readBufferSize;
+- Vector<int> m_fileDescriptors;
+- size_t m_fileDescriptorsSize;
+- int m_socketDescriptor;
+ #endif
+ };
+
+--- a/Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp
++++ b/Source/WebKit2/Platform/IPC/unix/ConnectionUnix.cpp
+@@ -43,7 +43,7 @@
+ #include <glib.h>
+ #endif
+
+-#ifdef SOCK_SEQPACKET
++#if defined(SOCK_SEQPACKET) && !PLATFORM(GTK)
+ #define SOCKET_TYPE SOCK_SEQPACKET
+ #else
+ #if PLATFORM(GTK)
+--- a/Source/WebKit2/Platform/SharedMemory.h
++++ b/Source/WebKit2/Platform/SharedMemory.h
+@@ -74,11 +74,11 @@ public:
+ #endif
+ private:
+ friend class SharedMemory;
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ mutable IPC::Attachment m_attachment;
++#elif OS(DARWIN)
+ mutable mach_port_t m_port;
+ size_t m_size;
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- mutable IPC::Attachment m_attachment;
+ #endif
+ };
+
+@@ -112,11 +112,11 @@ private:
+ void* m_data;
+ Protection m_protection;
+
+-#if OS(DARWIN)
+- mach_port_t m_port;
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ int m_fileDescriptor;
+ bool m_isWrappingMap { false };
++#elif OS(DARWIN)
++ mach_port_t m_port;
+ #endif
+ };
+
+--- a/Source/WebKit2/PluginProcess/PluginProcess.cpp
++++ b/Source/WebKit2/PluginProcess/PluginProcess.cpp
+@@ -148,7 +148,15 @@ void PluginProcess::createWebProcessConnection()
+ {
+ bool didHaveAnyWebProcessConnections = !m_webProcessConnections.isEmpty();
+
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
++
++ RefPtr<WebProcessConnection> connection = WebProcessConnection::create(socketPair.server);
++ m_webProcessConnections.append(connection.release());
++
++ IPC::Attachment clientSocket(socketPair.client);
++
parentProcessConnection()->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientSocket,
m_supportsAsynchronousPluginInitialization), 0);
++#elif OS(DARWIN)
+ // Create the listening port.
+ mach_port_t listeningPort;
+ mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort);
+@@ -167,14 +175,6 @@ void PluginProcess::createWebProcessConnection()
+
+ IPC::Attachment clientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
+ parentProcessConnection()->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientPort,
m_supportsAsynchronousPluginInitialization), 0);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
+-
+- RefPtr<WebProcessConnection> connection = WebProcessConnection::create(socketPair.server);
+- m_webProcessConnections.append(connection.release());
+-
+- IPC::Attachment clientSocket(socketPair.client);
+-
parentProcessConnection()->send(Messages::PluginProcessProxy::DidCreateWebProcessConnection(clientSocket,
m_supportsAsynchronousPluginInitialization), 0);
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/Shared/API/c/WKBase.h
++++ b/Source/WebKit2/Shared/API/c/WKBase.h
+@@ -42,7 +42,7 @@
+ #include <WebKit/WKBaseEfl.h>
+ #endif
+
+-#if defined(__APPLE__)
++#if defined(__APPLE__) && !defined(BUILDING_GTK__)
+ #include <WebKit/WKBaseMac.h>
+ #endif
+
+--- a/Source/WebKit2/UIProcess/API/C/WKNativeEvent.h
++++ b/Source/WebKit2/UIProcess/API/C/WKNativeEvent.h
+@@ -34,7 +34,7 @@
+ extern "C" {
+ #endif
+
+-#if defined(__APPLE__) && !TARGET_OS_IPHONE
++#if defined(__APPLE__) && !TARGET_OS_IPHONE && !defined(BUILDING_GTK__)
+ #ifdef __OBJC__
+ @class NSEvent;
+ #elif __cplusplus
+--- a/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp
++++ b/Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp
+@@ -133,10 +133,10 @@ void DatabaseProcessProxy::didClose(IPC::Connection&)
+ while (!m_pendingConnectionReplies.isEmpty()) {
+ auto reply = m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND));
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(IPC::Attachment());
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND));
+ #else
+ notImplemented();
+ #endif
+@@ -168,10 +168,10 @@ void DatabaseProcessProxy::didCreateDatabaseToWebProcessConnection(const IPC::At
+
+ RefPtr<Messages::WebProcessProxy::GetDatabaseProcessConnection::DelayedReply> reply =
m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND));
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(connectionIdentifier);
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND));
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp
++++ b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.cpp
+@@ -58,7 +58,7 @@ void ProcessLauncher::didFinishLaunchingProcess(PlatformProcessIdentifier proces
+
+ if (!m_client) {
+ // FIXME: Make Identifier a move-only object and release port rights/connections in the destructor.
+-#if OS(DARWIN)
++#if PLATFORM(COCOA)
+ if (identifier.port)
+ mach_port_mod_refs(mach_task_self(), identifier.port, MACH_PORT_RIGHT_RECEIVE, -1);
+ #endif
+--- a/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h
++++ b/Source/WebKit2/UIProcess/Launcher/ProcessLauncher.h
+@@ -61,7 +61,7 @@ public:
+ struct LaunchOptions {
+ ProcessType processType;
+ HashMap<String, String> extraInitializationData;
+-#if OS(DARWIN)
++#if PLATFORM(COCOA)
+ static const cpu_type_t MatchCurrentArchitecture = 0;
+ cpu_type_t architecture;
+ bool executableHeap;
+--- a/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
++++ b/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
+@@ -158,10 +158,10 @@ void NetworkProcessProxy::networkProcessCrashedOrFailedToLaunch()
+ while (!m_pendingConnectionReplies.isEmpty()) {
+ RefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply =
m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND));
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(IPC::Attachment());
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND));
+ #else
+ notImplemented();
+ #endif
+@@ -224,10 +224,10 @@ void NetworkProcessProxy::didCreateNetworkConnectionToWebProcess(const IPC::Atta
+ // Grab the first pending connection reply.
+ RefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply =
m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND));
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(connectionIdentifier);
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND));
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp
++++ b/Source/WebKit2/UIProcess/Plugins/PluginProcessProxy.cpp
+@@ -154,10 +154,10 @@ void PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch()
+ while (!m_pendingConnectionReplies.isEmpty()) {
+ RefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply =
m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND), false);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(IPC::Attachment(), false);
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND), false);
+ #else
+ notImplemented();
+ #endif
+@@ -268,10 +268,10 @@ void PluginProcessProxy::didCreateWebProcessConnection(const IPC::Attachment& co
+ // Grab the first pending connection reply.
+ RefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply =
m_pendingConnectionReplies.takeFirst();
+
+-#if OS(DARWIN)
+- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND),
supportsAsynchronousPluginInitialization);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ reply->send(connectionIdentifier, supportsAsynchronousPluginInitialization);
++#elif OS(DARWIN)
++ reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND),
supportsAsynchronousPluginInitialization);
+ #else
+ notImplemented();
+ #endif
+--- a/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp
++++ b/Source/WebKit2/WebProcess/Plugins/PluginProcessConnectionManager.cpp
+@@ -36,7 +36,7 @@
+ #include "WebProcess.h"
+ #include "WebProcessProxyMessages.h"
+
+-#if OS(DARWIN)
++#if OS(DARWIN) && !USE(UNIX_DOMAIN_SOCKETS)
+ #include "MachPort.h"
+ #endif
+
+@@ -74,10 +74,10 @@ PluginProcessConnection* PluginProcessConnectionManager::getPluginProcessConnect
+
Messages::WebProcessProxy::GetPluginProcessConnection::Reply(encodedConnectionIdentifier,
supportsAsynchronousInitialization), 0))
+ return 0;
+
+-#if OS(DARWIN)
+- IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ IPC::Connection::Identifier connectionIdentifier = encodedConnectionIdentifier.releaseFileDescriptor();
++#elif OS(DARWIN)
++ IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+ #endif
+ if (IPC::Connection::identifierIsNull(connectionIdentifier))
+ return nullptr;
+--- a/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp
++++ b/Source/WebKit2/WebProcess/WebPage/WebInspector.cpp
+@@ -77,16 +77,16 @@ WebInspector::~WebInspector()
+ // Called from WebInspectorClient
+ void WebInspector::createInspectorPage(bool underTest)
+ {
+-#if OS(DARWIN)
++#if USE(UNIX_DOMAIN_SOCKETS)
++ IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
++ IPC::Connection::Identifier connectionIdentifier(socketPair.server);
++ IPC::Attachment connectionClientPort(socketPair.client);
++#elif OS(DARWIN)
+ mach_port_t listeningPort;
+ mach_port_allocate(mach_task_self(), MACH_PORT_RIGHT_RECEIVE, &listeningPort);
+
+ IPC::Connection::Identifier connectionIdentifier(listeningPort);
+ IPC::Attachment connectionClientPort(listeningPort, MACH_MSG_TYPE_MAKE_SEND);
+-#elif USE(UNIX_DOMAIN_SOCKETS)
+- IPC::Connection::SocketPair socketPair = IPC::Connection::createPlatformConnection();
+- IPC::Connection::Identifier connectionIdentifier(socketPair.server);
+- IPC::Attachment connectionClientPort(socketPair.client);
+ #else
+ notImplemented();
+ return;
+--- a/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp
++++ b/Source/WebKit2/WebProcess/WebPage/WebInspectorUI.cpp
+@@ -63,10 +63,10 @@ WebInspectorUI::WebInspectorUI(WebPage* page)
+
+ void WebInspectorUI::establishConnection(IPC::Attachment encodedConnectionIdentifier, uint64_t
inspectedPageIdentifier, bool underTest)
+ {
+-#if OS(DARWIN)
+- IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.releaseFileDescriptor());
++#elif OS(DARWIN)
++ IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+ #else
+ notImplemented();
+ return;
+--- a/Source/WebKit2/WebProcess/WebProcess.cpp
++++ b/Source/WebKit2/WebProcess/WebProcess.cpp
+@@ -405,10 +405,10 @@ void WebProcess::ensureNetworkProcessConnection()
+ Messages::WebProcessProxy::GetNetworkProcessConnection::Reply(encodedConnectionIdentifier), 0))
+ return;
+
+-#if OS(DARWIN)
+- IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ IPC::Connection::Identifier connectionIdentifier = encodedConnectionIdentifier.releaseFileDescriptor();
++#elif OS(DARWIN)
++ IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+ #else
+ ASSERT_NOT_REACHED();
+ #endif
+@@ -1073,10 +1073,10 @@ void WebProcess::ensureWebToDatabaseProcessConnection()
+ Messages::WebProcessProxy::GetDatabaseProcessConnection::Reply(encodedConnectionIdentifier), 0))
+ return;
+
+-#if OS(DARWIN)
+- IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+-#elif USE(UNIX_DOMAIN_SOCKETS)
++#if USE(UNIX_DOMAIN_SOCKETS)
+ IPC::Connection::Identifier connectionIdentifier = encodedConnectionIdentifier.releaseFileDescriptor();
++#elif OS(DARWIN)
++ IPC::Connection::Identifier connectionIdentifier(encodedConnectionIdentifier.port());
+ #else
+ ASSERT_NOT_REACHED();
+ #endif
+--- a/Source/bmalloc/PlatformGTK.cmake
++++ b/Source/bmalloc/PlatformGTK.cmake
+@@ -0,0 +1,5 @@
++if (CMAKE_SYSTEM_NAME MATCHES "Darwin")
++ list(APPEND bmalloc_SOURCES
++ bmalloc/Zone.cpp
++ )
++endif ()
diff --git a/patches/webkit-144561-quartz-backend.patch b/patches/webkit-144561-quartz-backend.patch
new file mode 100644
index 0000000..3198267
--- /dev/null
+++ b/patches/webkit-144561-quartz-backend.patch
@@ -0,0 +1,45 @@
+--- a/Source/cmake/FindGTK3.cmake
++++ b/Source/cmake/FindGTK3.cmake
+@@ -5,6 +5,7 @@
+ # GTK3_INCLUDE_DIRS - the GTK+ 3. include directories
+ # GTK3_LIBRARIES - link these to use GTK+ 3.
+ # GTK3_SUPPORTS_GESTURES - GTK+ supports gestures (GTK+ >= 3.14)
++# GTK3_SUPPORTS_QUARTZ - GTK+ supports Quartz backend
+ # GTK3_SUPPORTS_X11 - GTK+ supports X11 backend
+ # GTK3_SUPPORTS_WAYLAND - GTK+ supports Wayland backend
+ #
+@@ -49,6 +50,11 @@ if (GTK3_VERSION)
+ endif ()
+
+ if (GTK3_VERSION AND VERSION_OK)
++ pkg_check_modules(GTK3_QUARTZ gtk+-quartz-3.0)
++ if ("${GTK3_QUARTZ_VERSION}" VERSION_EQUAL "${GTK3_VERSION}")
++ set(GTK3_SUPPORTS_QUARTZ TRUE)
++ endif ()
++
+ pkg_check_modules(GTK3_X11 gtk+-x11-3.0)
+ if ("${GTK3_X11_VERSION}" VERSION_EQUAL "${GTK3_VERSION}")
+ set(GTK3_SUPPORTS_X11 TRUE)
+--- a/Source/cmake/OptionsGTK.cmake
++++ b/Source/cmake/OptionsGTK.cmake
+@@ -183,6 +183,7 @@ WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_THREADED_COMPOSITOR PRIVATE OFF)
+ # this point, and do not attempt to change any option after this point.
+ WEBKIT_OPTION_END()
+
++SET_AND_EXPOSE_TO_BUILD(WTF_PLATFORM_QUARTZ ${ENABLE_QUARTZ_TARGET})
+ SET_AND_EXPOSE_TO_BUILD(WTF_PLATFORM_X11 ${ENABLE_X11_TARGET})
+ SET_AND_EXPOSE_TO_BUILD(WTF_PLATFORM_WAYLAND ${ENABLE_WAYLAND_TARGET})
+
+@@ -389,6 +390,12 @@ if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
+ SET_AND_EXPOSE_TO_BUILD(USE_GSTREAMER TRUE)
+ endif ()
+
++if (ENABLE_QUARTZ_TARGET)
++ if (NOT GTK3_SUPPORTS_QUARTZ)
++ message(FATAL_ERROR "Recompile GTK+ with Quartz backend to use ENABLE_QUARTZ_TARGET")
++ endif ()
++endif ()
++
+ if (ENABLE_X11_TARGET)
+ if (NOT GTK3_SUPPORTS_X11)
+ message(FATAL_ERROR "Recompile GTK+ with X11 backend to use ENABLE_X11_TARGET")
diff --git a/patches/webkit-144785-link-injected-bundle.patch
b/patches/webkit-144785-link-injected-bundle.patch
new file mode 100644
index 0000000..fd8682d
--- /dev/null
+++ b/patches/webkit-144785-link-injected-bundle.patch
@@ -0,0 +1,10 @@
+--- a/Source/WebKit2/PlatformGTK.cmake
++++ b/Source/WebKit2/PlatformGTK.cmake
+@@ -809,6 +809,7 @@ include_directories(
+ add_library(webkit2gtkinjectedbundle MODULE "${WEBKIT2_DIR}/WebProcess/gtk/WebGtkInjectedBundleMain.cpp")
+ add_dependencies(webkit2gtkinjectedbundle GObjectDOMBindings)
+ add_webkit2_prefix_header(webkit2gtkinjectedbundle)
++target_link_libraries(webkit2gtkinjectedbundle WebKit2)
+
+ # Add ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} to LD_LIBRARY_PATH
+ string(COMPARE EQUAL "$ENV{LD_LIBRARY_PATH}" "" ld_library_path_not_exist)
diff --git a/patches/webkit-148606-build-texture-mapper-gl-separately.patch
b/patches/webkit-148606-build-texture-mapper-gl-separately.patch
new file mode 100644
index 0000000..391d509
--- /dev/null
+++ b/patches/webkit-148606-build-texture-mapper-gl-separately.patch
@@ -0,0 +1,23 @@
+--- a/Source/WebCore/PlatformGTK.cmake
++++ b/Source/WebCore/PlatformGTK.cmake
+@@ -414,12 +414,17 @@ if (USE_TEXTURE_MAPPER)
+ )
+ list(APPEND WebCore_SOURCES
+ platform/graphics/texmap/BitmapTexture.cpp
+- platform/graphics/texmap/BitmapTextureGL.cpp
+ platform/graphics/texmap/BitmapTexturePool.cpp
+ platform/graphics/texmap/GraphicsLayerTextureMapper.cpp
+- platform/graphics/texmap/TextureMapperGL.cpp
+- platform/graphics/texmap/TextureMapperShaderProgram.cpp
+ )
++
++ if (USE_TEXTURE_MAPPER_GL)
++ list(APPEND WebCore_SOURCES
++ platform/graphics/texmap/BitmapTextureGL.cpp
++ platform/graphics/texmap/TextureMapperGL.cpp
++ platform/graphics/texmap/TextureMapperShaderProgram.cpp
++ )
++ endif ()
+ endif ()
+
+ if (ENABLE_THREADED_COMPOSITOR)
diff --git a/patches/webkit-148607-include-stub-for-plugin-permission-request.patch
b/patches/webkit-148607-include-stub-for-plugin-permission-request.patch
new file mode 100644
index 0000000..a936e7e
--- /dev/null
+++ b/patches/webkit-148607-include-stub-for-plugin-permission-request.patch
@@ -0,0 +1,14 @@
+--- a/Source/WebKit2/UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.h 2015-08-27
23:05:51.000000000 -0700
++++ b/Source/WebKit2/UIProcess/gstreamer/InstallMissingMediaPluginsPermissionRequest.h 2015-08-27
23:05:54.000000000 -0700
+@@ -63,5 +63,11 @@
+
+ } // namespace WebKit
+
++#else
++
++namespace WebKit {
++class InstallMissingMediaPluginsPermissionRequest;
++} // namespace WebKit
++
+ #endif // ENABLE(VIDEO) && USE(GSTREAMER)
+ #endif // InstallMissingMediaPluginsPermissionRequest_h
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]