2019-02-24  Devin Rousso  <drousso@apple.com>

        Web Inspector: Change the InspectorOverlay to use native rather than canvas
        https://bugs.webkit.org/show_bug.cgi?id=105023
        <rdar://problem/13443692>

        Reviewed by Brian Burg.

        * ManualTests/inspector/overlay-nodes.html: Added.
        * ManualTests/inspector/overlay-rulers.html: Added.

2019-02-22  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Bump version numbers

        * Source/cmake/OptionsWPE.cmake:

2019-02-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump version numbers

        * Source/cmake/OptionsGTK.cmake:

2019-02-21  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Do not hardcode WPEBackend-fdo library name for linking tests
        https://bugs.webkit.org/show_bug.cgi?id=194901

        Unreviewed build fix.

        * Source/cmake/FindWPEBackend-fdo.cmake: Use WPEBACKEND_FDO as prefix
        for the output variables instead of WPEBackend-fdo, for consistency
        with other usages of of find_package_handle_standard_args().

2019-02-11  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Add content extensions support in WKTR and unskip layout tests
        https://bugs.webkit.org/show_bug.cgi?id=193622

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Enable CONTENT_EXTENSIONS by default.
        * Source/cmake/OptionsWPE.cmake: Ditto.
        * Source/cmake/WebKitFeatures.cmake: Add a private CONTENT_EXTENSIONS option.

2019-02-07  Miguel Gomez  <magomez@igalia.com>

        [WPE] Implement GStreamer based holepunch
        https://bugs.webkit.org/show_bug.cgi?id=193715

        Reviewed by Xabier Rodriguez-Calvar.

        Add GSTREAMER_HOLEPUNCH option to the WPE port with a manual test to
        check the feature.

        * ManualTests/wpe/video-player-holepunch.html: Added.
        * Source/cmake/OptionsWPE.cmake:

2019-02-01  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Enable font variations
        https://bugs.webkit.org/show_bug.cgi?id=194148

        Reviewed by Žan Doberšek.

        Enable variation fonts when required dependencies are available.

        * Source/cmake/OptionsWPE.cmake:

2019-01-24  Guillaume Emont  <guijemont@igalia.com>

        [JSC] Reenable baseline JIT on mips
        https://bugs.webkit.org/show_bug.cgi?id=192983

        Reviewed by Mark Lam.

        Use baseline JIT by default on MIPS.

        * Source/cmake/WebKitFeatures.cmake:

2019-01-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Support JPEG 2000 images
        https://bugs.webkit.org/show_bug.cgi?id=186272

        Reviewed by Žan Doberšek.

        Add USE_OPENJPEG build option.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2019-01-18  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Makefile.shared:

2019-01-18  Philippe Normand  <pnormand@igalia.com>

        [WPE] Add Qt extension
        https://bugs.webkit.org/show_bug.cgi?id=191464

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsWPE.cmake: Add ENABLE_WPE_QT_API CMake option. Disabled by default.

2019-01-17  Truitt Savell  <tsavell@apple.com>

        Unreviewed, rolling out r240124.

        This commit broke an internal build.

        Reverted changeset:

        "SDK_VARIANT build destinations should be separate from non-
        SDK_VARIANT builds"
        https://bugs.webkit.org/show_bug.cgi?id=189553
        https://trac.webkit.org/changeset/240124

2019-01-17  Jer Noble  <jer.noble@apple.com>

        SDK_VARIANT build destinations should be separate from non-SDK_VARIANT builds
        https://bugs.webkit.org/show_bug.cgi?id=189553

        Reviewed by Tim Horton.

        * Makefile.shared:

2019-01-17  Per Arne Vollan  <pvollan@apple.com>

        [Win] gperf command not found
        https://bugs.webkit.org/show_bug.cgi?id=193538
        <rdar://problem/47250549>

        Reviewed by Brent Fulgham.

        CMake only searches for gperf if ENABLE_WEBCORE is on. ENABLE_WEBCORE needs to be set to ON.

        * Source/cmake/OptionsAppleWin.cmake:

2019-01-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.3 release

        * Source/cmake/OptionsGTK.cmake: Bump version numbers

2019-01-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.2 release

        * Source/cmake/OptionsGTK.cmake: Bump version numbers

2019-01-07  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add ENABLE_CSS_TYPED_OM option
        https://bugs.webkit.org/show_bug.cgi?id=193216

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

2018-12-30  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        gperf is only used in WebCore
        https://bugs.webkit.org/show_bug.cgi?id=193061

        Reviewed by Don Olmstead.

        gperf is only used in WebCore. So if the port does not have WebCore,
        it is not necessary. For example, JSCOnly port does not require it.
        This patch removes gperf dependency in these ports by checking
        ENABLE_WEBCORE.

        * Source/cmake/WebKitCommon.cmake:

2018-12-28  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        Add ENABLE_UNIFIED_BUILDS option to cmake ports
        https://bugs.webkit.org/show_bug.cgi?id=193045

        Reviewed by Don Olmstead.

        This patch adds ENABLE_UNIFIED_BUILDS option to cmake ports, which allows us to disable Unified Builds in WebKit.
        This makes `compile_commands.json` sane when the unified builds is disabled, and various tools can use this
        compilation database. For example, YouCompleteMe completion server can use it.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/WebKitMacros.cmake:

2018-12-27  Alex Christensen  <achristensen@webkit.org>

        Resurrect Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=192658

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsMac.cmake:

2018-12-19  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Cannot build with CMake <3.7
        https://bugs.webkit.org/show_bug.cgi?id=192865

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake: Convert usage of VERSION_GREATER_EQUAL to a
        combination of VERSION_GREATER + STREQUAL.

2018-12-19  Lucas Stach  <l.stach@pengutronix.de>

        Fix build on 64bit ARM with arm64 SYSTEM_PROCESSOR
        https://bugs.webkit.org/show_bug.cgi?id=192497

        Reviewed by Philippe Normand.

        Android and some embedded Linux build systems use arm64 instead of
        aarch64 as the CMAKE_HOST_PROCESSOR. Fix the JIT build for this scenario.

        * CMakeLists.txt:

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Add initial implementation of variation fonts
        https://bugs.webkit.org/show_bug.cgi?id=192151

        Reviewed by Michael Catanzaro.

        Enable variation fonts in GTK+ port when required dependencies are available.

        * Source/cmake/OptionsGTK.cmake:

2018-12-12  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed manual rollout of r239100-r239102 and r239116
        https://bugs.webkit.org/show_bug.cgi?id=192151
        <rdar://problem/46655586>

        * Source/cmake/OptionsGTK.cmake:

2018-12-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        [FreeType] Add initial implementation of variation fonts
        https://bugs.webkit.org/show_bug.cgi?id=192151

        Reviewed by Michael Catanzaro.

        Enable variation fonts in GTK+ port when required dependencies are available.

        * Source/cmake/OptionsGTK.cmake:

2018-12-10  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add ENABLE_RESOURCE_LOAD_STATISTICS to WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=192574

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

2018-12-10  Ross Kirsling  <ross.kirsling@sony.com>

        Add test262-results directory to .gitignore.
        https://bugs.webkit.org/show_bug.cgi?id=192547

        Reviewed by Dean Jackson.

        * .gitignore:

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [GStreamer] -DENABLE_VIDEO=ON -DENABLE_OPENGL=OFF still tries to build GstreamerGL
        https://bugs.webkit.org/show_bug.cgi?id=191998

        Reviewed by Philippe Normand.

        Fix compilation with -DENABLE_VIDEO=ON and -DENABLE_OPENGL=OFF due to GStreamerGL.

        * Source/cmake/GStreamerDependencies.cmake: "DEFINED ENABLE_OPENGL" is always false because ENABLE_OPENGL
        is not a CMake variable (WEBKIT_OPTION_DEFINE macro does not define ENABLE_OPENGL variable per se, but other
        variables and appends it to a list).
        * Source/cmake/OptionsGTK.cmake: GStreamerDefinitions.cmake was included twice by mistake. Second should be GStreamerDependencies.cmake.

2018-12-06  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        REGRESSION(r231043): [GTK] Undefined references to WebCore::LayerRepresentation::* with -DENABLE_OPENGL=OFF builds
        https://bugs.webkit.org/show_bug.cgi?id=191997

        Reviewed by Philippe Normand.

        Fix build with -DENABLE_OPENGL=OFF and -DENABLE_VIDEO=OFF

        * Source/cmake/OptionsGTK.cmake: make ENABLE_ASYNC_SCROLLING depend on ENABLE_OPENGL

2018-12-05  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Enable WebCore
        https://bugs.webkit.org/show_bug.cgi?id=192384

        Reviewed by Brent Fulgham.

        Adds CMake options for building WebCore on PlayStation.

        * Source/cmake/FindLibPSL.cmake:
        * Source/cmake/FindNghttp2.cmake: Copied from Source/cmake/FindWPE.cmake.
        * Source/cmake/FindPixman.cmake: Added.
        * Source/cmake/FindWPE.cmake:
        * Source/cmake/OptionsPlayStation.cmake:

2018-12-04  Carlos Eduardo Ramalho  <cadubentzen@gmail.com>

        [WPE] Add gtk-doc
        https://bugs.webkit.org/show_bug.cgi?id=178900

        Reviewed by Michael Catanzaro.

        Add gtk-doc to WPE port. This patch tries to reuse as much code from
        WebKitGTK+ as possible.

        * Source/PlatformGTK.cmake: include GtkDoc.cmake instead of defining macro.
        * Source/PlatformWPE.cmake: Added documentation generation.
        * Source/cmake/GtkDoc.cmake: Added.
        * Source/cmake/OptionsWPE.cmake: Added ENABLE_GTKDOC build option and added pkg-config path variables.

2018-12-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Sync feature defines
        https://bugs.webkit.org/show_bug.cgi?id=191167

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

2018-12-01  Don Olmstead  <don.olmstead@sony.com>

        Cleanup WebKit Features
        https://bugs.webkit.org/show_bug.cgi?id=192262

        Reviewed by Michael Catanzaro.

        Removes unused ENABLE flags from the listing in WebKitFeatures.cmake
        and any other associated code. Synced the options in FeatureList.pm to
        the feature listing. Sorts the ENABLE flags.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2018-11-30  Don Olmstead  <don.olmstead@sony.com>

        Rename ENABLE_SUBTLE_CRYPTO to ENABLE_WEB_CRYPTO
        https://bugs.webkit.org/show_bug.cgi?id=192197

        Reviewed by Jiewen Tan.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-11-28  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Automatically disable JIT and enable USE_SYSTEM_MALLOC on unfamiliar architectures
        https://bugs.webkit.org/show_bug.cgi?id=186722

        Reviewed by Žan Doberšek.

        Time for part #2! This change was defeated for GTK and WPE by the code that makes the
        options public. We have three options: (a) duplicate the architecture check currently in
        WebKitFeatures.cmake in both OptionsGTK.cmake and OptionsWPE.cmake, (b) rely on the result
        of that check in OptionsGTK.cmake and OptionsWPE.cmake by using ENABLE_JIT_DEFAULT and
        USE_SYSTEM_MALLOC_DEFAULT, a fragile encapsulation violation, or (c) just make the options
        private. They have been public up until now because they needed to be turned off on
        unsupported architectures. But now they are off by default and enabled only for particular
        whitelisted architectures, so they shouldn't be needed anymore.

        Note we have to hide ENABLE_SAMPLING_PROFILER as well, since it needs to match the value of
        ENABLE_JIT. Again, this is handled properly in WebKitFeatures.cmake, and defeated here in
        OptionsGTK.cmake. (This is not a problem for WPE.)

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-11-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Remove ENABLE_ACCESSIBILITY CMake variable
        https://bugs.webkit.org/show_bug.cgi?id=191831

        Reviewed by Michael Catanzaro.

        ENABLE_ACCESSIBILITY is a bit confusing name because there is no
        such ENABLE_ACCESSIBILITY macros in C++ source files.

        * Source/cmake/OptionsGTK.cmake: Removed ENABLE_ACCESSIBILITY.
        * Source/cmake/OptionsWPE.cmake: Ditto.
        * Source/cmake/OptionsWin.cmake: Ditto.
        * Source/cmake/WebKitFeatures.cmake: Ditto.

2018-11-26  Alberto Garcia  <berto@igalia.com>

        [GTK] [2.22.0] Fails to build in armel
        https://bugs.webkit.org/show_bug.cgi?id=188862

        Disable the JIT and enable C_LOOP on ARM CPUs without Thumb2
        support.

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake:

2018-11-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-11-21  Dominik Infuehr  <dinfuehr@igalia.com>

        Enable JIT on ARM/Linux
        https://bugs.webkit.org/show_bug.cgi?id=191548

        Reviewed by Yusuke Suzuki.

        Enable JIT by default on ARMv7/Linux after it was disabled with
        recent bytcode format change.

        * Source/cmake/WebKitFeatures.cmake:

2018-11-16  Don Olmstead  <don.olmstead@sony.com>

        Add USE(LIBWPE) to WebCore
        https://bugs.webkit.org/show_bug.cgi?id=191401

        Reviewed by Michael Catanzaro.

        Exposes USE_LIBWPE to the build.

        * Source/cmake/OptionsWPE.cmake:

2018-11-12  Ryosuke Niwa  <rniwa@webkit.org>

        Add HTTPS git remote to ReadMe.md
        https://bugs.webkit.org/show_bug.cgi?id=191561

        Reviewed by Zalan Bujtas.

        * ReadMe.md:

2018-11-12  Takashi Komori  <Takashi.Komori@sony.com>

        Resurrect WebKitTestRunner for Windows port
        https://bugs.webkit.org/show_bug.cgi?id=189257

        Reviewed by Fujii Hironori.

        * Source/cmake/OptionsWin.cmake:

2018-11-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [Linux] Use memfd_create when available in SharedMemory implementation
        https://bugs.webkit.org/show_bug.cgi?id=189741

        Reviewed by Michael Catanzaro.

        Add include check for linux/memfd.h header.

        * Source/cmake/OptionsCommon.cmake:

2018-11-05  Dominik Infuehr  <dinfuehr@igalia.com>

        Enable LLInt on ARMv7/Linux
        https://bugs.webkit.org/show_bug.cgi?id=191190

        Reviewed by Yusuke Suzuki.

        After enabling the new bytecode format in r237547, C_LOOP was
        forced on all 32-bit platforms. Now enable LLInt again on
        ARMv7-Thumb2/Linux by default.

        * Source/cmake/WebKitFeatures.cmake:

2018-11-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Expose ENABLE_MEDIA_SOURCE as public option
        https://bugs.webkit.org/show_bug.cgi?id=191223

        Reviewed by Xabier Rodriguez-Calvar.

        This option should be public because it needs to be disabled to build with GStreamer older
        than 1.14.4.

        * Source/cmake/GStreamerDefinitions.cmake:

2018-11-04  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Use C++14, not C++17
        https://bugs.webkit.org/show_bug.cgi?id=191101

        Reviewed by Alex Christensen.

        Based on the webkit-dev discussion, this change switches Windows
        port from C++17 to C++14.
        <https://lists.webkit.org/pipermail/webkit-dev/2018-September/030186.html>

        * Source/cmake/OptionsMSVC.cmake: Replaced /std:c++17 with /std:c++14 switch.

2018-10-30  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Enable JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=191072

        Reviewed by Brent Fulgham.

        Add support for building the PlayStation port through JavaScriptCore.

        * CMakeLists.txt:
        * Source/cmake/OptionsPlayStation.cmake: Added.

2018-10-29  Tadeu Zagallo  <tzagallo@apple.com>

        New bytecode format for JSC
        https://bugs.webkit.org/show_bug.cgi?id=187373
        <rdar://problem/44186758>

        Reviewed by Filip Pizlo.

        Disable JIT by default on 32-bit platforms

        * Source/cmake/WebKitFeatures.cmake:

2018-10-27  Charlie Turner  <cturner@igalia.com>

        Make VIDEO enabled if ENCRYPTED_MEDIA is enabled.
        https://bugs.webkit.org/show_bug.cgi?id=190983

        Unreviewed build update.

        * Source/cmake/WebKitFeatures.cmake:

2018-10-27  Charlie Turner  <cturner@igalia.com>

        [GTK] Enable experimental encrypted media support
        https://bugs.webkit.org/show_bug.cgi?id=190829

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:

2018-10-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r237479 and r237484.
        https://bugs.webkit.org/show_bug.cgi?id=190978

        broke JSC on iOS (Requested by tadeuzagallo on #webkit).

        Reverted changesets:

        "New bytecode format for JSC"
        https://bugs.webkit.org/show_bug.cgi?id=187373
        https://trac.webkit.org/changeset/237479

        "Gardening: Build fix after r237479."
        https://bugs.webkit.org/show_bug.cgi?id=187373
        https://trac.webkit.org/changeset/237484

2018-10-26  Tadeu Zagallo  <tzagallo@apple.com>

        New bytecode format for JSC
        https://bugs.webkit.org/show_bug.cgi?id=187373
        <rdar://problem/44186758>

        Reviewed by Filip Pizlo.

        Disable JIT by default on 32-bit platforms

        * Source/cmake/WebKitFeatures.cmake:

2018-10-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Reenable the sandbox

        Previously reviewed by, er, myself. This just reverts the sabotague as our bots should have
        the required deps now. Hopefully.

        * Source/cmake/OptionsGTK.cmake:

2018-10-18  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][Clang] Do not give -Wall to clang-cl because it is treated as -Weverything
        https://bugs.webkit.org/show_bug.cgi?id=190514

        Reviewed by Michael Catanzaro.

        clang-cl maps /Wall and -Wall to -Weverything which reports tons
        of compilation warnings. Do not give -Wall option to clang-cl.

        Clang processes -Wall and -Wextra options differently than GCC.
        Clang processes all warning options in left-to-right order, while
        GCC processes -Wall and -Wextra options first. In order to get the
        same effect in both compilers, -Wall and -Wextra should be
        speficied before all -Wno-* options.

        * Source/cmake/WebKitCompilerFlags.cmake: Put -Wall and -Wextra
        options before all -Wno-* options.
        * Source/cmake/OptionsMSVC.cmake: Prepend /W4 option, instead of
        just replacing /W3 option.

2018-10-16  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, GTK bots build fix

        * Source/cmake/OptionsGTK.cmake: Disable Sandbox support until the
        bots have all the needed dependencies installed.

2018-10-15  Justin Fan  <justin_fan@apple.com>

        Add WebGPU 2018 feature flag and experimental feature flag
        https://bugs.webkit.org/show_bug.cgi?id=190509

        Reviewed by Dean Jackson.

        Update FeatureDefines for WebGPU -> WebMetal renaming, while preserving WebGPU
        references for 2018 WebGPU Sketch implementation.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2018-10-15  Christopher Reid  <chris.reid@sony.com>

        [Curl][WinCairo] Add Public Suffix support to WinCairo
        https://bugs.webkit.org/show_bug.cgi?id=183060

        Reviewed by Alex Christensen.

        * Source/cmake/FindLibPSL.cmake: Added.
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2018-10-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        Add new files missing from previous commit.

        * Source/cmake/FindLibseccomp.cmake: Added.

2018-10-15  Patrick Griffis  <pgriffis@igalia.com>

        [GTK][WPE] Implement subprocess sandboxing
        https://bugs.webkit.org/show_bug.cgi?id=188568

        Reviewed by Michael Catanzaro.

        Add ENABLE_BUBBLEWRAP_SANDBOX option for sandboxing.

        * Source/cmake/FindLibseccomp.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-10-14  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Remove Option::useAsyncIterator
        https://bugs.webkit.org/show_bug.cgi?id=190567

        Reviewed by Saam Barati.

        * Source/cmake/WebKitFeatures.cmake:

2018-10-08  Justin Fan  <justin_fan@apple.com>

        WebGPU: Rename old WebGPU prototype to WebMetal
        https://bugs.webkit.org/show_bug.cgi?id=190325

        Reviewed by Dean Jackson.

        * Source/cmake/WebKitFeatures.cmake:

2018-10-02  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][MSE] Ubuntu LTS build broken since r236409
        https://bugs.webkit.org/show_bug.cgi?id=190036

        Reviewed by Michael Catanzaro.

        Interrupt the build if MSE is enabled but no supported (1.14)
        GStreamer version was found.

        * Source/cmake/GStreamerChecks.cmake:

2018-10-01  Caio Lima  <ticaiolima@gmail.com>

        'HAVE_PTHREAD_MAIN_NP' macro redefined warning when building --jsc-only on macOS
        https://bugs.webkit.org/show_bug.cgi?id=190118

        Reviewed by Yusuke Suzuki.

        We define HAVE_PTHREAD_MAIN_NP in WTF/wtf/Platform.h when the OS is
        Darwin. In such case, we don't need to check symbols for
        pthread_main_np when generating build for this system.

        * Source/cmake/OptionsCommon.cmake:

2018-09-28  Mike Gorse  <mgorse@alum.wpi.edu>

        cmake cannot run if python 2 isn't available
        https://bugs.webkit.org/show_bug.cgi?id=190075

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitCommon.cmake: Set Python_ADDITIONAL_VERSIONS
        to 3, so that a python3 binary will be found.

2018-09-28  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [WTF] Make isMainThread more reliable
        https://bugs.webkit.org/show_bug.cgi?id=189880

        Reviewed by Mark Lam.

        * Source/cmake/OptionsCommon.cmake:

2018-09-21  Yusuke Suzuki  <yusukesuzuki@slowstart.org>

        [JSC] Enable LLInt ASM interpreter on X64 and ARM64 in non JIT configuration
        https://bugs.webkit.org/show_bug.cgi?id=189778

        Reviewed by Keith Miller.

        ENABLE_SAMPLING_PROFILER does not depend on ENABLE_JIT now since it can be
        used with LLInt ASM interpreter.

        * Source/cmake/WebKitFeatures.cmake:

2018-09-21  Mike Gorse  <mgorse@suse.com>

        Build tools should work when the /usr/bin/python is python3
        https://bugs.webkit.org/show_bug.cgi?id=156674

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitCommon.cmake: Allow python 3.

2018-09-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update GTK+ library versions after r235362.

        Project version number was updated without bumping the library versions too.

        * Source/cmake/OptionsGTK.cmake:

2018-09-12  Dan Bernstein  <mitz@apple.com>

        Updated svn:ignore after r235381.

        * .: Added LocalOverrides.xcconfig to svn:ignore.

2018-09-12  Dan Bernstein  <mitz@apple.com>

        Removed a couple of empty directories left behind after r235892.

        * WPEWebCore: Removed.
        * downstream-WebCore: Removed.

2018-09-10  Tim Horton  <timothy_horton@apple.com>

        Make it easier to build for SDK_VARIANT=iosmac
        https://bugs.webkit.org/show_bug.cgi?id=189488
        <rdar://problem/38254840>

        Reviewed by Wenson Hsieh.

        * Makefile:
        * Makefile.shared:
        * Source/Makefile:
        Set a variety of build flags (disable libwebrtc, tools, and set
        SDK_VARIANT and WK_ALTERNATE_FRAMEWORKS_DIR).

2018-08-30  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Replace AVFoundationSupport.py using CMake
        https://bugs.webkit.org/show_bug.cgi?id=182891

        Reviewed by Per Arne Vollan.

        Adds CMake checks for AVFoundation support replacing the functionality
        of AVFoundationSupport.py.

        CMake is used to detect the symbols expected with the HAVE_* checks for
        AVFoundation support. This involves creating source files that will be
        built which verifies the presence of symbols. For Apple frameworks it
        is customary to include the main framework file which includes the
        other associated headers.

        The check for HAVE_AVCFPLAYERITEM_CALLBACK_VERSION_2 involves looking
        for an enumeration which a symbol check cannot detect. Instead a small
        program is used which will compile and link when the version 2
        enumeration is present.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-08-28  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use CMake's FindFreetype
        https://bugs.webkit.org/show_bug.cgi?id=189071

        Reviewed by Michael Catanzaro.

        Use the builtin CMake functionality for finding Freetype.

        * Source/cmake/FindFreetype2.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-08-27  Aditya Keerthi  <akeerthi@apple.com>

        Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
        https://bugs.webkit.org/show_bug.cgi?id=188931

        Reviewed by Wenson Hsieh.

        * Source/cmake/OptionsMac.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
        * Source/cmake/WebKitFeatures.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

2018-08-27  Keith Rollin  <krollin@apple.com>

        Build system support for LTO
        https://bugs.webkit.org/show_bug.cgi?id=187785
        <rdar://problem/42353132>

        Reviewed by Dan Bernstein.

        Add support for building WebKit with LTO (Link Time Optimization) on
        macOS and iOS. Both variations are supported: "full" (which performs
        all the optimizations it can regardless of the cost) and "thin" (which
        sacrifices some optimizations in order to recover build time and
        memory usage).

        By default, LTO is disabled for Debug and Release builds, but is
        enabled for Production builds. For Debug and Release builds, LTO is
        controlled as follows:

        - When using `make` from the command line, include
          WK_LTO_MODE={none,thin,full}. For example, `make WK_LTO_MODE=full
          release`. As when specifying debug/release, the LTO configuration
          information is written to the WebKitBuild directory and is used as
          the default on the next build if a new setting is not specified.

        - When using `build-webkit`, include --lto-mode={none,thin,full} on
          the command line. For example, `build-webkit --lto-mode=full ...`.

        - When using Xcode, create a configuration file called
          LocalOverrides.xcconfig at the root level of your WebKit checkout
          directory. Include within it a line that says:

            WK_LTO_MODE={none,thin,full}

          For example:

            WK_LTO_MODE=full

        Note that LocalOverrides.xcconfig is included in the .gitignore file,
        so you won't accidentally check your changes into source control.

        Enabling LTO can greatly increase build times, especially when using
        "full" LTO with 32GB or RAM or less. Following is a table of full
        build times for a Release build on a fully decked-out 2017 iMac Pro:

            LTO     macOS      iOS
            -----  -------   -------
            None:   9m 11s   14m 11s
            Thin:  11m 44s   17m 30s
            Full:  21m 39s   28m 56s

        Incremental times are affected even more greatly. The actual
        optimization and compilation of LLVM bitcode is moved to the link
        phase, meaning that the link phase, which previously took only
        seconds, can now take many minutes. It's for this reason that LTO is
        not enabled in Debug and Release builds, since incremental builds are
        an integral part of those configurations. However, using the
        mechanisms described above, developers can perform optional LTO builds
        if needed to track down build or runtime issues in that configuration.

        * .gitignore: Include LocalOverrides.xcconfig.
        * Makefile.shared: Add support for WK_LTO_MODE on the command line.

2018-08-27  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, bump WPE/GTK version numbers

        We have a pkg-config dependency on 2.21.92 but trunk is stuck on 2.21.5. So bump the version
        number to 2.23.0. It seems like a good version number to use until the next real release
        (2.23.1).

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-08-26  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Remove stale comment from WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=188918

        Reviewed by Fujii Hironori.

        This comment at the top of WebKitFeatures.cmake is no longer accurate because feature defaults are no longer defined in FeatureList.pm (thank goodness!)

        * Source/cmake/WebKitFeatures.cmake:

2018-08-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Have checks are not getting set inside CMake properly
        https://bugs.webkit.org/show_bug.cgi?id=188901

        Reviewed by Michael Catanzaro.

        Make sure the variable's value is sent to SET_AND_EXPOSE_TO_BUILD
        within the WEBKIT_CHECK_HAVE_* macros.

        * Source/cmake/WebKitFeatures.cmake:

2018-08-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add HAVE_MALLOC_TRIM definition
        https://bugs.webkit.org/show_bug.cgi?id=188897

        Reviewed by Konstantin Tokarev.

        Add CMake check for malloc_trim.

        * Source/cmake/OptionsCommon.cmake:

2018-08-22  Ross Kirsling  <ross.kirsling@sony.com>

        [MSVC] Stop disabling /O2 features.
        https://bugs.webkit.org/show_bug.cgi?id=188811

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsMSVC.cmake:
        Don't disable /GF (string pooling) or /Gy (function-level linking).

2018-08-22  Alberto Garcia  <berto@igalia.com>

        Don't use WTF_CPU_MIPS when building for mips64
        https://bugs.webkit.org/show_bug.cgi?id=188858

        Reviewed by Michael Catanzaro.

        * CMakeLists.txt: Use WTF_CPU_MIPS64 for this architecture.

2018-08-22  Zan Dobersek  <zdobersek@igalia.com>

        [CoordGraphics] Switch to Nicosia::CompositionLayer state tracking
        https://bugs.webkit.org/show_bug.cgi?id=188693

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Enable USE_NICOSIA alongside
        USE_COORDINATED_GRAPHICS and USE_COORDINATED_GRAPHICS_THREADED.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2018-08-21  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.91 release.

        * Source/cmake/OptionsWPE.cmake: Bump version numbers.

2018-08-21  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Update to use libwpe-1.0.0 and WPEBackend-fdo-1.0.0
        https://bugs.webkit.org/show_bug.cgi?id=188782

        Reviewed by Michael Catanzaro.

        Make the build depend on wpe-0.2, and change the Flatpak and JHBuild development
        environments to use version 1.0.0 of libwpe and WPEBackend-fdo.

        * Source/cmake/FindWPE.cmake: Renamed from Source/cmake/FindWPEBackend.cmake and changed
        to check for libwpe-0.2.
        * Source/cmake/OptionsWPE.cmake: Adapt to the rename to FindWPE.cmake.

2018-08-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        Adjust CMAKE_MODULE_LINKER_FLAGS for asan
        https://bugs.webkit.org/show_bug.cgi?id=188699

        Reviewed by Konstantin Tokarev.

        * Source/cmake/WebKitCompilerFlags.cmake:

2018-07-30  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Make codecparsers optionnal
        https://bugs.webkit.org/show_bug.cgi?id=188010

        And avoid building libWebRTC if it won't be used. While there is no other
        WebRTC backend, it makes no sense to expose an option.

        Error out when WEBRTC or MEDIA_STREAM is enabled but GStreamer < 1.10

        Reviewed by Alejandro G. Castro.

        * Source/cmake/GStreamerChecks.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-07-26  Andy VanWagoner  <andy@vanwagoner.family>

        [INTL] Remove INTL sub-feature compile flags
        https://bugs.webkit.org/show_bug.cgi?id=188081

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-07-24  Thibault Saunier  <tsaunier@igalia.com>

        [WPE][GTK] Implement PeerConnection API on top of libwebrtc
        https://bugs.webkit.org/show_bug.cgi?id=186932

        Reviewed by Philippe Normand.

        * Source/cmake/FindGStreamer.cmake: Look for gstreamer-codecparser as it needed for GStreamerVideoDecoder

2018-07-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.5 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-07-19  Stephan Szabo  <stephan.szabo@sony.com>

        [WinCairo] Support DEVELOPER_MODE for allowing inspection of web inspector
        https://bugs.webkit.org/show_bug.cgi?id=187786

        Reviewed by Fujii Hironori.

        * Source/cmake/OptionsWinCairo.cmake: Add ENABLE_DEVELOPER_MODE
        to build when DEVELOPER_MODE is turned on at cmake time.

2018-07-18  Michael Catanzaro  <mcatanzaro@igalia.com>

        Switch CMake ports back to C++ 14
        https://bugs.webkit.org/show_bug.cgi?id=187744

        Reviewed by Ryosuke Niwa.

        The XCode build is still not using C++ 17, it's been several months since CMake ports
        switched, everything builds fine without changes if we switch back, and there have been some
        unfixed problems. Let's go back to C++ 14 for now. We can switch back to C++ 17 whenever we
        are ready to switch over XCode at the same time, to ensure we don't wind up with divergent
        behavior for std::optional.

        * Source/cmake/WebKitCompilerFlags.cmake:

2018-07-16  Ryosuke Niwa  <rniwa@webkit.org>

        Update ReadMe.md line 68
        https://bugs.webkit.org/show_bug.cgi?id=187533

        Reviewed by Wenson Hsieh.

        * ReadMe.md:

2018-07-02  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Use JOB_POOLS to avoid memory-hungry linker processes running at the same time
        https://bugs.webkit.org/show_bug.cgi?id=187254

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitCommon.cmake: Set the maximum number of
        concurrent link processes using job pools (four for release builds,
        two otherwise) to avoid running out of memory during builds.

2018-07-02  Ryosuke Niwa  <rniwa@webkit.org>

        Repository fix after r233427 and r233443.

        * jstests: Removed.

2018-06-30  Adam Barth  <abarth@webkit.org>

        Port JavaScriptCore to OS(FUCHSIA)
        https://bugs.webkit.org/show_bug.cgi?id=187223

        Reviewed by Daniel Bates.

        * Source/cmake/OptionsJSCOnly.cmake: Add back ICU.

2018-06-29  Ross Kirsling  <ross.kirsling@sony.com>

        [JSCOnly] Restore Windows build.
        https://bugs.webkit.org/show_bug.cgi?id=187127

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsJSCOnly.cmake:
        Don't forget to set -DUCHAR_TYPE=wchar_t for ICU on Windows.
        Use bin64/lib64 on Windows (for consistency with full WebKit build).

2018-06-28  Adam Barth  <abarth@webkit.org>

        Switch OS(FUCHSIA) to using JSCOnly
        https://bugs.webkit.org/show_bug.cgi?id=187133

        Reviewed by Yusuke Suzuki.

        Rather than creating a Fuchsia port, OS(FUCHSIA) now uses the JSCOnly
        port.

        * CMakeLists.txt: Set the WTF_OS_FUCHSIA flag
        * Source/cmake/OptionsFuchsia.cmake: Removed.
        * Source/cmake/OptionsJSCOnly.cmake: Temporarily disable ICU for
        OS(FUCHSIA). We'll get ICU wired in, but I'd like to work through the
        other compile errors first.

2018-06-27  Adam Barth  <abarth@webkit.org>

        Add Fuchsia support to build-jsc
        https://bugs.webkit.org/show_bug.cgi?id=187086

        Reviewed by Yusuke Suzuki.

        Add Fuchsia port to cmake build system. After this patch, the build
        errors out due to a missing sysroot.

        * CMakeLists.txt:
        * Source/cmake/OptionsFuchsia.cmake: Added.

2018-06-18  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed GTK+ gardening. Updating the WPT expectations by removing
        failure expectations for 2dcontext tests covering CSS HSL/HSLA color
        parsing and createImageBitmap() API that are nowadays passing.

        * WebPlatformTests/gtk/TestExpectations.json:

2018-06-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Automatically disable JIT and enable USE_SYSTEM_MALLOC on unfamiliar architectures
        https://bugs.webkit.org/show_bug.cgi?id=186722

        Reviewed by Darin Adler.

        We know that the JSC JIT and bmalloc both work on only a limited set of architectures. In
        Fedora, we have to manually disable these when building for s390x, ppc64, and ppc64le. But
        it's really easy to do the right thing automatically, so we might as well.

        * Source/cmake/WebKitFeatures.cmake:

2018-06-13  Thibault Saunier  <tsaunier@igalia.com>

        [WPE] Build getUserMedia support
        https://bugs.webkit.org/show_bug.cgi?id=186547

        Reviewed by Alejandro G. Castro.

        * Source/cmake/OptionsWPE.cmake: Build MediaStream support

2018-06-12  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Bump required version to 1.8.3
        https://bugs.webkit.org/show_bug.cgi?id=186558

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/GStreamerChecks.cmake: Bump to 1.8.3 which is the
        version shipped in the current Ubuntu LTS we support (16.04).

2018-06-12  Zan Dobersek  <zdobersek@igalia.com>

        Add run-web-platform-tests script
        https://bugs.webkit.org/show_bug.cgi?id=183356

        Reviewed by Carlos Alberto Lopez Perez.

        Store port-specific test expectations and test manifest files for the
        web-platform-tests test runs under the top-level WebPlatformTests
        directory.

        TestExpectations.json file lists all the failing or disabled tests
        or subtests that are to be expected in the test run. This information is
        parsed in the run-web-platform-tests script and used to build
        test-specific metadata files (ending with .ini) inside a temporary
        directory that is then used during the test run. JSON format is used to
        follow the WebDriver test suite in how it manages expectations, and to
        avoid having to manually manage .ini files for every deviant test case.

        TestManifest.ini file is used to fine-tune which tests are to be enabled
        by default. For the GTK+ port, we currently disable all tests by default
        but then specifically enable tests under the 2dcontext and WebCryptoAPI
        directories. This will allow for gradual enabling of further tests.

        * WebPlatformTests/gtk/TestExpectations.json: Added.
        * WebPlatformTests/gtk/TestManifest.ini: Added.

2018-06-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-06-11  Michael Saboff  <msaboff@apple.com>

        JavaScriptCore: Disable 32-bit JIT on Windows
        https://bugs.webkit.org/show_bug.cgi?id=185989

        Reviewed by Mark Lam.

        * Source/cmake/OptionsWin.cmake:

2018-06-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Add a MiniBrowser and use it to run WebDriver tests
        https://bugs.webkit.org/show_bug.cgi?id=186345

        Reviewed by Žan Doberšek.

        Add an option to enable building the MiniBrowser.

        * Source/cmake/FindWaylandProtocols.cmake: Added.
        * Source/cmake/OptionsWPE.cmake:

2018-06-06  Dan Bernstein  <mitz@apple.com>

        [Xcode] Opt out of the New Build System
        https://bugs.webkit.org/show_bug.cgi?id=186380

        Reviewed by Alexey Proskuryakov.

        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: Use the Legacy Build System.

2018-06-06  Dan Bernstein  <mitz@apple.com>

        Check in a file created by the Xcode 10 beta.

        * WebKit.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: Added.

2018-05-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.3 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-05-25  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.2 release.

        * Source/cmake/OptionsWPE.cmake: Bump version numbers.

2018-05-22  Alberto Garcia  <berto@igalia.com>

        [CMake] Properly detect compiler flags, needed libs, and fallbacks for usage of 64-bit atomic operations
        https://bugs.webkit.org/show_bug.cgi?id=182622
        <rdar://problem/40292317>

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitCompilerFlags.cmake:
        Move the test to detect whether we need to link against libatomic
        to a common CMake file so it can be used from both JavaScriptCore
        and WebKit.

2018-05-22  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r231843.

        Broke cross build

        Reverted changeset:

        "[CMake] Properly detect compiler flags, needed libs, and
        fallbacks for usage of 64-bit atomic operations"
        https://bugs.webkit.org/show_bug.cgi?id=182622
        https://trac.webkit.org/changeset/231843

2018-05-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Enable WebKit build by default
        https://bugs.webkit.org/show_bug.cgi?id=185141

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsWin.cmake: Disable
        ENABLE_NETSCAPE_PLUGIN_API unconditionally for WinCairo port
        because it builds both WK1 and WK2.
        * Source/cmake/OptionsWinCairo.cmake: Turn ENABLE_WEBKIT on by default.
        Remove BUILDING_WIN_CAIRO_WEBKIT macro.

2018-05-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.2 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-05-17  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [WPE] Implement and enable FULLSCREEN_API
        https://bugs.webkit.org/show_bug.cgi?id=185676

        Reviewed by Žan Doberšek.

        Remove the CMake option to disable this option for WPE.
        This feature gets enabled now via Source/cmake/WebKitFeatures.cmake

        * Source/cmake/OptionsWPE.cmake:

2018-05-16  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Update WinCairoRequirements
        https://bugs.webkit.org/show_bug.cgi?id=185700

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsWinCairo.cmake:

2018-05-16  Andy VanWagoner  <andy@vanwagoner.family>

        Add support for Intl NumberFormat formatToParts
        https://bugs.webkit.org/show_bug.cgi?id=185375

        Reviewed by Yusuke Suzuki.

        Add flag for NumberFormat formatToParts.

        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-05-14  Yusuke Suzuki  <utatane.tea@gmail.com>

        [Win] Use C++17 in MSVC
        https://bugs.webkit.org/show_bug.cgi?id=185232

        Reviewed by Alex Christensen.

        Use /std:c++17 option.

        * Source/cmake/OptionsMSVC.cmake:

2018-05-16  Alberto Garcia  <berto@igalia.com>

        [CMake] Properly detect compiler flags, needed libs, and fallbacks for usage of 64-bit atomic operations
        https://bugs.webkit.org/show_bug.cgi?id=182622

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsWPE.cmake:
        Enable THREADS_PREFER_PTHREAD_FLAG. This uses -pthread instead of
        -lpthread, fixing the 64-bit RISC-V build of the GTK+ port due to
        missing atomic primitives.

        * Source/cmake/WebKitCompilerFlags.cmake:
        Move the test to detect whether we need to link against libatomic
        to a common CMake file so it can be used from both JavaScriptCore
        and WebKit.

2018-05-14  Zan Dobersek  <zdobersek@igalia.com>

        [GTK] REGRESSION(r231170) Build broken with Clang 5.0
        https://bugs.webkit.org/show_bug.cgi?id=185198

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitCompilerFlags.cmake: Fall back to the -std=c++1z
        compiler flag if -std=c++17 is not supported. If that flag is not
        supported either, bail with an error message.

2018-05-09  Jan Alexander Steffens  <jan.steffens@gmail.com>

        [GTK] gtk-doc installation subdir duplicated
        https://bugs.webkit.org/show_bug.cgi?id=185468

        Reviewed by Carlos Garcia Campos.

        The GTK docs are installed into a duplicated subdir,
        e.g. /usr/share/doc/gtk-doc/html/webkit2gtk-4.0/webkit2gtk-4.0.

        * Source/PlatformGTK.cmake:

2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed. Bump WPE soname for good measure.

        * Source/cmake/OptionsWPE.cmake:

2018-05-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for 2.21.1 release.

        * Source/cmake/OptionsWPE.cmake: Bump version numbers.

2018-05-06  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSC][GTK][JSCONLY] Use capstone disassembler
        https://bugs.webkit.org/show_bug.cgi?id=185283

        Reviewed by Michael Catanzaro.

        * Source/CMakeLists.txt:
        * Source/cmake/FindLLVM.cmake: Removed.
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-05-08  Valerie R Young  <valerie@bocoup.com>

        test262/Runner.pm: create results dir for results of test262 run
        https://bugs.webkit.org/show_bug.cgi?id=185392

        Reviewed by Michael Saboff.

        Remove reference to no longer existing files.

        * .gitignore:

2018-05-07  Yusuke Suzuki  <utatane.tea@gmail.com>

        [JSCOnly] Enable Intl.PluralRules
        https://bugs.webkit.org/show_bug.cgi?id=185359

        Reviewed by Daniel Bates.

        Enable Intl.PluralRules because JSCOnly port enables features aggressively.

        * Source/cmake/OptionsJSCOnly.cmake:

2018-05-07  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Disable plugin api when building modern WebKit
        https://bugs.webkit.org/show_bug.cgi?id=185312

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsWin.cmake:

2018-05-02  Valerie R Young  <valerie@bocoup.com>

        test262/Runner.pm: save summary to file
        https://bugs.webkit.org/show_bug.cgi?id=185200

        Reviewed by Michael Saboff.

        * .gitignore:

2018-05-01  Leo Balter  <leonardo.balter@gmail.com>

        Auto save the results for Test262
        https://bugs.webkit.org/show_bug.cgi?id=184926

        Reviewed by Michael Saboff.

2018-05-01  Oleksandr Skachkov  <gskachkov@gmail.com>

        WebAssembly: add support for stream APIs - JavaScript API
        https://bugs.webkit.org/show_bug.cgi?id=183442

        Reviewed by Yusuke Suzuki and JF Bastien.

        * Source/cmake/WebKitFeatures.cmake:

2018-04-30  JF Bastien  <jfbastien@apple.com>

        Use some C++17 features
        https://bugs.webkit.org/show_bug.cgi?id=185135

        Reviewed by Alex Christensen.

        As discussed here [0] let's move WebKit to a subset of C++17. We
        now require GCC 6 [1] which means that, according to [2] we can
        use the following C++17 language features (I removed some
        uninteresting ones):

         - New auto rules for direct-list-initialization
         - static_assert with no message
         - typename in a template template parameter
         - Nested namespace definition
         - Attributes for namespaces and enumerators
         - u8 character literals
         - Allow constant evaluation for all non-type template arguments
         - Fold Expressions
         - Unary fold expressions and empty parameter packs
         - __has_include in preprocessor conditional
         - Differing begin and end types in range-based for
         - Improving std::pair and std::tuple

        Consult the Tony Tables [3] to see before / after examples.

        Of course we can use any library feature if we're willing to
        import them to WTF (and they don't require language support).


          [0]: https://lists.webkit.org/pipermail/webkit-dev/2018-March/029922.html
          [1]: https://trac.webkit.org/changeset/231152/webkit
          [2]: https://en.cppreference.com/w/cpp/compiler_support
          [3]: https://github.com/tvaneerd/cpp17_in_TTs/blob/master/ALL_IN_ONE.md

        * Source/cmake/WebKitCompilerFlags.cmake:

2018-04-29  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Require GCC 6
        https://bugs.webkit.org/show_bug.cgi?id=184985

        Reviewed by Alex Christensen.

        Require it.

        * CMakeLists.txt:

2018-04-26  Daniel Bates  <dabates@apple.com>

        ASSERTION FAILED: ASSERT(!containsImage || MIMETypeRegistry::isSupportedImageResourceMIMEType([resource MIMEType])) in -[NSPasteboard(WebExtras) _web_writePromisedRTFDFromArchive:containsImage:]
        https://bugs.webkit.org/show_bug.cgi?id=184161
        <rdar://problem/39051645>

        Reviewed by Dan Bernstein.

        * ManualTests/DragInlinePDFImageDocument.html: Added.
        * ManualTests/resources/simple.pdf: Added.

2018-04-26  Andy VanWagoner  <thetalecrafter@gmail.com>

        [INTL] Implement Intl.PluralRules
        https://bugs.webkit.org/show_bug.cgi?id=184312

        Reviewed by JF Bastien.

        Added Intl.PluralRules feature flag.

        * Source/cmake/WebKitFeatures.cmake:

2018-04-26  Zan Dobersek  <zdobersek@igalia.com>

        [GTK][WPE] Initial ASYNC_SCROLLING support
        https://bugs.webkit.org/show_bug.cgi?id=184961

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Enable ASYNC_SCROLLING as a private option.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Build and link against latest WPEBackend and WPEBackend-fdo
        https://bugs.webkit.org/show_bug.cgi?id=184643

        Reviewed by Žan Doberšek.

        Update find modules to include the API versions.

        * Source/cmake/FindWPEBackend-fdo.cmake:
        * Source/cmake/FindWPEBackend.cmake:

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Some options should be marked as advanced
        https://bugs.webkit.org/show_bug.cgi?id=184972

        Reviewed by Konstantin Tokarev.

        * Source/cmake/FindLibGcrypt.cmake:
        * Source/cmake/FindWebP.cmake:

2018-04-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] Miscellaneous build cleanups
        https://bugs.webkit.org/show_bug.cgi?id=184399

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake:

2018-04-24  Leo Balter  <leonardo.balter@gmail.com>

        Land test262 test results associated with Test262 runner
        https://bugs.webkit.org/show_bug.cgi?id=184667

        Reviewed by Michael Saboff.

        * .gitignore: Ignore test262 results file.

2018-04-24  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Remove libgbm dependency
        https://bugs.webkit.org/show_bug.cgi?id=184906

        Reviewed by Carlos Garcia Campos.

        Remove the libgbm CMake search module. It's not necessary anymore
        after r230562.

        * Source/cmake/FindLibGBM.cmake: Removed.

2018-04-23  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] check target looks broken
        https://bugs.webkit.org/show_bug.cgi?id=184407

        Reviewed by Carlos Garcia Campos.

        It's pretty clear that nobody has been using check for a long time.

        We got rid of check-for-webkitdom-api-breaks a long time ago, when we stopped autogenerating
        the DOM API, but it's still used in the check target. Fix this.

        Also, the check target for some reason runs itself from the Source subdirectory of the
        builddir, but the test script expects to be run from the toplevel build directory. Fix this
        too.

        Add VERBATIM for good measure.

        * Source/PlatformGTK.cmake:

2018-04-20  Daniel Bates  <dabates@apple.com>

        Unreviewed, rolling out r230117.

        Broke find-in-page for PDFs

        Reverted changeset:

        "ASSERTION FAILED: ASSERT(!containsImage ||
        MIMETypeRegistry::isSupportedImageResourceMIMEType([resource
        MIMEType])) in -[NSPasteboard(WebExtras)
        _web_writePromisedRTFDFromArchive:containsImage:]"
        https://bugs.webkit.org/show_bug.cgi?id=184161
        https://trac.webkit.org/changeset/230117

2018-04-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Local cross references are broken in API documentation
        https://bugs.webkit.org/show_bug.cgi?id=184771

        Reviewed by Michael Catanzaro.

        Update the documentation html paths and install the JSC GLib API too.

        * Source/PlatformGTK.cmake:

2018-04-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.1 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-04-17  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Add and enable the ENABLE_CSS_ANIMATIONS_LEVEL_2 feature define
        https://bugs.webkit.org/show_bug.cgi?id=184681

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/WebKitFeatures.cmake: Add the ENABLE_CSS_ANIMATIONS_LEVEL_2
        feature define. Follow Cocoa ports and enable it by default.

2018-04-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Install files needed for WebKitWebExtensions
        https://bugs.webkit.org/show_bug.cgi?id=179915

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsWPE.cmake:

2018-04-12  Ryan Haddad  <ryanhaddad@apple.com>

        Unreviewed, rolling out r230554.

        The non-ASCII character in the filename causes issues with SVN

        Reverted changeset:

        "input.webkitEntries does not work as expected when folder
        contains accented chars"
        https://bugs.webkit.org/show_bug.cgi?id=184517
        https://trac.webkit.org/changeset/230554

2018-04-12  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Switch testing process to using WPEBackend-fdo
        https://bugs.webkit.org/show_bug.cgi?id=184357

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindWPEBackend-fdo.cmake: Renamed from Source/cmake/FindWPEBackend-mesa.cmake.

2018-04-11  Thibault Saunier  <tsaunier@igalia.com>

        [GStreamer] Use of playbin3 when USE_PLAYBIN3 environment variable is set
        https://bugs.webkit.org/show_bug.cgi?id=184498

        Reviewed by Philippe Normand.

        This is the same behaviour as with playbin itself.

        Make sure to keep using "playbin" for MediaSource.

        * Source/cmake/GStreamerDefinitions.cmake:

2018-04-09  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Use GNU install directories
        https://bugs.webkit.org/show_bug.cgi?id=184377

        Reviewed by Carlos Garcia Campos.

        Notably, this means all the CMake arguments that distributors use to customize install
        directories (-DCMAKE_INSTALL_*DIR) will no longer be ignored.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-04-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] WebKit should link to WebCore as a PRIVATE library if WebCore is a static library
        https://bugs.webkit.org/show_bug.cgi?id=184127

        Reviewed by Konstantin Tokarev.

        Building TestWebKitLib on Windows causes a linkage error of
        multiply defined symbols because TestWebKitLib links to
        both WebCore and WebKit. TestWebKitLib explicitly links only with
        WebKit, But, WebCore is propagated because WebKit links WebCore as
        public.

        * Source/cmake/OptionsGTK.cmake (ADD_WHOLE_ARCHIVE_TO_LIBRARIES):
        Do not wrap PRIVATE and PUBLIC keywords with -Wl,--whole-archive.

2018-04-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Remove applicationDirectoryPath() and sharedResourcePath()
        https://bugs.webkit.org/show_bug.cgi?id=184381

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-04-02  Per Arne Vollan  <pvollan@apple.com>

        Remove references to internal version of WebKitQuartzCoreAdditions in CMake files.
        https://bugs.webkit.org/show_bug.cgi?id=184246
        <rdar://problem/39116563>

        Unreviewed build fix.

        * Source/PlatformWin.cmake:

2018-04-02  Alejandro G. Castro  <alex@igalia.com>

        [GTK] Make libwebrtc backend buildable for GTK  port
        https://bugs.webkit.org/show_bug.cgi?id=178860

        Reviewed by Youenn Fablet.

        * Source/CMakeLists.txt: Add the libwebrtc directory to the compilation.
        * Source/cmake/OptionsGTK.cmake: Add the USE_LIBWEBRTC option to
        allow compilation of the specific code.

2018-03-30  Daniel Bates  <dabates@apple.com>

        ASSERTION FAILED: ASSERT(!containsImage || MIMETypeRegistry::isSupportedImageResourceMIMEType([resource MIMEType])) in -[NSPasteboard(WebExtras) _web_writePromisedRTFDFromArchive:containsImage:]
        https://bugs.webkit.org/show_bug.cgi?id=184161

        Reviewed by Per Arne Vollan.

        * ManualTests/DragInlinePDFImageDocument.html: Added.
        * ManualTests/resources/simple.pdf: Added.

2018-03-28  Tim Horton  <timothy_horton@apple.com>

        Make it possible to disable building the tools with Make
        https://bugs.webkit.org/show_bug.cgi?id=184109

        Reviewed by Simon Fraser.

        * Makefile:

2018-03-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to convert between DOM and JSCValue
        https://bugs.webkit.org/show_bug.cgi?id=183448

        Reviewed by Michael Catanzaro.

        Define FORWARDING_HEADERS_WPE_DOM_DIR.

        * Source/cmake/OptionsWPE.cmake:

2018-03-22  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Enable WOFF2 support
        https://bugs.webkit.org/show_bug.cgi?id=178158

        Reviewed by Frédéric Wang.

        * Source/cmake/OptionsWPE.cmake: Add needed logic to detect the Brotli and WOFF2 libraries.

2018-03-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Initial implementation of JavaScriptCore glib bindings
        https://bugs.webkit.org/show_bug.cgi?id=164061

        Reviewed by Michael Catanzaro.

        Set global variables used by the makefiles.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-03-15  Ms2ger  <Ms2ger@igalia.com>

        [GTK][WPE] Enable service workers
        https://bugs.webkit.org/show_bug.cgi?id=178576

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-03-12  Yoav Weiss  <yoav@yoav.ws>

        Runtime flag for link prefetch and remove link subresource.
        https://bugs.webkit.org/show_bug.cgi?id=183540

        Reviewed by Chris Dumez.

        Remove the LINK_PREFETCH build time flag.

        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2018-03-12  Zan Dobersek  <zdobersek@igalia.com>

        Unreviewed. Unbreak the WPE layout testing that's been broken since
        r229470. Due to disassociation between ENABLE(ACCESSIBILITY) and
        HAVE(ACCESSIBILITY), the injected bundle for the WPE port was left with
        undefined symbols. This is fixed with ENABLE_ACCESSIBILITY being enabled
        for the WPE port as well.

        * Source/cmake/OptionsWPE.cmake:

2018-03-12  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix library version of JavaScriptCoreGTK.

        * Source/cmake/OptionsGTK.cmake:

2018-03-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump WebKitGTK+ version to 2.21.0.

        * Source/cmake/OptionsGTK.cmake:

2018-03-08  Tim Horton  <timothy_horton@apple.com>

        Add a way to not build libwebrtc when building WebKit via Makefiles
        https://bugs.webkit.org/show_bug.cgi?id=183437
        <rdar://problem/38254840>

        Reviewed by Dan Bernstein.

        * Source/Makefile:

2018-03-05  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Split JSC header copying into public and private targets
        https://bugs.webkit.org/show_bug.cgi?id=183251

        Reviewed by Konstantin Tokarev.

        * Source/cmake/WebKitMacros.cmake:

2018-03-02  Don Olmstead  <don.olmstead@sony.com>

        Add clang-format configuration
        https://bugs.webkit.org/show_bug.cgi?id=183302

        Reviewed by Ryosuke Niwa.

        * .clang-format: Added.

2018-03-01  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] configure failure for aarch64
        https://bugs.webkit.org/show_bug.cgi?id=183268

        Unreviewed build fix. This failure is caused by a simple typo.

        * Source/cmake/OptionsCommon.cmake:

2018-02-26  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] WebKit2_C.h should be included for TestWebKit
        https://bugs.webkit.org/show_bug.cgi?id=182682

        Reviewed by Yusuke Suzuki.

        Added a new definition "BUILDING_WIN_CAIRO_WEBKIT" to specify
        the wincairo webkit build.

        * Source/cmake/OptionsWinCairo.cmake:

2018-02-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake][OpenVR] Linkage errors happen because only OpenVR is compiled with -stdlib=libc++ if Clang is used
        https://bugs.webkit.org/show_bug.cgi?id=183116

        Reviewed by Žan Doberšek.

        OpenVR has a option USE_LIBCXX to enable/disable that behavior. Let's disable it.

        * Source/CMakeLists.txt: Added a option command for USE_LIBCXX to set OFF as default.

2018-02-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Expose HAVE macros globally
        https://bugs.webkit.org/show_bug.cgi?id=183011

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2018-02-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use cmakeconfig.h rather than config.h and Platform.h
        https://bugs.webkit.org/show_bug.cgi?id=182883

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2018-02-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        [GTK] USE_UPOWER causes crashes inside a chroot or on systems with broken dbus/upower
        https://bugs.webkit.org/show_bug.cgi?id=181825

        Reviewed by Carlos Garcia Campos.

        Get rid of the upower-glib dependency. We will use upower's D-Bus API instead.

        * Source/cmake/FindUPowerGLib.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:

2018-02-20  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][CMake] Support building with Enchant 2.x
        https://bugs.webkit.org/show_bug.cgi?id=182933

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindEnchant.cmake: Check for both the "enchant" and "enchant-2"
        pkg-config components, picking the first available for which the headers and
        library are usable.

2018-02-19  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Playbin3 support
        https://bugs.webkit.org/show_bug.cgi?id=182530

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/GStreamerDefinitions.cmake: New
        USE(GSTREAMER_PLAYBIN3) feature. This should be enabled only for
        very recent versions of GStreamer (1.14 at least) and is optional, for now.

2018-02-18  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Fullscreen video is broken
        https://bugs.webkit.org/show_bug.cgi?id=182740

        Reviewed by Michael Catanzaro.

        * Source/cmake/WebKitFeatures.cmake: Enable the
        VIDEO_USES_ELEMENT_FULLSCREEN feature on CMake ports.

2018-02-16  Dean Jackson  <dino@apple.com>

        Use OPENGL macros to be more clear about which OpenGL/ES WebGL uses on Cocoa
        https://bugs.webkit.org/show_bug.cgi?id=182894

        Reviewed by Tim Horton.

        Rename OPENGL_ES_2 to OPENGL_ES.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-02-09  Ross Kirsling  <ross.kirsling@sony.com>

        Simplify .gitignore's WebKitLibraries/win section.
        https://bugs.webkit.org/show_bug.cgi?id=182618

        Reviewed by Per Arne Vollan.

        We need to update this section for WinCairoRequirements regardless, but
        it never needed to be this longwinded in the first place.

        * .gitignore:

2018-02-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Meta][Win] Support ICU 59.1+
        https://bugs.webkit.org/show_bug.cgi?id=181004

        Reviewed by Alex Christensen.

        ICU 59 changed the type of UChar from wchar_t to char16_t on
        Windows. We need a lot of conversions between UChar* and wchar_t*
        to call Windows API because it takes string as wchar_t*.

        Fortunately, ICU is configurable to define UChar as wchar_t as
        well as the prior ICU.
        <http://icu-project.org/apiref/icu4c/umachine_8h.html#a6bb9fad572d65b305324ef288165e2ac>

        * Source/cmake/OptionsWin.cmake: Add a compile option -DUCHAR_TYPE=wchar_t.

2018-02-08  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, switch -pthread to -lpthread per recommendation from Adrian
        https://bugs.webkit.org/show_bug.cgi?id=182400
        <rdar://problem/37252242>

        This is tested and works fine.

        * Source/cmake/WebKitCompilerFlags.cmake:

2018-02-05  Yousuke Kimoto  <yousuke.kimoto@sony.com>

        [WinCairo] Refine WebKitLegacy and WebKit build for wincairo
        https://bugs.webkit.org/show_bug.cgi?id=182478

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsWinCairo.cmake: Added a ENABLE_WIN_CAIRO_WEBKIT option to build webkit for wincairo.

2018-02-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, fix build using the new ENABLE_ADDRESS_SANITIZER option
        https://bugs.webkit.org/show_bug.cgi?id=182400
        <rdar://problem/37252242>

        I failed to properly test a last-minute change.

        * Source/cmake/WebKitCompilerFlags.cmake:

2018-02-05  Michael Catanzaro  <mcatanzaro@igalia.com>

        [CMake] Add ENABLE_ADDRESS_SANITIZER to make it easier to build with asan support
        https://bugs.webkit.org/show_bug.cgi?id=182400

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake:

2018-01-31  Michael Catanzaro  <mcatanzaro@igalia.com>

        Update ReadMe.md
        https://bugs.webkit.org/show_bug.cgi?id=182314

        Reviewed by Alex Christensen.

        Add download link for Epiphany Technology Preview. Improve build instructions for GTK. Add
        build instructions for WPE. Add instructions to run MiniBrowser on Linux. Miscellaneous
        typographical adjustments.

        * ReadMe.md:

2018-01-30  Sergio Villar Senin  <svillar@igalia.com>

        [WebVR][GTK][WPE] Exclude OpenVR from tarballs
        https://bugs.webkit.org/show_bug.cgi?id=182284

        Reviewed by Michael Catanzaro.

        Added private build options for USE_OPENVR.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2018-01-30  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [WinCairo] Fix forwarding header conflict of WebKit on WinCairo
        https://bugs.webkit.org/show_bug.cgi?id=177202

        Reviewed by Alex Christensen.

        * Source/cmake/WebKitMacros.cmake:

2018-01-29  Jiewen Tan  <jiewen_tan@apple.com>

        [WebAuthN] Add a compile-time feature flag
        https://bugs.webkit.org/show_bug.cgi?id=182211
        <rdar://problem/36936365>

        Reviewed by Brent Fulgham.

        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2018-01-18  Sergio Villar Senin  <svillar@igalia.com>

        [WebVR] Add OpenVR to the tree and to the build
        https://bugs.webkit.org/show_bug.cgi?id=177298

        Reviewed by Žan Doberšek.

        * Source/CMakeLists.txt:
        * Source/cmake/OptionsGTK.cmake: Enable USE_OPENVR.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2018-01-18  Dan Bernstein  <mitz@apple.com>

        [Xcode] Shared schemes in the WebKit workspace still have build pre-actions that invoke copy-webkitlibraries-to-product-directory
        https://bugs.webkit.org/show_bug.cgi?id=181784

        Reviewed by Anders Carlsson.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme: Remove the build pre-action.
        * WebKit.xcworkspace/xcshareddata/xcschemes/All Tools.xcscheme: Ditto.

2018-01-17  Michael Catanzaro  <mcatanzaro@igalia.com>

        WEBKIT_FRAMEWORK should not modify file-global include directories
        https://bugs.webkit.org/show_bug.cgi?id=181656

        Reviewed by Konstantin Tokarev.

        Only modify the system include directories of the target passed to WEBKIT_FRAMEWORK.

        * Source/cmake/WebKitMacros.cmake:

2018-01-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.6 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-01-15  Michael Catanzaro  <mcatanzaro@igalia.com>

        REGRESSION(r226266): [GTK] RELEASE_ASSERT(reservedZoneSize >= minimumReservedZoneSize) in JSC::VM::updateStackLimits
        https://bugs.webkit.org/show_bug.cgi?id=181438
        <rdar://problem/36376724>

        Reviewed by Carlos Garcia Campos.

        Build JSC as a shared library.

        Stop using -fvisibility=hidden. This is a shame, but it is causing problems that I don't
        know how to fix.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake:

2018-01-11  Keith Miller  <keith_miller@apple.com>

        Rename ENABLE_ASYNC_ITERATION to ENABLE_JS_ASYNC_ITERATION
        https://bugs.webkit.org/show_bug.cgi?id=181573

        Reviewed by Simon Fraser.

        * Source/cmake/WebKitFeatures.cmake:

2018-01-10  Per Arne Vollan  <pvollan@apple.com>

        [Win] WebKitLegacy should be a dll, not a static library.
        https://bugs.webkit.org/show_bug.cgi?id=181500

        Reviewed by Alex Christensen.

        Set WebKitLegacy library type to shared.

        * Source/cmake/OptionsWin.cmake:

2018-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.5 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-01-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.19.4 release.

        * Source/cmake/OptionsGTK.cmake: Bump version numbers.

2018-01-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        REGRESSION(r226306)[Win][CMake] Unnecessary recompilations triggered by unconditionally copied header files of DerivedSources
        https://bugs.webkit.org/show_bug.cgi?id=181324

        Reviewed by Konstantin Tokarev.

        r226306 changed to use cmake -E copy to copy header files of
        DerivedSources. This command copies files unconditionally, then
        introduced unnecessary recompilations.

        * Source/cmake/WebKitMacros.cmake: Use copy_if_different instead of copy.

2018-01-03  Ting-Wei Lan  <lantw44@gmail.com>

        Replace hard-coded paths in shebangs with #!/usr/bin/env
        https://bugs.webkit.org/show_bug.cgi?id=181040

        Reviewed by Alex Christensen.

        * Source/cmake/tools/scripts/auto-version.pl:
        * Source/cmake/tools/scripts/feature-defines.pl:
        * Source/cmake/tools/scripts/version-stamp.pl:

== Rolled over to ChangeLog-2018-01-01 ==
