[gtk-osx: 6/17] Build WebKitGTK 2.10.2



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]