[GTK] Add a basic cmake build for WTF and JavaScriptCore
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 May 2013 18:22:11 +0000 (18:22 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 12 May 2013 18:22:11 +0000 (18:22 +0000)
https://bugs.webkit.org/show_bug.cgi?id=115967

Reviewed by Laszlo Gombos.

.:

* CMakeLists.txt: Add GTK+ to the list of ports.
* Source/CMakeLists.txt: We do not try to build WebCoreTestSupport when WebCore is disabled.
* Source/cmake/FindGAIL3.cmake: Added.
* Source/cmake/FindGDK3.cmake: Added.
* Source/cmake/FindGStreamer.cmake: Use the passed in minimum version.
* Source/cmake/FindGTK3.cmake: Added.
* Source/cmake/FindXt.cmake: Added.
* Source/cmake/OptionsEfl.cmake: Pass in the minimum version.
* Source/cmake/OptionsGTK.cmake: Added.

Source/JavaScriptCore:

* PlatformGTK.cmake: Added.
* shell/PlatformGTK.cmake: Added.

Source/WTF:

* wtf/PlatformGTK.cmake: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@149968 268f45cc-cd09-0410-ab3c-d52691b4dbfc

15 files changed:
CMakeLists.txt
ChangeLog
Source/CMakeLists.txt
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/PlatformGTK.cmake [new file with mode: 0644]
Source/JavaScriptCore/shell/PlatformGTK.cmake [new file with mode: 0644]
Source/WTF/ChangeLog
Source/WTF/wtf/PlatformGTK.cmake [new file with mode: 0644]
Source/cmake/FindGAIL3.cmake [new file with mode: 0644]
Source/cmake/FindGDK3.cmake [new file with mode: 0644]
Source/cmake/FindGStreamer.cmake
Source/cmake/FindGTK3.cmake [new file with mode: 0644]
Source/cmake/FindXt.cmake [new file with mode: 0644]
Source/cmake/OptionsEfl.cmake
Source/cmake/OptionsGTK.cmake [new file with mode: 0644]

index d34e5de..60c9a62 100644 (file)
@@ -39,7 +39,7 @@ include(WebKitFeatures)
 # -----------------------------------------------------------------------------
 # Determine which port will be built
 # -----------------------------------------------------------------------------
-set(ALL_PORTS Efl WinCE BlackBerry)
+set(ALL_PORTS Efl WinCE BlackBerry GTK)
 set(PORT "NOPORT" CACHE STRING "choose which WebKit port to build (one of ${ALL_PORTS})")
 
 list(FIND ALL_PORTS ${PORT} RET)
index 9eee921..df4b0e8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,22 @@
 2013-05-11  Martin Robinson  <mrobinson@igalia.com>
 
+        [GTK] Add a basic cmake build for WTF and JavaScriptCore
+        https://bugs.webkit.org/show_bug.cgi?id=115967
+
+        Reviewed by Laszlo Gombos.
+
+        * CMakeLists.txt: Add GTK+ to the list of ports.
+        * Source/CMakeLists.txt: We do not try to build WebCoreTestSupport when WebCore is disabled.
+        * Source/cmake/FindGAIL3.cmake: Added.
+        * Source/cmake/FindGDK3.cmake: Added.
+        * Source/cmake/FindGStreamer.cmake: Use the passed in minimum version.
+        * Source/cmake/FindGTK3.cmake: Added.
+        * Source/cmake/FindXt.cmake: Added.
+        * Source/cmake/OptionsEfl.cmake: Pass in the minimum version.
+        * Source/cmake/OptionsGTK.cmake: Added.
+
+2013-05-11  Martin Robinson  <mrobinson@igalia.com>
+
         Move defines to platform
 
         [GTK] Move defines that will never be configured to Platform.h
index a38a9a2..6c21606 100644 (file)
@@ -32,9 +32,9 @@ endif ()
 
 WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WTF_LIBRARY_NAME} ${ADDITIONAL_FLAGS})
 WEBKIT_SET_EXTRA_COMPILER_FLAGS(${JavaScriptCore_LIBRARY_NAME} ${ADDITIONAL_FLAGS})
-WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WebCoreTestSupport_LIBRARY_NAME} ${ADDITIONAL_FLAGS})
 
 if (ENABLE_WEBCORE)
+    WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WebCoreTestSupport_LIBRARY_NAME} ${ADDITIONAL_FLAGS})
     WEBKIT_SET_EXTRA_COMPILER_FLAGS(${WebCore_LIBRARY_NAME} ${ADDITIONAL_FLAGS})
 endif ()
 
index b9d7c62..3b66081 100644 (file)
@@ -1,3 +1,13 @@
+2013-05-11  Martin Robinson  <mrobinson@igalia.com>
+
+        [GTK] Add a basic cmake build for WTF and JavaScriptCore
+        https://bugs.webkit.org/show_bug.cgi?id=115967
+
+        Reviewed by Laszlo Gombos.
+
+        * PlatformGTK.cmake: Added.
+        * shell/PlatformGTK.cmake: Added.
+
 2013-05-10  Laszlo Gombos  <l.gombos@samsung.com>
 
         Remove USE(OS_RANDOMNESS)
diff --git a/Source/JavaScriptCore/PlatformGTK.cmake b/Source/JavaScriptCore/PlatformGTK.cmake
new file mode 100644 (file)
index 0000000..d2b062f
--- /dev/null
@@ -0,0 +1,13 @@
+list(APPEND JavaScriptCore_SOURCES
+    jit/ExecutableAllocatorFixedVMPool.cpp
+)
+
+list(APPEND JavaScriptCore_LIBRARIES
+    ${ICU_I18N_LIBRARIES}
+)
+
+list(APPEND JavaScriptCore_INCLUDE_DIRECTORIES
+    ${JAVASCRIPTCORE_DIR}/wtf/gobject
+    ${ICU_INCLUDE_DIRS}
+)
+
diff --git a/Source/JavaScriptCore/shell/PlatformGTK.cmake b/Source/JavaScriptCore/shell/PlatformGTK.cmake
new file mode 100644 (file)
index 0000000..e42a4c5
--- /dev/null
@@ -0,0 +1,5 @@
+list(APPEND JSC_LIBRARIES
+    ${GLIB_LIBRARIES}
+    ${CMAKE_DL_LIBS}
+)
+
index 46912dd..a998aea 100644 (file)
@@ -1,5 +1,14 @@
 2013-05-11  Martin Robinson  <mrobinson@igalia.com>
 
+        [GTK] Add a basic cmake build for WTF and JavaScriptCore
+        https://bugs.webkit.org/show_bug.cgi?id=115967
+
+        Reviewed by Laszlo Gombos.
+
+        * wtf/PlatformGTK.cmake: Added.
+
+2013-05-11  Martin Robinson  <mrobinson@igalia.com>
+
         Move defines to platform
 
         [GTK] Move defines that will never be configured to Platform.h
diff --git a/Source/WTF/wtf/PlatformGTK.cmake b/Source/WTF/wtf/PlatformGTK.cmake
new file mode 100644 (file)
index 0000000..99c06be
--- /dev/null
@@ -0,0 +1,34 @@
+list(APPEND WTF_SOURCES
+    OSAllocatorPosix.cpp
+    OSAllocatorWin.cpp
+    ThreadIdentifierDataPthreads.cpp
+    ThreadingPthreads.cpp
+    ThreadingWin.cpp
+
+    gobject/GlibUtilities.cpp
+    gobject/GOwnPtr.cpp
+    gobject/GRefPtr.cpp
+
+    gtk/MainThreadGtk.cpp
+
+    unicode/icu/CollatorICU.cpp
+
+    win/OwnPtrWin.cpp
+)
+
+list(APPEND WTF_LIBRARIES
+    pthread
+    ${GLIB_LIBRARIES}
+    ${GLIB_GIO_LIBRARIES}
+    ${GLIB_GOBJECT_LIBRARIES}
+    ${ICU_LIBRARIES}
+    ${ICU_I18N_LIBRARIES}
+    ${CMAKE_DL_LIBS}
+)
+
+list(APPEND WTF_INCLUDE_DIRECTORIES
+    ${GLIB_INCLUDE_DIRS}
+    ${ICU_INCLUDE_DIRS}
+    ${JAVASCRIPTCORE_DIR}/wtf/gobject
+    ${JAVASCRIPTCORE_DIR}/wtf/unicode
+)
diff --git a/Source/cmake/FindGAIL3.cmake b/Source/cmake/FindGAIL3.cmake
new file mode 100644 (file)
index 0000000..9a2edd3
--- /dev/null
@@ -0,0 +1,48 @@
+# - Try to find GAIL 3.
+# Once done, this will define
+#
+#  GAIL3_FOUND - system has GAIL 3
+#  GAIL3_INCLUDE_DIRS - the GAIL 3 include directories
+#  GAIL3_LIBRARIES - link these to use GAIL 3
+#
+# Copyright (C) 2013 Igalia S.L.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+find_package(PkgConfig)
+pkg_check_modules(GAIL3 gail-3.0)
+
+set(VERSION_OK TRUE)
+if (GAIL3_VERSION)
+    if (GAIL3_FIND_VERSION_EXACT)
+        if (NOT("${GAIL3_FIND_VERSION}" VERSION_EQUAL "${GAIL3_VERSION}"))
+            set(VERSION_OK FALSE)
+        endif ()
+    else ()
+        if ("${GAIL3_VERSION}" VERSION_LESS "${GAIL3_FIND_VERSION}")
+            set(VERSION_OK FALSE)
+        endif ()
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GAIL3 DEFAULT_MSG GAIL3_INCLUDE_DIRS GAIL3_LIBRARIES VERSION_OK)
diff --git a/Source/cmake/FindGDK3.cmake b/Source/cmake/FindGDK3.cmake
new file mode 100644 (file)
index 0000000..8016563
--- /dev/null
@@ -0,0 +1,49 @@
+# - Try to find GDK 3
+# Once done, this will define
+#
+#  GDK3_FOUND - system has GDK 3
+#  GDK3_INCLUDE_DIRS - the GDK 3 include directories
+#  GDK3_LIBRARIES - link these to use GDK 3
+#
+# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
+# Copyright (C) 2013 Igalia S.L.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+find_package(PkgConfig)
+pkg_check_modules(GDK3 gdk-3.0)
+
+set(VERSION_OK TRUE)
+if (GDK3_VERSION)
+    if (GDK3_FIND_VERSION_EXACT)
+        if (NOT("${GDK3_FIND_VERSION}" VERSION_EQUAL "${GDK3_VERSION}"))
+            set(VERSION_OK FALSE)
+        endif ()
+    else ()
+        if ("${GDK3_VERSION}" VERSION_LESS "${GDK3_FIND_VERSION}")
+            set(VERSION_OK FALSE)
+        endif ()
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GDK3 DEFAULT_MSG GDK3_INCLUDE_DIRS GDK3_LIBRARIES VERSION_OK)
index 4908d32..c7ab953 100644 (file)
@@ -47,9 +47,6 @@
 
 find_package(PkgConfig)
 
-# The minimum GStreamer version we support.
-set(GSTREAMER_MINIMUM_VERSION 1.0.5)
-
 # Helper macro to find a GStreamer plugin (or GStreamer itself)
 #   _component_prefix is prepended to the _INCLUDE_DIRS and _LIBRARIES variables (eg. "GSTREAMER_AUDIO")
 #   _pkgconfig_name is the component's pkg-config name (eg. "gstreamer-1.0", or "gstreamer-video-1.0").
@@ -98,10 +95,16 @@ if (GSTREAMER_INCLUDE_DIRS)
 endif ()
 
 # FIXME: With CMake 2.8.3 we can just pass GSTREAMER_VERSION to FIND_PACKAGE_HANDLE_STANDARD_ARGS as VERSION_VAR
-#        and remove the version check here (GSTREAMER_MINIMUM_VERSION would be passed to FIND_PACKAGE).
+#        and remove the version check here (GSTREAMER_FIND_VERSION would be passed to FIND_PACKAGE).
 set(VERSION_OK TRUE)
-if ("${GSTREAMER_VERSION}" VERSION_LESS "${GSTREAMER_MINIMUM_VERSION}")
-    set(VERSION_OK FALSE)
+if (GSTREAMER_FIND_VERSION_EXACT)
+    if (NOT(("${GSTREAMER_FIND_VERSION}" VERSION_EQUAL "${GSTREAMER_VERSION}")))
+        set(VERSION_OK FALSE)
+    endif ()
+else ()
+    if ("${GSTREAMER_VERSION}" VERSION_LESS "${GSTREAMER_FIND_VERSION}")
+        set(VERSION_OK FALSE)
+    endif ()
 endif ()
 
 # -------------------------
diff --git a/Source/cmake/FindGTK3.cmake b/Source/cmake/FindGTK3.cmake
new file mode 100644 (file)
index 0000000..cfa5784
--- /dev/null
@@ -0,0 +1,49 @@
+# - Try to find GTK+ 3
+# Once done, this will define
+#
+#  GTK3_FOUND - system has GTK+ 3.
+#  GTK3_INCLUDE_DIRS - the GTK+ 3. include directories
+#  GTK3_LIBRARIES - link these to use GTK+ 3.
+#
+# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
+# Copyright (C) 2013 Igalia S.L.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+find_package(PkgConfig)
+pkg_check_modules(GTK3 gtk+-3.0)
+
+set(VERSION_OK TRUE)
+if (GTK3_VERSION)
+    if (GTK3_FIND_VERSION_EXACT)
+        if (NOT("${GTK3_FIND_VERSION}" VERSION_EQUAL "${GTK3_VERSION}"))
+            set(VERSION_OK FALSE)
+        endif ()
+    else ()
+        if ("${GTK3_VERSION}" VERSION_LESS "${GTK3_FIND_VERSION}")
+            set(VERSION_OK FALSE)
+        endif ()
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTK3 DEFAULT_MSG GTK3_INCLUDE_DIRS GTK3_LIBRARIES VERSION_OK)
diff --git a/Source/cmake/FindXt.cmake b/Source/cmake/FindXt.cmake
new file mode 100644 (file)
index 0000000..90c2797
--- /dev/null
@@ -0,0 +1,49 @@
+# - Try to find Xt
+# Once done, this will define
+#
+#  XT_FOUND - system has Xt.
+#  XT_INCLUDE_DIRS - the Xt. include directories
+#  XT_LIBRARIES - link these to use Xt.
+#
+# Copyright (C) 2012 Raphael Kubo da Costa <rakuco@webkit.org>
+# Copyright (C) 2013 Igalia S.L.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1.  Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+# 2.  Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
+# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+find_package(PkgConfig)
+pkg_check_modules(XT xt)
+
+set(VERSION_OK TRUE)
+if (XT_VERSION)
+    if (XT_FIND_VERSION_EXACT)
+        if (NOT("${XT_FIND_VERSION}" VERSION_EQUAL "${XT_VERSION}"))
+            set(VERSION_OK FALSE)
+        endif ()
+    else ()
+        if ("${XT_VERSION}" VERSION_LESS "${XT_FIND_VERSION}")
+            set(VERSION_OK FALSE)
+        endif ()
+    endif ()
+endif ()
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(XT_DEFAULT_MSG XT_INCLUDE_DIRS XT_LIBRARIES VERSION_OK)
index 020c579..e25d1cf 100644 (file)
@@ -178,7 +178,7 @@ if (ENABLE_VIDEO OR ENABLE_WEB_AUDIO)
         add_definitions(-DWTF_USE_WEBAUDIO_GSTREAMER=1)
     endif ()
 
-    find_package(GStreamer REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
+    find_package(GStreamer 1.0.5 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
 endif ()
 
 if (WTF_USE_TILED_BACKING_STORE)
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
new file mode 100644 (file)
index 0000000..a3603e7
--- /dev/null
@@ -0,0 +1,131 @@
+include(GNUInstallDirs)
+
+# FIXME: We want to expose fewer options to downstream, but for now everything is public.
+WEBKIT_OPTION_BEGIN()
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_3D_RENDERING ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_ACCESSIBILITY ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_API_TESTS OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_BATTERY_STATUS OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_BLOB ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS3_TEXT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_DEVICE_ADAPTATION ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_IMAGE_SET ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_REGIONS ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_STICKY_POSITION ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CSS_VARIABLES ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_CUSTOM_SCHEME_HANDLER ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DATALIST_ELEMENT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DOWNLOAD_ATTRIBUTE ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_DRAG_SUPPORT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FAST_MOBILE_SCROLLING ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FILTERS ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_FULLSCREEN_API ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_GAMEPAD OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INDEXED_DATABASE ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_INPUT_TYPE_COLOR ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LINK_PREFETCH ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_LLINT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEDIA_CAPTURE ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MEMORY_SAMPLER ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MHTML ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_MICRODATA ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NAVIGATOR_CONTENT_UTILS ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETSCAPE_PLUGIN_API ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_NETWORK_INFO ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_PAGE_VISIBILITY_API ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_RESOLUTION_MEDIA_QUERY OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_REQUEST_ANIMATION_FRAME ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SECCOMP_FILTERS OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHADOW_DOM ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SHARED_WORKERS ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_SPELLCHECK ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TEMPLATE_ELEMENT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_TOUCH_EVENTS OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_USERSELECT_ALL ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIBRATION OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIDEO_TRACK ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_VIEW_MODE_CSS_MEDIA ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_AUDIO OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEB_TIMING ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_WEBGL OFF)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(ENABLE_XHR_TIMEOUT ON)
+WEBKIT_OPTION_DEFAULT_PORT_VALUE(WTF_USE_TILED_BACKING_STORE OFF)
+
+# FIXME: Perhaps we need a more generic way of defining dependencies between features.
+# VIDEO_TRACK depends on VIDEO.
+if (NOT ENABLE_VIDEO AND ENABLE_VIDEO_TRACK)
+    message(STATUS "Disabling VIDEO_TRACK since VIDEO support is disabled.")
+    set(ENABLE_VIDEO_TRACK OFF)
+endif ()
+WEBKIT_OPTION_END()
+
+set(PROJECT_VERSION_MAJOR 0)
+set(PROJECT_VERSION_MINOR 1)
+set(PROJECT_VERSION_PATCH 0)
+set(PROJECT_VERSION ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH})
+
+set(WEBKIT_MICRO_VERSION ${PROJECT_VERSION_PATCH})
+set(WEBKIT_MINOR_VERSION ${PROJECT_VERSION_MINOR})
+set(WEBKIT_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
+
+set(ENABLE_WEBKIT OFF)
+set(ENABLE_WEBKIT2 OFF)
+set(ENABLE_WEBCORE OFF)
+set(ENABLE_INSPECTOR OFF)
+set(ENABLE_PLUGIN_PROCESS OFF)
+
+set(WTF_USE_SOUP 1)
+set(JSC_EXECUTABLE_NAME jsc)
+set(WTF_LIBRARY_NAME WTFGTK)
+set(JavaScriptCore_LIBRARY_NAME javascriptcoregtk)
+set(WebCore_LIBRARY_NAME WebCoreGTK)
+set(WebKit_LIBRARY_NAME webkitgtk-3.0)
+set(WebKit2_LIBRARY_NAME webkit2gtk-3.0)
+set(DATA_INSTALL_DIR "share/${WebKit_LIBRARY_NAME}" CACHE PATH "Shared data path")
+set(VERSION_SCRIPT "-Wl,--version-script,${CMAKE_MODULE_PATH}/gtksymbols.filter")
+
+find_package(Cairo 1.10.2 REQUIRED)
+find_package(Fontconfig 2.8.0 REQUIRED)
+find_package(Freetype 2.4.2 REQUIRED)
+find_package(GLIB 2.33.2 REQUIRED COMPONENTS gio gobject gthread gmodule)
+find_package(GTK3 3.6.0 REQUIRED)
+find_package(GDK3 3.6.0 REQUIRED)
+find_package(GAIL3 3.0 REQUIRED)
+find_package(HarfBuzz 0.9.2 REQUIRED)
+find_package(ICU REQUIRED)
+find_package(JPEG REQUIRED)
+find_package(LibSoup 2.40.3 REQUIRED)
+find_package(LibXml2 2.8.0 REQUIRED)
+find_package(LibXslt 1.1.7 REQUIRED)
+find_package(PNG REQUIRED)
+find_package(Sqlite REQUIRED)
+find_package(Threads REQUIRED)
+find_package(ZLIB REQUIRED)
+find_package(Xt REQUIRED)
+find_package(ATK REQUIRED)
+find_package(GStreamer 1.0.3 REQUIRED COMPONENTS ${GSTREAMER_COMPONENTS})
+
+if (ENABLE_SPELLCHECK)
+    find_package(Enchant REQUIRED)
+endif ()
+
+add_definitions(-DBUILDING_GTK__=1)
+add_definitions(-DGETTEXT_PACKAGE="WebKitGTK-3.0")
+add_definitions(-DDATA_DIR="${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}")
+add_definitions(-DWEBKITGTK_API_VERSION_STRING="3.0")
+add_definitions(-DUSER_AGENT_GTK_MAJOR_VERSION=537)
+add_definitions(-DUSER_AGENT_GTK_MINOR_VERSION=30)
+
+# FIXME: These need to be configurable.
+add_definitions(-DWTF_PLATFORM_X11=1)
+add_definitions(-DMOZ_X11)
+
+# Optimize binary size for release builds by removing dead sections on unix/gcc
+if (CMAKE_COMPILER_IS_GNUCC AND UNIX AND NOT APPLE)
+    set(CMAKE_C_FLAGS_RELEASE "-ffunction-sections -fdata-sections ${CMAKE_C_FLAGS_RELEASE}")
+    set(CMAKE_CXX_FLAGS_RELEASE "-ffunction-sections -fdata-sections ${CMAKE_CXX_FLAGS_RELEASE}")
+    set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "-Wl,--gc-sections ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
+endif ()
+
+set(CPACK_SOURCE_GENERATOR TBZ2)