diff -urpN webkitgtk-2.28.0.orig/CMakeLists.txt webkitgtk-2.28.0.cmake/CMakeLists.txt
--- webkitgtk-2.28.0.orig/CMakeLists.txt	2020-02-04 04:23:40.000000000 -0600
+++ webkitgtk-2.28.0.cmake/CMakeLists.txt	2020-03-19 15:44:50.038776382 -0500
@@ -2,13 +2,13 @@
 # Determine CMake version and build type.
 # -----------------------------------------------------------------------------
 #
-# NOTE: cmake_minimum_required() and project() *MUST* be the two first commands
+# NOTE: cmake_minimum_required() and project() *MUST* be the two fist commands
 # used, see https://cmake.org/cmake/help/v3.3/command/project.html -- the
 # latter in particular handles loading a bunch of shared CMake definitions
 # and loading the cross-compilation settings from CMAKE_TOOLCHAIN_FILE.
 #
 
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 3.3)
 
 project(WebKit)
 
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/FindICU.cmake webkitgtk-2.28.0.cmake/Source/cmake/FindICU.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/FindICU.cmake	1969-12-31 18:00:00.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/cmake/FindICU.cmake	2020-03-19 15:44:50.042776404 -0500
@@ -0,0 +1,110 @@
+# Finds the International Components for Unicode (ICU) Library
+#
+#  ICU_FOUND          - True if ICU found.
+#  ICU_I18N_FOUND     - True if ICU's internationalization library found.
+#  ICU_INCLUDE_DIRS   - Directory to include to get ICU headers
+#                       Note: always include ICU headers as, e.g.,
+#                       unicode/utypes.h
+#  ICU_LIBRARIES      - Libraries to link against for the common ICU
+#  ICU_I18N_LIBRARIES - Libraries to link against for ICU internationaliation
+#                       (note: in addition to ICU_LIBRARIES)
+
+find_package(PkgConfig)
+pkg_check_modules(PC_ICU icu-uc)
+
+# Look for the header file.
+find_path(
+    ICU_INCLUDE_DIR
+    NAMES unicode/utypes.h
+    HINTS ${PC_ICU_INCLUDE_DIRS}
+          ${PC_ICU_INCLUDEDIR}
+          ${WEBKIT_LIBRARIES_INCLUDE_DIR}
+    DOC "Include directory for the ICU library")
+mark_as_advanced(ICU_INCLUDE_DIR)
+
+# Look for the library.
+find_library(
+    ICU_LIBRARY
+    NAMES libicuuc cygicuuc cygicuuc32 icuuc
+    HINTS ${PC_ICU_LIBRARY_DIRS}
+          ${PC_ICU_LIBDIR}
+          ${WEBKIT_LIBRARIES_LINK_DIR}
+    DOC "Libraries to link against for the common parts of ICU")
+mark_as_advanced(ICU_LIBRARY)
+
+# Copy the results to the output variables.
+if (ICU_INCLUDE_DIR AND ICU_LIBRARY)
+    set(ICU_FOUND 1)
+    set(ICU_LIBRARIES ${ICU_LIBRARY})
+    set(ICU_INCLUDE_DIRS ${ICU_INCLUDE_DIR})
+
+    set(ICU_VERSION 0)
+    set(ICU_MAJOR_VERSION 0)
+    set(ICU_MINOR_VERSION 0)
+    file(READ "${ICU_INCLUDE_DIR}/unicode/uversion.h" _ICU_VERSION_CONENTS)
+    string(REGEX REPLACE ".*#define U_ICU_VERSION_MAJOR_NUM ([0-9]+).*" "\\1" ICU_MAJOR_VERSION "${_ICU_VERSION_CONENTS}")
+    string(REGEX REPLACE ".*#define U_ICU_VERSION_MINOR_NUM ([0-9]+).*" "\\1" ICU_MINOR_VERSION "${_ICU_VERSION_CONENTS}")
+
+    set(ICU_VERSION "${ICU_MAJOR_VERSION}.${ICU_MINOR_VERSION}")
+
+    # Look for the ICU internationalization libraries
+    pkg_check_modules(PC_ICU_I18N icu-i18n)
+    find_library(
+        ICU_I18N_LIBRARY
+        NAMES icui18n libicui18n libicuin cygicuin cygicuin32 icuin
+        HINTS ${PC_ICU_I18N_LIBRARY_DIRS}
+              ${PC_ICU_I18N_LIBDIR}
+              ${WEBKIT_LIBRARIES_LINK_DIR}
+        DOC "Libraries to link against for ICU internationalization")
+    mark_as_advanced(ICU_I18N_LIBRARY)
+    if (ICU_I18N_LIBRARY)
+        set(ICU_I18N_FOUND 1)
+        set(ICU_I18N_LIBRARIES ${ICU_I18N_LIBRARY})
+    else ()
+        set(ICU_I18N_FOUND 0)
+        set(ICU_I18N_LIBRARIES)
+    endif ()
+
+    # Look for the ICU data libraries
+    find_library(
+        ICU_DATA_LIBRARY
+        NAMES icudata libicudata cygicudata cygicudata32
+        HINTS ${PC_ICU_I18N_LIBRARY_DIRS}
+              ${PC_ICU_I18N_LIBDIR}
+              ${WEBKIT_LIBRARIES_LINK_DIR}
+        DOC "Libraries to link against for ICU data")
+    mark_as_advanced(ICU_DATA_LIBRARY)
+    if (ICU_DATA_LIBRARY)
+        set(ICU_DATA_FOUND 1)
+        set(ICU_DATA_LIBRARIES ${ICU_DATA_LIBRARY})
+    else ()
+        set(ICU_DATA_FOUND 0)
+        set(ICU_DATA_LIBRARIES)
+    endif ()
+else ()
+    set(ICU_FOUND 0)
+    set(ICU_I18N_FOUND 0)
+    set(ICU_DATA_FOUND 0)
+    set(ICU_LIBRARIES)
+    set(ICU_I18N_LIBRARIES)
+    set(ICU_DATA_LIBRARIES)
+    set(ICU_INCLUDE_DIRS)
+    set(ICU_VERSION)
+    set(ICU_MAJOR_VERSION)
+    set(ICU_MINOR_VERSION)
+endif ()
+
+if (ICU_FOUND)
+    if (NOT ICU_FIND_QUIETLY)
+        message(STATUS "Found ICU header files in ${ICU_INCLUDE_DIRS}")
+        message(STATUS "Found ICU libraries: ${ICU_LIBRARIES}")
+        message(STATUS "Found ICU internationaliation libraries: ${ICU_I18N_LIBRARIES}")
+        message(STATUS "Found ICU data libraries: ${ICU_DATA_LIBRARIES}")
+    endif ()
+else ()
+    if (ICU_FIND_REQUIRED)
+        message(FATAL_ERROR "Could not find ICU")
+    else ()
+        message(STATUS "Optional package ICU was not found")
+    endif ()
+endif ()
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/OptionsCommon.cmake webkitgtk-2.28.0.cmake/Source/cmake/OptionsCommon.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/OptionsCommon.cmake	2020-02-04 04:24:08.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/cmake/OptionsCommon.cmake	2020-03-19 15:44:50.042776404 -0500
@@ -1,7 +1,3 @@
-set(CMAKE_CXX_STANDARD 17)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
-set(CMAKE_CXX_EXTENSIONS OFF)
-
 add_definitions(-DBUILDING_WITH_CMAKE=1)
 add_definitions(-DHAVE_CONFIG_H=1)
 
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/OptionsGTK.cmake webkitgtk-2.28.0.cmake/Source/cmake/OptionsGTK.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/OptionsGTK.cmake	2020-03-10 03:31:09.000000000 -0500
+++ webkitgtk-2.28.0.cmake/Source/cmake/OptionsGTK.cmake	2020-03-23 14:27:09.176026963 -0500
@@ -25,7 +25,7 @@ find_package(GLIB 2.44.0 REQUIRED COMPON
 find_package(GTK3 3.22.0 REQUIRED)
 find_package(GDK3 3.22.0 REQUIRED)
 find_package(HarfBuzz 0.9.18 REQUIRED COMPONENTS ICU)
-find_package(ICU REQUIRED COMPONENTS data i18n uc)
+find_package(ICU REQUIRED)
 find_package(JPEG REQUIRED)
 find_package(LibSoup 2.54.0 REQUIRED)
 find_package(LibXml2 2.8.0 REQUIRED)
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/OptionsJSCOnly.cmake webkitgtk-2.28.0.cmake/Source/cmake/OptionsJSCOnly.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/OptionsJSCOnly.cmake	2020-02-04 04:24:08.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/cmake/OptionsJSCOnly.cmake	2020-03-19 15:44:50.046776424 -0500
@@ -96,8 +96,9 @@ else ()
 endif ()
 
 if (NOT APPLE)
-    find_package(ICU REQUIRED COMPONENTS data i18n uc)
+    find_package(ICU REQUIRED)
 else ()
     add_definitions(-DU_DISABLE_RENAMING=1 -DU_SHOW_CPLUSPLUS_API=0)
-    include(target/icu)
+    set(ICU_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/ICU/Headers)
+    set(ICU_LIBRARIES libicucore.dylib)
 endif ()
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/OptionsWin.cmake webkitgtk-2.28.0.cmake/Source/cmake/OptionsWin.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/OptionsWin.cmake	2020-02-04 04:24:08.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/cmake/OptionsWin.cmake	2020-03-19 15:44:50.046776424 -0500
@@ -164,6 +164,8 @@ set(WTF_LIBRARY_TYPE SHARED)
 set(PAL_LIBRARY_TYPE STATIC)
 set(WebKitLegacy_LIBRARY_TYPE SHARED)
 
+find_package(ICU REQUIRED)
+
 # If <winsock2.h> is not included before <windows.h> redefinition errors occur
 # unless _WINSOCKAPI_ is defined before <windows.h> is included
 add_definitions(-D_WINSOCKAPI_=)
diff -urpN webkitgtk-2.28.0.orig/Source/cmake/WebKitCompilerFlags.cmake webkitgtk-2.28.0.cmake/Source/cmake/WebKitCompilerFlags.cmake
--- webkitgtk-2.28.0.orig/Source/cmake/WebKitCompilerFlags.cmake	2020-02-25 07:02:33.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/cmake/WebKitCompilerFlags.cmake	2020-03-19 15:44:50.046776424 -0500
@@ -104,6 +104,13 @@ if (COMPILER_IS_GCC_OR_CLANG)
         WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(-fno-exceptions)
         WEBKIT_APPEND_GLOBAL_CXX_FLAGS(-fno-rtti)
 
+        check_cxx_compiler_flag("-std=c++17" CXX_COMPILER_SUPPORTS_CXX17)
+        if (CXX_COMPILER_SUPPORTS_CXX17)
+            WEBKIT_APPEND_GLOBAL_CXX_FLAGS(-std=c++17)
+        else ()
+            message(FATAL_ERROR "Compiler with C++17 support is required")
+        endif ()
+
         if (WIN32)
             WEBKIT_APPEND_GLOBAL_COMPILER_FLAGS(-mno-ms-bitfields)
             WEBKIT_PREPEND_GLOBAL_COMPILER_FLAGS(-Wno-unknown-pragmas)
diff -urpN webkitgtk-2.28.0.orig/Source/JavaScriptCore/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/JavaScriptCore/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/JavaScriptCore/CMakeLists.txt	2020-02-04 04:23:58.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/JavaScriptCore/CMakeLists.txt	2020-03-19 15:44:50.050776446 -0500
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 2.8.12)
 include(WebKitCommon)
 include(target/TargetWTF)
 set_property(DIRECTORY . PROPERTY FOLDER "JavaScriptCore")
@@ -54,6 +54,10 @@ if (USE_CAPSTONE)
     list(APPEND JavaScriptCore_PRIVATE_INCLUDE_DIRECTORIES "${THIRDPARTY_DIR}/capstone/Source/include")
 endif ()
 
+set(JavaScriptCore_SYSTEM_INCLUDE_DIRECTORIES
+    "${ICU_INCLUDE_DIRS}"
+)
+
 set(JavaScriptCore_OBJECT_LUT_SOURCES
     runtime/ArrayConstructor.cpp
     runtime/AsyncFromSyncIteratorPrototype.cpp
@@ -222,11 +226,7 @@ add_custom_command(
     VERBATIM)
 
 
-if (WTF_OS_MAC_OS_X)
     execute_process(COMMAND bash -c "date +'%s'" OUTPUT_VARIABLE BUILD_TIME OUTPUT_STRIP_TRAILING_WHITESPACE)
-else ()
-    string(TIMESTAMP BUILD_TIME "%s")
-endif ()
 
 list(APPEND JavaScriptCore_HEADERS
     ${JavaScriptCore_DERIVED_SOURCES_DIR}/BytecodeStructs.h
diff -urpN webkitgtk-2.28.0.orig/Source/ThirdParty/ANGLE/include/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/ThirdParty/ANGLE/include/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/ThirdParty/ANGLE/include/CMakeLists.txt	2020-02-04 04:24:05.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/ThirdParty/ANGLE/include/CMakeLists.txt	2020-03-20 16:05:39.703431614 -0500
@@ -1,19 +1,39 @@
 string(REGEX REPLACE "(^|;)include/" "\\1" includes "${libangle_includes}")
 
-set(egl_headers ${includes})
-list(FILTER egl_headers INCLUDE REGEX "EGL/.*")
+set(egl_headers
+    EGL/egl.h
+    EGL/eglext.h
+    EGL/eglext_angle.h
+    EGL/eglplatform.h
+)
+
+set(gles_headers
+    GLES/egl.h
+    GLES/gl.h
+    GLES/glext.h
+    GLES/glext_explicit_context_autogen.inc
+    GLES/glext_angle.h
+    GLES/glplatform.h
+)
+
+set(gles2_headers
+    GLES2/gl2.h
+    GLES2/gl2ext.h
+    GLES2/gl2ext_explicit_context_autogen.inc
+    GLES2/gl2ext_angle.h
+    GLES2/gl2platform.h
+)
+
+set(gles3_headers
+    GLES3/gl3.h
+    GLES3/gl3ext_explicit_context_autogen.inc
+    GLES3/gl31.h
+    GLES3/gl31ext_explicit_context_autogen.inc
+    GLES3/gl32.h
+    GLES3/gl3platform.h
+)
 
-set(gles_headers ${includes})
-list(FILTER gles_headers INCLUDE REGEX "GLES/.*")
-
-set(gles2_headers ${includes})
-list(FILTER gles2_headers INCLUDE REGEX "GLES2/.*")
-
-set(gles3_headers ${includes})
-list(FILTER gles3_headers INCLUDE REGEX "GLES3/.*")
-
-set(khr_headers ${includes})
-list(FILTER khr_headers INCLUDE REGEX "KHR/.*")
+set(khr_headers KHR/khrplatform.h)
 
 set(glslang_headers
     GLSLANG/ShaderLang.h
diff -urpN webkitgtk-2.28.0.orig/Source/WebCore/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/WebCore/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/WebCore/CMakeLists.txt	2020-02-04 04:24:07.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WebCore/CMakeLists.txt	2020-03-20 15:38:13.886631507 -0500
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 2.8.12)
 
 include(WebKitCommon)
 include(target/TargetWTF)
@@ -173,6 +173,7 @@ set(WebCore_PRIVATE_INCLUDE_DIRECTORIES
 )
 
 set(WebCore_SYSTEM_INCLUDE_DIRECTORIES
+    ${ICU_INCLUDE_DIRS}
     ${LIBXML2_INCLUDE_DIR}
     ${LIBXSLT_INCLUDE_DIR}
     ${ZLIB_INCLUDE_DIRS}
@@ -1220,7 +1221,8 @@ set(WebCore_PLUG_INS_RESOURCES
 )
 
 set(WebCore_LIBRARIES
-    SQLite::SQLite3
+    ${ICU_LIBRARIES}
+    ${SQLite3_LIBRARIES}
     ${LIBXML2_LIBRARIES}
     ${LIBXSLT_LIBRARIES}
     ${ZLIB_LIBRARIES}
diff -urpN webkitgtk-2.28.0.orig/Source/WebCore/PAL/pal/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/WebCore/PAL/pal/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/WebCore/PAL/pal/CMakeLists.txt	2020-02-04 04:24:07.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WebCore/PAL/pal/CMakeLists.txt	2020-03-19 15:44:50.054776467 -0500
@@ -38,6 +38,10 @@ set(PAL_PRIVATE_INCLUDE_DIRECTORIES
     "${PAL_DIR}/pal/text"
 )
 
+set(PAL_SYSTEM_INCLUDE_DIRECTORIES
+    ${ICU_INCLUDE_DIRS}
+)
+
 set(PAL_LIBRARIES
     WebKit::JavaScriptCore
 )
diff -urpN webkitgtk-2.28.0.orig/Source/WebCore/platform/FreeType.cmake webkitgtk-2.28.0.cmake/Source/WebCore/platform/FreeType.cmake
--- webkitgtk-2.28.0.orig/Source/WebCore/platform/FreeType.cmake	2020-02-04 04:24:07.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WebCore/platform/FreeType.cmake	2020-03-20 15:52:06.347082668 -0500
@@ -34,8 +34,7 @@ list(APPEND WebCore_SYSTEM_INCLUDE_DIREC
 )
 
 list(APPEND WebCore_LIBRARIES
-    HarfBuzz::HarfBuzz
-    HarfBuzz::ICU
     ${FONTCONFIG_LIBRARIES}
     ${FREETYPE_LIBRARIES}
+    ${HarfBuzz_LIBRARIES}
 )
diff -urpN webkitgtk-2.28.0.orig/Source/WebKit/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/WebKit/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/WebKit/CMakeLists.txt	2020-02-04 04:24:08.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WebKit/CMakeLists.txt	2020-03-19 15:44:50.054776467 -0500
@@ -109,6 +109,10 @@ set(WebKit_INCLUDE_DIRECTORIES
 
 set(PROTOCOL_GENERATOR_SCRIPTS_DIR "${JAVASCRIPTCORE_DIR}/inspector/scripts")
 
+set(WebKit_SYSTEM_INCLUDE_DIRECTORIES
+    ${ICU_INCLUDE_DIRS}
+)
+
 list(APPEND WebKit_UNIFIED_SOURCE_LIST_FILES
     "Sources.txt"
 )
diff -urpN webkitgtk-2.28.0.orig/Source/WTF/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/WTF/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/WTF/CMakeLists.txt	2020-02-04 04:24:07.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WTF/CMakeLists.txt	2020-03-19 15:44:50.054776467 -0500
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.10)
+cmake_minimum_required(VERSION 2.8.12)
 include(WebKitCommon)
 set_property(DIRECTORY . PROPERTY FOLDER "WTF")
 
diff -urpN webkitgtk-2.28.0.orig/Source/WTF/wtf/CMakeLists.txt webkitgtk-2.28.0.cmake/Source/WTF/wtf/CMakeLists.txt
--- webkitgtk-2.28.0.orig/Source/WTF/wtf/CMakeLists.txt	2020-02-04 04:24:07.000000000 -0600
+++ webkitgtk-2.28.0.cmake/Source/WTF/wtf/CMakeLists.txt	2020-03-19 15:44:50.054776467 -0500
@@ -517,10 +517,13 @@ if (NOT USE_SYSTEM_MALLOC)
     list(APPEND WTF_LIBRARIES WebKit::bmalloc)
 endif ()
 
+set(WTF_SYSTEM_INCLUDE_DIRECTORIES
+    ${ICU_INCLUDE_DIRS}
+)
 list(APPEND WTF_LIBRARIES
-    ICU::data
-    ICU::i18n
-    ICU::uc
+    ${ICU_DATA_LIBRARIES}
+    ${ICU_I18N_LIBRARIES}
+    ${ICU_LIBRARIES}
 )
 
 set(WTF_INTERFACE_LIBRARIES WTF)
