2021-11-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.35.1 release

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

2021-11-23  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Allow enabling JPEG-XL support at build time
        https://bugs.webkit.org/show_bug.cgi?id=233325

        Reviewed by Michael Catanzaro.

        Adds a new USE_JPEGXL build option, disabled by default for release builds and
        enabled for developer builds.

        * Source/cmake/OptionsGTK.cmake: Add USE_JPEGXL build option.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2021-11-22  Alejandro G. Castro  <alex@igalia.com>

        Add alexg's GitHub username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=233425

        Unreviewed.

        * metadata/contributors.json:

2021-11-19  Angelos Oikonomopoulos  <angelos@igalia.com>

        [JSC] Workaround for failing mips tests
        https://bugs.webkit.org/show_bug.cgi?id=233359

        Reviewed by Adrian Perez de Castro.

        Add a compiler flag on GCC+mips to work around a code generation bug
        resulting in SIGBUS. This only manifests when running 32-bit mips code
        on mips64 hardware (which the buildbots do).

        * Source/cmake/WebKitCompilerFlags.cmake:

2021-11-18  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        Implement JPEG XL image decoder using libjxl
        https://bugs.webkit.org/show_bug.cgi?id=233113

        Reviewed by Michael Catanzaro.

        This patch introduces the initial version of JPEG XL image decoder.
        JPEG XL is a royalty-free raster-graphics file format that supports
        both lossy and lossless compression and is experimentally supported by
        Chrome, FireFox, and Edge.
        The image decoder implemented by this patch uses libjxl, a reference
        implementation of JPEG XL decoder (and encoder). JPEG XL animations
        will be supported later.

        * Source/cmake/FindJPEGXL.cmake: Added.
        * Source/cmake/OptionsWinCairo.cmake: Enable JPEG XL support if
        libjxl is available.

2021-11-17  Patrick Angle  <pangle@apple.com>

        Update my (Patrick Angle's) status to reviewer
        https://bugs.webkit.org/show_bug.cgi?id=233270

        Unreviewed.

        Update my status to reviewer, as well as drive-by updates to set my github name and update the area of
        expertise.

        * metadata/contributors.json:

2021-11-17  Chris Lord  <clord@igalia.com>

        Add Chris Lord's GitHub username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=233254

        Unreviewed

        * metadata/contributors.json:

2021-11-16  Alex Atwater  <alexandera_22@apple.com>

        Add my GitHub username to contributors.json

        Reviewed by Jonathan Bedard

        * metadata/contributors.json:

2021-11-15  Nikolas Zimmermann  <nzimmermann@igalia.com>

        Add my GitHub username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=233122

        Unreviewed.

        * metadata/contributors.json:

2021-11-13  Myles C. Maxfield  <mmaxfield@apple.com>

        [WebGPU] Add WebGPU.xcodeproj to WebKit.xcworkspace
        https://bugs.webkit.org/show_bug.cgi?id=233078

        Reviewed by Dean Jackson.

        Mechanical change. When building WebGPU becomes required,
        people using this workspace will need it.

        * WebKit.xcworkspace/contents.xcworkspacedata:

2021-11-12  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Add Little-CMS support
        https://bugs.webkit.org/show_bug.cgi?id=233024

        Reviewed by Michael Catanzaro.

        Search for LCMS2 and if its present turn it on for WinCairo.

        * Source/cmake/OptionsWinCairo.cmake:

2021-11-11  Michael Catanzaro  <mcatanzaro@gnome.org>

        -Warray-bounds, -Wstringop-truncation, -Wstringop-overread warnings in Packed.h
        https://bugs.webkit.org/show_bug.cgi?id=226557
        <rdar://problem/79103658>

        Reviewed by Darin Adler.

        Suppress -Wstringop-overread for all of WebKit when building with GCC 11 or newer. This is
        an unfortunate way to deal with false positives that we ought to be able to silence in just
        a few places, but when warnings do not respect pragmas we have few alternatives, and trying
        to remove derived sources from the unified build in order to build them with special flags
        is just not worth the effort.

        This is part of a larger trend of oversensitive warnings from GCC 11.

        * Source/cmake/WebKitCompilerFlags.cmake:

2021-11-10  Kimmo Kinnunen  <kkinnunen@apple.com>

        Coding style for inner namespaces is should be simplified to not indented
        https://bugs.webkit.org/show_bug.cgi?id=232073

        Reviewed by Antti Koivisto.

        * .clang-format:
        Do not indent contents of inner namespaces, match current code.

2021-11-09  J Pascoe  <j_pascoe@apple.com>

        Add j_pascoe to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232904
        <rdar://problem/85222703>

        Unreviewed.

        * metadata/contributors.json:

2021-11-08  Myles C. Maxfield  <mmaxfield@apple.com>

        Make WebGPU.xcodeproj and WebGPU.framework
        https://bugs.webkit.org/show_bug.cgi?id=231661

        Reviewed by Dean Jackson and Robin Morisset.

        * Source/Makefile:

2021-11-08  Peng Liu  <peng.liu6@apple.com>

        Update Peng Liu's contributor status to reviewer
        https://bugs.webkit.org/show_bug.cgi?id=232859

        Unreviewed.

        * metadata/contributors.json:

2021-11-08  Cameron McCormack  <heycam@apple.com>

        Update my status to reviewer
        https://bugs.webkit.org/show_bug.cgi?id=232854

        Unreviewed.

        * metadata/contributors.json:

2021-11-04  Roy Reapor  <rreapor@apple.com>

        Update rreapor's status in contributors.json.
        https://bugs.webkit.org/show_bug.cgi?id=232685

        Reviewed by Aakash Jain.

        * metadata/contributors.json:

2021-11-04  Diego Pino Garcia  <dpino@igalia.com>

        Disable MEDIA_SESSION_PLAYLIST in WebKitGTK and WPE
        https://bugs.webkit.org/show_bug.cgi?id=232694

        Reviewed by Žan Doberšek.

        Since the feature depends on MEDIA_SESSION_COORDINATOR, whichs is
        disabled, this feature should also be disabled and not experimental.

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

2021-11-03  Pablo Saavedra  <psaavedra@igalia.com>

        [cmake] Check "cortex" string in the CMAKE_SYSTEM_PROCESSOR for defining WTF_CPU_* vars
        https://bugs.webkit.org/show_bug.cgi?id=232623

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/WebKitCommon.cmake:

2021-11-01  Don Olmstead  <don.olmstead@sony.com>

        [Curl] Explicitly disable libcurl's internal cookie support
        https://bugs.webkit.org/show_bug.cgi?id=232586

        Reviewed by Ross Kirsling.

        Setting CURLOPT_COOKIEFILE to NULL to disable the cookie engine was not added till 7.77.0
        so require that version or later.

        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2021-11-01  David Kilzer  <ddkilzer@apple.com>

        Add ddkilzer's GitHub name to contributors.json
        <https://webkit.org/b/232587>

        Reviewed by Jonathan Bedard.

        * metadata/contributors.json:

2021-11-01  Robert Jenner  <Jenner@apple.com>

        Add my GitHub name (robert-jenner) to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232581

        Reviewed by Jonathan Bedard.

        * metadata/contributors.json:

2021-11-01  Beth Dakin  <bdakin@apple.com>

        Add my GitHub name to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232495

        Reviewed by Alexey Proskuryakov.

        * metadata/contributors.json:

2021-11-01  BJ Burg  <bburg@apple.com>

        Add bburg's GitHub username to contributors.json.

        Unreviewed.

        * metadata/contributors.json:
        Also, canonicalize a recent change.

2021-10-31  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] New GraphicsLayer for GPU process mode
        https://bugs.webkit.org/show_bug.cgi?id=228308

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWinCairo.cmake:

2021-10-29  Oriol Brufau  <obrufau@igalia.com>

        Add Aakash's GitHub username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-29  Oriol Brufau  <obrufau@igalia.com>

        Add obrufau's GitHub username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-28  Myles C. Maxfield  <mmaxfield@apple.com>

        The space glyph in the Filicudi font is not substituted by shaping in the complex text codepath, thereby breaking the visual effect of the font
        https://bugs.webkit.org/show_bug.cgi?id=232293

        Reviewed by Darin Adler.

        Big thanks to Ulrike Rausch and Frank Grießhammer for contributing the test font!!!

        * metadata/contributors.json:

2021-10-28  Aditya Keerthi  <akeerthi@apple.com>

        Add Aditya Keerthi as a reviewer
        https://bugs.webkit.org/show_bug.cgi?id=232450

        Unreviewed.

        * metadata/contributors.json:

        Add myself as a reviewer, and add GitHub username.

2021-10-27  Roy Reapor  <rreapor@apple.com>

        Add rreapor's GitHub username to contributors.json.
        https://bugs.webkit.org/show_bug.cgi?id=232385

        Reviewed by Aakash Jain.

        * metadata/contributors.json:

2021-10-26  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. [WPE] Bump version numbers

        * Source/cmake/OptionsWPE.cmake:

2021-10-26  Adrian Perez de Castro  <aperez@igalia.com>

        Multiple build issues with ENABLE_VIDEO=OFF
        https://bugs.webkit.org/show_bug.cgi?id=232264

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/WebKitFeatures.cmake: Make ENABLE_MEDIA_SESSION depend on ENABLE_VIDEO.

2021-10-25  Jonathan Bedard  <jbedard@apple.com>

        Add GitHub usernames for bedison and darinadler

        Unreviewed.

        * metadata/contributors.json: Add beidson and darinadler.

2021-10-25  Zan Dobersek  <zdobersek@igalia.com>

        Add zdobersek's GitHub name to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232234

        Unreviewed.

        * metadata/contributors.json:

2021-10-25  Martin Robinson  <mrobinson@webkit.org>

        Add mrobinson's GitHub name to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232232

        Unreviewed.

        * metadata/contributors.json:

2021-10-24  Alexey Shvayka  <ashvayka@apple.com>

        Add my GitHub username to contributors.json and update credentials

        Unreviewed.

        * metadata/contributors.json:

2021-10-22  Guillaume Emont  <guijemont@igalia.com>

        Add Guillaume Emont's github username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232144

        Unreviewed.

        * metadata/contributors.json:

2021-10-22  Pablo Correa Gómez  <ablocorrea@hotmail.com>

        Enable logging under non-systemd linux distros
        https://bugs.webkit.org/show_bug.cgi?id=232080

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindJournald.cmake: Renamed from Source/cmake/FindSystemd.cmake.
        * Source/cmake/OptionsGTK.cmake: Replace USE_SYSTEMD for
        ENABLE_JOURNALD_LOG
        * Source/cmake/OptionsWPE.cmake: Replace USE_SYSTEMD for
        ENABLE_JOURNALD_LOG

2021-10-21  Eric Carlson  <eric.carlson@apple.com>

        Add GitHub name to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=232131

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-21  Chris Lord  <clord@igalia.com>

        [WPE][GTK] Enable smooth scrolling by default
        https://bugs.webkit.org/show_bug.cgi?id=220512

        Reviewed by Carlos Garcia Campos.

        Build smooth scrolling by default on WPE to match other platforms.

        * Source/cmake/OptionsWPE.cmake:

2021-10-20  Kimmo Kinnunen  <kkinnunen@apple.com>

        Add ObjC as supported .clang-format language
        https://bugs.webkit.org/show_bug.cgi?id=230401

        Reviewed by Jonathan Bedard.

        Add ObjC and change few properties useful
        for ObjC formatting.

        * .clang-format:

2021-10-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Reenable -fvisibility=hidden and -fvisibility-inlines-hidden
        https://bugs.webkit.org/show_bug.cgi?id=222860

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWPE.cmake:

2021-10-19  Ross Kirsling  <ross.kirsling@sony.com>

        [CMake] Align OptionsMac with Xcode build
        https://bugs.webkit.org/show_bug.cgi?id=231982

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsMac.cmake:
        Ensure that the listed options (1) are not redundant with the defaults in WebKitFeatures.cmake and
        (2) match the options for the Xcode build as closely as possible.

        * Source/cmake/WebKitFeatures.cmake:
        Remove an outdated feature, ENABLE_APPLE_PAY_SESSION_V9,
        and let ENABLE_MAC_GESTURE_EVENTS be handled by PlatformEnable, since it depends on USE_APPLE_INTERNAL_SDK.

2021-10-19  Tyler Wilcock  <tyler_w@apple.com>

        Add AX team GitHub usernames to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231966

        Reviewed by Chris Fleizach.

        * metadata/contributors.json:
        Add Chris Fleizach's and Andres Gonzalez's GitHub usernames. Add Tyler
        Wilcock as a contributor. Run validate-committer-lists --canonicalize
        to fix some style issues.

2021-10-19  Sergio Villar Senin  <svillar@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-18  Ms2ger  <Ms2ger@igalia.com>

        Add my github username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231893

        Unreviewed.

        * metadata/contributors.json:

2021-10-18  Rob Buis  <rbuis@igalia.com>

        Add my github username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231889

        Reviewed by Manuel Rego Casasnovas.

        * metadata/contributors.json:

2021-10-18  Xan Lopez  <xan@igalia.com>

        Add my github username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231887

        Unreviewed.

        * metadata/contributors.json: add my github username.

2021-10-18  Miguel Gomez  <magomez@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-16  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>

        Add github username for tetsuharuohzeki to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231864

        Reviewed by Fujii Hironori.

        * metadata/contributors.json:

2021-10-16  Angelos Oikonomopoulos  <angelos@igalia.com>

        Add my github username to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231861

        Unreviewed.

        * metadata/contributors.json:

2021-10-16  Caitlin Potter  <caitp@igalia.com>

        Add github username for myself
        https://bugs.webkit.org/show_bug.cgi?id=231857

        Reviewed by Yusuke Suzuki.

        * metadata/contributors.json:

2021-10-15  Basuke Suzuki  <basuke.suzuki@sony.com>

        Add flag to turn off Iso heap
        https://bugs.webkit.org/show_bug.cgi?id=231823

        Reviewed by Yusuke Suzuki.

        Added USE_ISO_MALLOC feature flags which is on by default for most platforms.

        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-10-15  Ross Kirsling  <ross.kirsling@sony.com>

        Realize Mac CMake build of WebCore and WebKit
        https://bugs.webkit.org/show_bug.cgi?id=231749

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitMacros.cmake:

2021-10-15  Jonathan Bedard  <jbedard@apple.com>

        Add github username for Dewei Zhu

        Unreviewed.

        * metadata/contributors.json:

2021-10-15  Andres Gonzalez  <andresg_22@apple.com>

        Change Andres Gonzalez status to reviewer.
        https://bugs.webkit.org/show_bug.cgi?id=231738

        Reviewed by Chris Fleizach.

        * metadata/contributors.json:

2021-10-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK build with ubuntu 18.04

        GLib version bump in r284152 was too high for ubuntu 18.04 even though it followed our dependencies policy.

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

2021-10-14  Ali Juma  <ajuma@chromium.org>

        Add my GitHub username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-14  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        Add my GitHub username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-14  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r283878.
        https://bugs.webkit.org/show_bug.cgi?id=231735

        It

        Reverted changeset:

        "[WPE] Reenable -fvisibility=hidden and -fvisibility-inlines-
        hidden"
        https://bugs.webkit.org/show_bug.cgi?id=222860
        https://commits.webkit.org/r283878

2021-10-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump GLib version to 2.58.3
        https://bugs.webkit.org/show_bug.cgi?id=231726

        Reviewed by Philippe Normand.

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

2021-10-14  Enrique Ocaña González  <eocanha@igalia.com>

        [contributors.json] Add eocanha github account and canonicalize
        https://bugs.webkit.org/show_bug.cgi?id=231729

        Unreviewed.

        Added eocanha github user to contributors.json and canonicalize the file to make the style checker happy.

        * metadata/contributors.json:

2021-10-13  Tim Horton  <timothy_horton@apple.com>

        Add my GitHub username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-12  Alex Christensen  <achristensen@webkit.org>

        Add webpushd executable
        https://bugs.webkit.org/show_bug.cgi?id=231650

        Reviewed by Brady Eidson.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2021-10-12  Basuke Suzuki  <basuke.suzuki@sony.com>

        [PlayStation] Enable RemoteInspector by default
        https://bugs.webkit.org/show_bug.cgi?id=231599

        Reviewed by Fujii Hironori.

        It was treated as experimental feature but we've depended on this feature in various situation.

        * Source/cmake/OptionsPlayStation.cmake:

2021-10-12  Philippe Normand  <pnormand@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Patrick Griffis  <pgriffis@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Sam Weinig  <weinig@apple.com>

        Add my github username and keep my expertise where it is because, while not up to date, it is fun

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Theresa O'Connor  <hober@apple.com>

        Various updates to my contributors.json entry.

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Devin Rousso  <drousso@apple.com>

        Add my github and update my expertise

        Unreviewed.

        * metadata/contributors.json:

2021-10-10  Noam Rosenthal  <noam@webkit.org>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-11 Emilio Cobos Álvarez  <emilio@crisal.io>

        Add my GitHub username to contributors.json.
        https://bugs.webkit.org/show_bug.cgi?id=231507

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Claudio Saavedra  <csaavedra@igalia.com>

        Add my github username to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-11  Diego Pino Garcia  <dpino@igalia.com>

        Add GitHub username for Diego Pino Garcia

        Unreviewed.

        * metadata/contributors.json:

2021-10-10  Pablo Saavedra  <psaavedra@igalia.com>

        Add GitHub username for Pablo Saavedra

        Unreviewed.

        * metadata/contributors.json:

2021-10-10  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        Unreviewed. Add GitHub username for Xabier Rodriguez Calvar

        * metadata/contributors.json:

2021-10-10  Cameron McCormack  <heycam@apple.com>

        Add GitHub account to contributors.json
        https://bugs.webkit.org/show_bug.cgi?id=231497

        Unreviewed.

        * metadata/contributors.json:

2021-10-10  Michael Catanzaro  <mcatanzaro@gnome.org>

        [WPE] Reenable -fvisibility=hidden and -fvisibility-inlines-hidden
        https://bugs.webkit.org/show_bug.cgi?id=222860

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsWPE.cmake:

2021-10-10  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Add GitHub username for Adrian Perez de Castro

        While at it, run "validate-committer-lists --canonicalize".

        * metadata/contributors.json:

2021-10-09  Alberto Garcia  <berto@igalia.com>

        Add GitHub account to contributors.json

        Unreviewed.

        * metadata/contributors.json:

2021-10-09  Jean-Yves Avenard  <jya@apple.com>

        Unreviewed, add my GitHub username

        * metadata/contributors.json:

2021-10-09  Manuel Rego Casasnovas  <rego@igalia.com>

        Add GitHub account to contributors.json and update expertise field
        https://bugs.webkit.org/show_bug.cgi?id=231476

        Unreviewed.

        * metadata/contributors.json:

2021-10-08  Joonghun Park  <jh718.park@samsung.com>

        Unreviewed. Add github username for Joonghun Park.

        * metadata/contributors.json:

2021-10-08  Jonathan Bedard  <jbedard@apple.com>

        Add github username for Michael Catanzaro

        Unreviewed.

        * metadata/contributors.json:

2021-10-08  Kenneth Russell  <kbr@chromium.org>

        Add github username for kbr
        https://bugs.webkit.org/show_bug.cgi?id=231462

        Reviewed by Dean Jackson.

        * metadata/contributors.json:

2021-10-08  Ross Kirsling  <ross.kirsling@sony.com>

        Unreviewed, add GitHub usernames for Sony contributors.

        * metadata/contributors.json:

2021-10-08  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, add my GitHub username

        * metadata/contributors.json:

2021-10-08  Tim Nguyen  <ntim@apple.com>

        [contributors.json] Add more Github usernames
        https://bugs.webkit.org/show_bug.cgi?id=231453

        Reviewed by Jonathan Bedard.

        * metadata/contributors.json:

2021-10-08  Jonathan Bedard  <jbedard@apple.com>

        [contributors.json] Support GitHub usernames
        https://bugs.webkit.org/show_bug.cgi?id=231400
        <rdar://problem/84005266>

        Reviewed by Dewei Zhu.

        * metadata/contributors.json: Add some GitHub usernames.

2021-10-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Reenable -fvisibility=hidden
        https://bugs.webkit.org/show_bug.cgi?id=181916

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsGTK.cmake:

2021-10-06  Chris Dumez  <cdumez@apple.com>

        Unreviewed, mark Kimmo Kinnunen as reviewer in the right contributors.json file this time.

        * metadata/contributors.json:

2021-10-03  Basuke Suzuki  <basuke.suzuki@sony.com>

        Enable release log to stderr
        https://bugs.webkit.org/show_bug.cgi?id=230725
        <rdar://problem/83740529>

        Reviewed by Michael Catanzaro.

        Introduced new flags, USE_LOG_STDERR for release logging to stderr.

        * Source/cmake/WebKitFeatures.cmake:

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

        [GTK][WPE] Enable bwrap launcher build on bots
        https://bugs.webkit.org/show_bug.cgi?id=230969

        Reviewed by Michael Catanzaro.

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

2021-09-30  Yusuke Suzuki  <ysuzuki@apple.com>

        Upgrade GCC requirement to 8.3.0
        https://bugs.webkit.org/show_bug.cgi?id=231042

        Reviewed by Darin Adler.

        Based on the roadmap[1], we upgrade GCC requirement to 8.3.0, which is default GCC in Debian one-old-stable (buster) right now.
        This paves the way to enabling some of useful C++20 features, e.g. default initializer for bitfields.

        [1]: https://trac.webkit.org/wiki/WebKitGTK/GCCRequirement

        * Source/cmake/WebKitCommon.cmake:

2021-09-29  Kimmo Kinnunen  <kkinnunen@apple.com>

        MediaStream canvas.captureStream() fails for WebGL
        https://bugs.webkit.org/show_bug.cgi?id=230613
        <rdar://82307293>

        Reviewed by Youenn Fablet.

        Add a manual test to interact with media stream
        captureStream() behavior until the implementation is
        testable.

        * ManualTests/mediastream/mediastream-canvas-to-video.html: Added.

2021-09-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 3.0.0
        https://bugs.webkit.org/show_bug.cgi?id=230601

        Reviewed by Philippe Normand.

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

2021-09-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MSVC] The "/Zc:lambda" switch is recommended to use the new lambda processor.
        https://bugs.webkit.org/show_bug.cgi?id=226070

        Reviewed by Ross Kirsling.

        Visual Studio 16.5 added the "/Zc:lambda" switch for the better
        C++ conformance, but it had a compiler crashing bug. Visual Studio
        16.9 fixed the bug.

        * Source/cmake/OptionsMSVC.cmake: Added /Zc:lambda for Visual
        Studio 16.9 or later. I will remove the MSVC_VERSION check after
        AppleWin bots will upgrade MSVC.

2021-09-17  Angelos Oikonomopoulos  <angelos@igalia.com>

        Unbreak GCC_OFFLINEASM_SOURCE_MAP when LTO is in use
        https://bugs.webkit.org/show_bug.cgi?id=230061
        <rdar://problem/83166173>

        Reviewed by Michael Catanzaro.

        * Source/cmake/OptionsCommon.cmake:

        Re-enable GCC_OFFLINEASM_SOURCE_MAP.

2021-09-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Bump version numbers

        * Source/cmake/OptionsGTK.cmake:

2021-09-17  Martin Robinson  <mrobinson@webkit.org>

        Add Martin Robinson as a reviewer
        https://bugs.webkit.org/show_bug.cgi?id=230392

        Unreviewed.

        * metadata/contributors.json: Add myself as a reviewer and update my specializations.

2021-09-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][a11y] Add a build option to enable ATSPI
        https://bugs.webkit.org/show_bug.cgi?id=230254

        Reviewed by Adrian Perez de Castro.

        Add USE_ATSPI build option that disables ATK and enables isolated tree.

        * Source/cmake/OptionsGTK.cmake:

2021-09-16  Philip Chimento  <pchimento@igalia.com>

        Fixes for build-webkit --minimal
        https://bugs.webkit.org/show_bug.cgi?id=229780

        Reviewed by Fujii Hironori.

        Remove ENABLE_RESIZE_OBSERVER build-time option. This option is
        quite broken if you try to disable it.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-09-15  Philip Chimento  <pchimento@igalia.com>

        Fixes for build-webkit --minimal
        https://bugs.webkit.org/show_bug.cgi?id=229780

        Reviewed by Fujii Hironori.

        Remove ENABLE_INTERSECTION_OBSERVER build-time option. This option is
        quite broken if you try to disable it.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-09-14  John Wilander  <wilander@apple.com>

        Rename RESOURCE_LOAD_STATISTICS to INTELLIGENT_TRACKING_PREVENTION
        https://bugs.webkit.org/show_bug.cgi?id=230279
        <rdar://problem/83118683>

        Reviewed by Darin Adler.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-09-14  Hoa Dinh  <dvh@apple.com>

        Add dvh@apple.com to the list of contributors.
        https://bugs.webkit.org/show_bug.cgi?id=230276

        Reviewed by Jonathan Bedard.

        * metadata/contributors.json:

2021-09-13  Sam Sneddon  <gsnedders@apple.com>

        Move ENABLE_RESOLUTION_MEDIA_QUERY to a runtime flag, start running tests again
        https://bugs.webkit.org/show_bug.cgi?id=229776

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-09-11  Philippe Normand  <pnormand@igalia.com>

        [GLIB] MediaSession is not enabled
        https://bugs.webkit.org/show_bug.cgi?id=217991
        <rdar://problem/70740119>

        Reviewed by Michael Catanzaro.

        Enable MediaSession as an experimental build feature in CMake ports. The spec status is
        currently Draft.

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

2021-09-08  Justin Michaud  <justin_michaud@apple.com>

        Change Justin Michaud's primary email to apple.com
        https://bugs.webkit.org/show_bug.cgi?id=230069

        Reviewed by Robin Morisset.

        * metadata/contributors.json:

2021-09-07  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Support prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=229976

        Reviewed by Don Olmstead.

        Just turned on ENABLE_DARK_MODE_CSS and HAVE_OS_DARK_MODE_SUPPORT.
        It's always the light mode.

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

2021-09-06  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] Prefer python3 over python2
        https://bugs.webkit.org/show_bug.cgi?id=229969

        Reviewed by Michael Catanzaro.

        Use the CMake module FindPython instead of FindPythonInterp.
        FindPython looks preferably for version 3 of Python. If not found, then it looks for version 2.

        * Source/cmake/WebKitCommon.cmake:

2021-09-03  Michael Catanzaro  <mcatanzaro@gnome.org>

        Disable GCC_OFFLINEASM_SOURCE_MAP
        https://bugs.webkit.org/show_bug.cgi?id=229893

        Unreviewed, this fixes build failures caused by invalid assembler sources.

        * Source/cmake/OptionsCommon.cmake:

2021-09-01  Jonathan Bedard  <jbedard@apple.com>

        [contributors.json] Relocation (Part 2)
        https://bugs.webkit.org/show_bug.cgi?id=229690
        <rdar://problem/82552403>

        Reviewed by Dewei Zhu.

        * metadata/contributors.json: Convert from dictionary to list.

2021-09-01  Jonathan Bedard  <jbedard@apple.com>

        [contributors.json] Relocation (Part 1)
        https://bugs.webkit.org/show_bug.cgi?id=229690
        <rdar://problem/82552403>

        Reviewed by Aakash Jain.

        * metadata/contributors.json: Copied from Tools/Scripts/webkitpy/common/config/contributors.json.

2021-08-30  Zan Dobersek  <zdobersek@igalia.com>

        RISCV64 support in LLInt
        https://bugs.webkit.org/show_bug.cgi?id=229035
        <rdar://problem/82120908>

        Reviewed by Yusuke Suzuki.

        * Source/cmake/WebKitFeatures.cmake:
        Don't force CLoop to be default for RISCV64 anymore.

2021-08-27  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation][CMake] Add control over whether JavaScriptCore should be shared
        https://bugs.webkit.org/show_bug.cgi?id=229591

        Add option for controlling whether to build a shared JavaScriptCore and
        set build type for that appropriately.

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:

2021-08-27  Russell Epstein  <repstein@apple.com>

        Land Windows build fixes from safari-612.1.29.14-branch.
        https://bugs.webkit.org/show_bug.cgi?id=229627

        Reviewed by Per Arne Vollan.

        * Source/Makefile:
        * Source/cmake/WinTools.make:

2021-08-27  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake] ICU 61.2 is required to build WebKit since r281375
        https://bugs.webkit.org/show_bug.cgi?id=229608

        Reviewed by Yusuke Suzuki.

        Raise the minimum version required for ICU.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2021-08-25  Myles C. Maxfield  <mmaxfield@apple.com>

        Add command to enable logging in the docs
        https://bugs.webkit.org/show_bug.cgi?id=229419

        Reviewed by Dean Jackson.

        * Introduction.md:

2021-08-20  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        REGRESSION(r274166): [GTK] It broke run-javascriptcore-tests causing all tests to use lot of memory
        https://bugs.webkit.org/show_bug.cgi?id=229321

        Unreviewed, reverting r274166 because it caused JSC tests to use too much memory.

        Reverted changeset:
                "[GTK] Reenable -fvisibility=hidden"
                https://bugs.webkit.org/show_bug.cgi?id=181916
                https://commits.webkit.org/r274166

        * Source/cmake/OptionsGTK.cmake:

2021-08-16  David Kilzer  <ddkilzer@apple.com>

        "make analyze" should run clang static analyzer in deep mode
        <https://webkit.org/b/229127>
        <rdar://problem/81960587>

        Reviewed by Alexey Proskuryakov.

        * Makefile.shared:
        - Add "analyze" argument to xcodebuild command when invoking
          "make analyze" to run clang static analyzer in deep mode.
          Simplify "make analyze" since $(PATH_TO_SCAN_BUILD) does not
          need to be set.

2021-08-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.33.3 release

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

2021-08-09  Myles C. Maxfield  <mmaxfield@apple.com>

        Update logging docs after r280758
        https://bugs.webkit.org/show_bug.cgi?id=228899

        Reviewed by Fujii Hironori.

        Add more information about logging.

        * Introduction.md:

2021-08-05  Michael Catanzaro  <mcatanzaro@gnome.org>

        GCC 11 builds should use -Wno-array-bounds, -Wno-nonnull
        https://bugs.webkit.org/show_bug.cgi?id=228601

        Reviewed by Carlos Garcia Campos.

        Prior to GCC 11, these were good warnings that could catch serious errors. But GCC 11 has
        just become too sensitive and it's flagging what appear to be harmless cases, and not
        providing enough feedback to know why. This has resulted in me littering our code with
        pragmas to suppress GCC's false positives, and I think it's reached the point where it's
        nicer to just turn off the warnings until such time that GCC gets this under control, and
        rely on Clang instead in the meantime.

        The GCC developers have indicated that these warnings will *always* produce false positives
        in some circumstances, but with GCC 11 it's just too become too much IMO.

        * Source/cmake/WebKitCompilerFlags.cmake:

2021-07-30  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Fix fallback methods in the libgcrypt find module
        https://bugs.webkit.org/show_bug.cgi?id=228581

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindLibGcrypt.cmake: Make sure to use the libgcrypt-config script as
        first fallback if libgcrypt.pc is not present, and fix the regexp used as last fallback
        that checks the version from the gcrypt.h header as last fallback to only include digits
        and periods.

2021-07-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Stop building WebGPU and the WHLSL compiler to decrease binary size
        https://bugs.webkit.org/show_bug.cgi?id=228179

        Reviewed by Dean Jackson, Robin Morisset, and Devin Rousso.

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

2021-07-29  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Fix missing libgpg-error not added to link commands as libgcrypt dep after r280423
        https://bugs.webkit.org/show_bug.cgi?id=228581

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindLibGcrypt.cmake: Manually search for libgpg-error, which is not listed
        in libgcrypt.pc as a dependency, add an imported target for it, and add it as a dependency
        of LibGcrypt::LibGcrypt to avoid missing symbols at link time.

2021-07-29  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Use an imported target for the libgcrypt library
        https://bugs.webkit.org/show_bug.cgi?id=228581

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindLibGcrypt.cmake: Replaced find module by a new one which defines a
        LibGcrypt::LibGcrypt imported target, using more modern CMake constructs.
        * Source/cmake/OptionsGTK.cmake: Use the LibGcrypt::LibGcrypt imported target.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2021-07-28  Philippe Normand  <pnormand@igalia.com>

        [WPE][GTK] SVN_REVISION drifting away if bots don't re-run cmake
        https://bugs.webkit.org/show_bug.cgi?id=228290

        Reviewed by Michael Catanzaro.

        The CMake configure_file() is now used only tarball builds for files requiring information
        about the build revision. For developer builds a custom target now takes care of keeping
        those files up-to-date.

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

2021-07-27  Zan Dobersek  <zdobersek@igalia.com>

        [CMake] Add WTF_CPU_RISCV64
        https://bugs.webkit.org/show_bug.cgi?id=228322

        Reviewed by Adrian Perez de Castro.

        Define the WTF_CPU_RISCV64 CMake macro when the specified system
        processor name begins with 'riscv64'. This should also cover potential
        RISC-V processor names ingrained with specific ISA extensions that are
        then detectable at compile-time through specified C macros.

        For WTF_CPU_RISCV64, default to disabling JIT and FTL features at the
        CMake level until they are properly supported. Defaulting to system
        malloc can already be avoided, but CLoop is necessary for now.

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

2021-07-25  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] USE_OPENGL_OR_ES should not be an automagic feature
        https://bugs.webkit.org/show_bug.cgi?id=228266

        Reviewed by Fujii Hironori.

        The USE_OPENGL_OR_ES feature flag added in r271220 is currently automagic: that is, if
        neither OpenGL nor OpenGL ES is available at build time, it gets silently disabled. This is
        not OK because it makes it easy for distributors to accidentally fail to enable OpenGL
        support. We should require manually disabling the feature with -DUSE_OPENGL_OR_ES=OFF in
        order to build with OpenGL disabled.

        * Source/cmake/OptionsGTK.cmake:

2021-07-23  Philippe Normand  <pnormand@igalia.com>

        [GLib] Remove libportal dependency
        https://bugs.webkit.org/show_bug.cgi?id=228056

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindLIBPORTAL.cmake: Removed.
        * Source/cmake/GStreamerChecks.cmake:

2021-07-16  Alexander Mikhaylenko  <alexm@gnome.org>

        [GTK][WPE] Support color-schemes CSS property
        https://bugs.webkit.org/show_bug.cgi?id=208204

        Reviewed by Adrian Perez de Castro.

        * Source/cmake/OptionsGTK.cmake:
        Enable HAVE_OS_DARK_MODE_SUPPORT.
        * Source/cmake/OptionsWPE.cmake:
        Enable ENABLE_DARK_MODE_CSS and HAVE_OS_DARK_MODE_SUPPORT.

2021-07-15  Philippe Normand  <pnormand@igalia.com>

        Unreviewed, CMake fix-up after r279940

        * Source/cmake/FindLIBPORTAL.cmake: Fix libportal detection.

2021-07-15  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][Pipewire] Implement getDisplayMedia() backend
        https://bugs.webkit.org/show_bug.cgi?id=210926

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/FindLIBPORTAL.cmake: Added.
        * Source/cmake/GStreamerChecks.cmake: Enable Pipewire support if libportal was found.

2021-07-13  Michael Catanzaro  <mcatanzaro@gnome.org>

        Remove USE_64KB_PAGE_BLOCK
        https://bugs.webkit.org/show_bug.cgi?id=227905

        Reviewed by Yusuke Suzuki.

        I added the USE_64KB_PAGE_BLOCK build option in bug #217989 for use by RHEL. But going
        forward, I don't need it anymore, and can maintain it downstream where it is needed. (This
        option might also be useful to SUSE, but they already don't use it, so won't miss it.)

        I've seen users who don't understand the consequences of this option enabling it on x86_64,
        even though there are serious negative consequences and zero benefits to using it. So let's
        get rid of it.

        * Source/cmake/WebKitFeatures.cmake:

2021-07-13  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Expose support for client certificate auth
        https://bugs.webkit.org/show_bug.cgi?id=200805

        Reviewed by Michael Catanzaro.

        Bump libsoup3 required version.

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

2021-06-24  Zan Dobersek  <zdobersek@igalia.com>

        REGRESSION(r236846): WPE shouldn't depend on OpenGL ES 3
        https://bugs.webkit.org/show_bug.cgi?id=227289

        Reviewed by Adrian Perez de Castro.

        * Source/cmake/OptionsWPE.cmake: Drop the OpenGLES2 package search.
        None of the possible versions are meaningful because libepoxy is used
        as the underlying GL relay.

2021-06-24  Martin Robinson  <mrobinson@webkit.org>

        [css-scroll-snap] Remove ENABLE_SCROLL_SNAP compile-time option
        https://bugs.webkit.org/show_bug.cgi?id=227067

        Reviewed by Simon Fraser.

        Remove compile-time ENABLE_SCROLL_SNAP configuration option.

        * Source/cmake/WebKitFeatures.cmake: Remove the flag from the CMake configuration.

2021-06-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Turn ENABLE_SHAREABLE_RESOURCE on
        https://bugs.webkit.org/show_bug.cgi?id=227011

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWin.cmake: Turned ENABLE_SHAREABLE_RESOURCE on for WinCairo port.

2021-06-18  Sergio Villar Senin  <svillar@igalia.com>

        Ignore clangd's directory with index files
        https://bugs.webkit.org/show_bug.cgi?id=227162

        Reviewed by Žan Doberšek.

        clangd stores its indexes in a .cache directory. Let git ignore it.

        * .gitignore:

2021-06-11  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.33.2 release

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

2021-06-10  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [CMake][GTK][WPE] Improve error message when libsoup3 is not found
        https://bugs.webkit.org/show_bug.cgi?id=226905

        Reviewed by Adrian Perez de Castro.

        When libsoup 3 is not found be more clear about the problem and
        offer possible workaround to continue the build.

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

2021-06-10  Philippe Normand  <pnormand@igalia.com>

        [WPE] Enable Cog for developer builds
        https://bugs.webkit.org/show_bug.cgi?id=224360

        Reviewed by Adrian Perez de Castro.

        Cog would be preferred over MiniBrowser for WPE developer builds because it provides a nicer
        user experience, while keeping the same spirit as MiniBrowser. Pass `-DENABLE_COG=NO` to
        CMake to disable it and fall back to MiniBrowser.

        * Source/cmake/OptionsWPE.cmake:

2021-06-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.33.2 release

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

2021-06-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 2.99.8
        https://bugs.webkit.org/show_bug.cgi?id=226713

        Reviewed by Philippe Normand.

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

2021-06-04  Per Arne Vollan  <pvollan@apple.com>

        [AppleWin] JSC build failure
        https://bugs.webkit.org/show_bug.cgi?id=226659
        <rdar://78844190>

        Reviewed by Brent Fulgham.

        WTF scripts location is not being correctly identified.

        * Source/cmake/OptionsAppleWin.cmake:

2021-06-04  Martin Robinson  <mrobinson@webkit.org>

        [Win] Implement scroll-snap-points on Windows
        https://bugs.webkit.org/show_bug.cgi?id=142503
        <rdar://problem/20093603>

        Reviewed by Simon Fraser.

        * Source/cmake/OptionsWin.cmake: Stop disabling scroll-snap for Apple Win port.

2021-05-27  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add check for timingsafe_bcmp
        https://bugs.webkit.org/show_bug.cgi?id=226347

        Reviewed by Chris Dumez.

        Adds a symbol check for timingsafe_bcmp and sets HAVE_TIMINGSAFE_BCMP accordingly in the
        cmakeconfig.h.

        * Source/cmake/OptionsCommon.cmake:

2021-05-27  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.33.1 release

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

2021-05-27  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. [WPE] Bump version numbers

        * Source/cmake/OptionsWPE.cmake:

2021-05-26  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Support USE_ANGLE_EGL on additional platforms
        https://bugs.webkit.org/show_bug.cgi?id=224888
        <rdar://problem/77280211>

        Reviewed by Ken Russell.

        USE_ANGLE_EGL is for platforms that want to use ANGLE as the sole OpenGL ES implementation
        within WebKit. This setting is applicable to Mac and Windows platforms. USE_ANGLE_WEBGL is
        just for platforms that want to use ANGLE for WebGL 2.0 support only. Any other uses of
        OpenGL should go through the system OpenGL (desktop or embedded). This setting applies to
        GTK.

        The platform options were modified to match this. 

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:

2021-05-25  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Implement FileSystem without std::filesystem
        https://bugs.webkit.org/show_bug.cgi?id=226197

        Reviewed by Chris Dumez.

        Expose the result of the check for <filesystem> support as HAVE_STD_FILESYSTEM.

        * Source/cmake/OptionsCommon.cmake:

2021-05-18  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Fix PlayStation port
        https://bugs.webkit.org/show_bug.cgi?id=225913

        Reviewed by Don Olmstead.

        Fix PlayStation port

        * Source/cmake/OptionsPlayStation.cmake: Rename
        PLAYSTATION_COPY_SHARED_LIBRARIES to PLAYSTATION_COPY_REQUIREMENTS and
        let it copy more general files.
        Touch ebootparam.ini by the playstation_tools_copy custom_target.

2021-05-15  Sam Weinig  <weinig@apple.com>

        Allow conditionally enabling OffscreenCanvas only for non-worker contexts
        https://bugs.webkit.org/show_bug.cgi?id=225845

        Reviewed by Darin Adler.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Match current behavior of ENABLE_OFFSCREEN_CANVAS for ENABLE_OFFSCREEN_CANVAS_IN_WORKERS.

2021-05-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.33.1 release

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

2021-05-14  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Fix make distcheck

        Use WEBKITGTK_API_DOC_VERSION instead of WEBKITGTK_API_VERSION or the documentation install rules.

        * Source/PlatformGTK.cmake:

2021-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 2.99.5
        https://bugs.webkit.org/show_bug.cgi?id=225506

        Reviewed by Philippe Normand.

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

2021-05-06  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [OpenSSL] Implement CryptoAlgorithmRSA*
        https://bugs.webkit.org/show_bug.cgi?id=225294

        Reviewed by Don Olmstead.

        Implement RSA for OpenSSL.

        Implement CryptoAlgorithmRSA_OAEP, CryptoAlgorithmRSA_PSS,
        CryptoAlgorithmRSAES_PKCS1_v1_5, CryptoAlgorithmRSASA_PKCS1_v1_5,
        and CryptoKeyRSA for OpenSSL.

        Note that if such OpenSSL version that does not support RSA_OAEP or
        RSA_PSS, the WebCrypto API for those algorithm will return a
        NotSupportedError.

        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2021-05-05  Michael Catanzaro  <mcatanzaro@gnome.org>

        USE_64KB_PAGE_BLOCK build option is broken
        https://bugs.webkit.org/show_bug.cgi?id=225393

        Reviewed by Adrian Perez de Castro.

        Call SET_AND_EXPOSE_TO_BUILD().

        * Source/cmake/WebKitFeatures.cmake:

2021-05-05  Michael Catanzaro  <mcatanzaro@gnome.org>

        Fix typo in comment in WebKitFeatures.cmake
        https://bugs.webkit.org/show_bug.cgi?id=225392

        Unreviewed.

        * Source/cmake/WebKitFeatures.cmake:

2021-04-27  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Don't use FORWARDING_HEADERS_DIR for GTK WebKit headers
        https://bugs.webkit.org/show_bug.cgi?id=225006

        Reviewed by Michael Catanzaro.

        Create CMake variables WebKit2Gtk_FRAMEWORK_HEADERS_DIR and WebKit2Gtk_DERIVED_SOURCES_DIR
        to represent where the WebKit2 GTK headers and derived sources will reside. The names and
        locations set then follow along with the conventions used for the other frameworks.

        * Source/cmake/OptionsGTK.cmake:

2021-04-26  Alex Christensen  <achristensen@webkit.org>

        Update Mac-specific CMake files
        https://bugs.webkit.org/show_bug.cgi?id=225064

        Rubber-stamped by Tim Horton.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitCommon.cmake:

2021-04-26  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Fix build break after r276368
        https://bugs.webkit.org/show_bug.cgi?id=225056

        Reviewed by Ross Kirsling.

        Ensure that the OpenGL::GLES target is created.

        * Source/cmake/OptionsPlayStation.cmake:

2021-04-22  Martin Robinson  <mrobinson@webkit.org>

        [GTK] Turn on editable <input type=date> and <input type=time> fields
        https://bugs.webkit.org/show_bug.cgi?id=224921

        Reviewed by Carlos Garcia Campos.

        Turn on editable date and time inputs for GTK

        * Source/cmake/OptionsGTK.cmake: Add new source file to the list.

2021-04-22  Imanol Fernandez  <ifernandez@igalia.com>

        Implement WebXR Input Sources
        https://bugs.webkit.org/show_bug.cgi?id=223257

        Reviewed by Youenn Fablet.

        Enable WPE Gamepad when WebXR is enabled.

        * Source/cmake/OptionsWPE.cmake:

2021-04-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Add support for preconnect
        https://bugs.webkit.org/show_bug.cgi?id=177934

        Reviewed by Sergio Villar Senin.

        Enable server preconnect support when building with libsoup3.

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

2021-04-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 2.99.4
        https://bugs.webkit.org/show_bug.cgi?id=224925

        Reviewed by Philippe Normand.

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

2021-04-21  Martin Robinson  <mrobinson@igalia.com>

        Enable CSS Scroll Snap by default
        https://bugs.webkit.org/show_bug.cgi?id=224867

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsFTW.cmake: Remove redundant line enabling scroll snap.
        * Source/cmake/OptionsGTK.cmake: Ditto.
        * Source/cmake/OptionsMac.cmake: Ditto.
        * Source/cmake/OptionsWPE.cmake: Ditto.
        * Source/cmake/OptionsWin.cmake: Explicitly disable scroll snap for AppleWin port
        until it can be approved by maintainers.
        * Source/cmake/WebKitFeatures.cmake: Enable scroll snap by default.

2021-04-21  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add OpenGLES2 targets
        https://bugs.webkit.org/show_bug.cgi?id=224786

        Reviewed by Adrian Perez de Castro.

        Modernize the FindOpenGLES2.cmake module. Add an OpenGL::GLES target. Also add an
        OpenGLES2_API_VERSION value so HAVE_OPENGL_ES_3 can be determined.

        For WPE add a find_package for OpenGL ES so the target is present.

        For GTK set HAVE_OPENGL_ES_3 if OpenGLES2_API_VERSION supports it.

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

2021-04-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Don't use FORWARDING_HEADERS_DIR for JSC GLib headers
        https://bugs.webkit.org/show_bug.cgi?id=224821

        Reviewed by Michael Catanzaro.

        Create CMake variables JavaScriptCoreGLib_FRAMEWORK_HEADERS_DIR and
        JavaScriptCoreGLib_DERIVED_SOURCES_DIR to represent where the JavaScriptCore GLib headers
        and derived sources will reside. The names and locations set then follow along with the
        conventions used for the other frameworks.

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

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

        [WPE] Switch to libsoup3 by default
        https://bugs.webkit.org/show_bug.cgi?id=224802

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsWPE.cmake:

2021-04-19  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Switch to libsoup3 by default
        https://bugs.webkit.org/show_bug.cgi?id=224741

        Reviewed by Sergio Villar Senin.

        * Source/cmake/OptionsGTK.cmake:

2021-04-19  Philippe Normand  <pnormand@igalia.com>

        [WPE][GTK] Enable AVIF decoder as experimental feature and unskip tests
        https://bugs.webkit.org/show_bug.cgi?id=224663

        Reviewed by Xabier Rodriguez-Calvar.

        Make the USE_AVIF option public and enable it as experimental feature.

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

2021-04-16  Philippe Normand  <pnormand@igalia.com>

        [CMake] UBSan build fixes
        https://bugs.webkit.org/show_bug.cgi?id=224536

        Reviewed by Adrian Perez de Castro.

        Synchronize UBSan compiler flags with the ones defined in ubsan.xcconfig.

        * Source/cmake/WebKitCompilerFlags.cmake:

2021-04-15  Don Olmstead  <don.olmstead@sony.com>

        ANGLE is only being built when WebGL is enabled
        https://bugs.webkit.org/show_bug.cgi?id=224555

        Reviewed by Fujii Hironori.

        ANGLE should be built if either USE_ANGLE_EGL or ENABLE_WEBGL is ON.

        * Source/CMakeLists.txt:

2021-04-15  Basuke Suzuki  <basuke.suzuki@sony.com>

        Remove warnings caused by export g_config extern definition in WTFConfig.h
        https://bugs.webkit.org/show_bug.cgi?id=224462

        Reviewed by Don Olmstead.

        While building PlayStation port, lots of warnings are displayed:

        > WTF/Headers\wtf/WTFConfig.h:49:36: warning: redeclaration of 'WebConfig::g_config'
        > should not add 'dllimport' attribute [-Wdll-attribute-on-redeclaration]
        > extern "C" WTF_EXPORT_PRIVATE Slot g_config[];
        >                                    ^
        > bmalloc/Headers\bmalloc/GigacageConfig.h:38:17: note: previous declaration is here
        > extern "C" Slot g_config[];

        This is because the two definitions are not same.
        Becasue we can't solve the situation completely, we just ignore these warnings at
        this morment.

        * Source/cmake/OptionsPlayStation.cmake:

2021-04-15  Philippe Normand  <pnormand@igalia.com>

        [WebRTC][GStreamer] Build and use the openh264 based encoder if present on the system
        https://bugs.webkit.org/show_bug.cgi?id=202538
        <rdar://problem/76047172>

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/CMakeLists.txt:
        * Source/cmake/GStreamerChecks.cmake:

2021-04-14  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Disable WebGL
        https://bugs.webkit.org/show_bug.cgi?id=224562

        Reviewed by Alex Christensen.

        WebGL support on PlayStation platforms is deprecated.

        * Source/cmake/OptionsPlayStation.cmake:

2021-04-13  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Avif decoder build broken
        https://bugs.webkit.org/show_bug.cgi?id=224232

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Require 0.9.0 due to avifIO usage in the decoder.

2021-04-09  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 2.99.3
        https://bugs.webkit.org/show_bug.cgi?id=224362

        Reviewed by Žan Doberšek.

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

2021-04-07  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] webkit://gpu should print runtime libwpe and wpebackend-fdo versions
        https://bugs.webkit.org/show_bug.cgi?id=224298

        Reviewed by Adrian Perez de Castro.

        * Source/cmake/OptionsGTK.cmake:

2021-04-07  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Mark _LIBRARY not _LIBRARIES in find modules
        https://bugs.webkit.org/show_bug.cgi?id=224283

        Reviewed by Michael Catanzaro.

        A few find modules are erroniously sending _LIBRARIES to mark_as_advanced rather than
        _LIBRARY. The former is created from the _LIBRARY value so it isn't valid at that point.

        * Source/cmake/FindCairo.cmake:
        * Source/cmake/FindFontconfig.cmake:
        * Source/cmake/FindSQLite3.cmake:

2021-04-07  Kimmo Kinnunen  <kkinnunen@apple.com>

        .gitignore contains 'build/' which causes all directories named 'build/' to be ignored
        https://bugs.webkit.org/show_bug.cgi?id=224227

        Reviewed by Ryosuke Niwa.

        Remove 'build/' from .gitignore, it was causing errors by hiding files.
        WebGL conformance test suite files have directiories with 'build/' in its path.

        Most likely '/build/' is not a common build directory, since the scripts
        seem to default to '/WebKitBuild/'.

        * .gitignore:

2021-04-06  Philippe Normand  <pnormand@igalia.com>

        REGRESSION(r275275): Broke some build configs lacking openh264
        https://bugs.webkit.org/show_bug.cgi?id=224244

        Unreviewed, manual revert of r275275 and r275409.

        * Source/CMakeLists.txt:
        * Source/cmake/GStreamerChecks.cmake:

2021-04-06  Mark Lam  <mark.lam@apple.com>

        Speculative build fix for Windows port.
        https://bugs.webkit.org/show_bug.cgi?id=224243
        rdar://75883248

        Reviewed by Saam Barati.

        Source/cmake/tools/scripts/auto-version.pl was limiting our `minor` and `micro`
        version to only 2 decimal digits only.  In practice, we can use up to 3 digits.

        * Source/cmake/tools/scripts/auto-version.pl:
        (packTwoValues):

2021-04-05  Alex Christensen  <achristensen@webkit.org>

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

        Reviewed by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

2021-04-05  Tyler Wilcock  <twilco.o@protonmail.com>

        Document how to use logging in WebKit
        https://bugs.webkit.org/show_bug.cgi?id=224152

        Reviewed by Simon Fraser.

        Add documentation about how to use logging in WebKit.

        * Introduction.md:

2021-03-28  David Kilzer  <ddkilzer@apple.com>

        Compile WebKit with UBSan
        <https://webkit.org/b/176131>
        <rdar://problem/34174018>

        Reviewed by Alexey Proskuryakov.

        * Makefile.shared:
        - Add support for "UBSAN=YES" argument to make.

2021-03-27  Philippe Normand  <pnormand@igalia.com>

        REGRESSION(r275111) [GLIB] Fix build with new derived sources and forwarding headers scheme
        https://bugs.webkit.org/show_bug.cgi?id=223834

        Unreviewed build fix.

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

2021-03-26  Lauro Moura  <lmoura@igalia.com>

        REGRESSION(r275111) [GLIB] Fix build with new derived sources and forwarding headers scheme
        https://bugs.webkit.org/show_bug.cgi?id=223834

        Unreviewed build fix.

        Buildfix for now. Actual removal of older scheme will come in the
        future.

        * Source/cmake/OptionsWPE.cmake: Add some missing variables with the
        per framework source and header dirs.

2021-03-26  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Deprecate using DERIVED_SOURCES_DIR/FOWARDING_HEADERS_DIR directly
        https://bugs.webkit.org/show_bug.cgi?id=223763

        Reviewed by Michael Catanzaro.

        Remove any usages of DERIVED_SOURCES_DIR and FOWARDING_HEADERS_DIR. There are still some
        uses in GTK/WPE but those should be phased out.

        Sets the directory structure to look like an Apple build in terms of where headers and
        derived sources are held. Rather than having one root derived sources and one root
        header directory those directories are now per project. This helps catch any errors with
        header includes.

        Deletes some old Mac CMake code that is no longer relevant around creating forwarding
        headers.

        For AppleWin the old structure is used because of its internal build which assumes the
        old structure.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitMacros.cmake:

2021-03-23  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Use an imported target for the LCMS2 library
        https://bugs.webkit.org/show_bug.cgi?id=223442

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindLCMS2.cmake: Replaced find module by a new one which
        defines a LCMS2::LCMS2 imported target and in general uses more modern CMake
        constructs.

2021-03-23  Cameron McCormack  <heycam@apple.com>

        Update .clang-format to reflect WebKit style better.
        https://bugs.webkit.org/show_bug.cgi?id=223229

        First, SpaceBeforeCpp11BracedList is set to true so that a space
        is introduced after a variable name and before a braced initializer.

        Second, AlwaysBreakTemplateDeclarations is changed from false (an
        invalid value) to No, which should result in no line breaks being
        introduced in template declarations.  Although there is a mix of
        template declaration line breaking styles in the codebase, changing
        this option to No will prevent clang-format from introducing one
        where the patch author decides to write the declaration all on one
        line.

        Reviewed by Alex Christensen.

        * .clang-format:

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

        [CMake] Wrong variable used in FindFontconfig used to pick version from pkg-config
        https://bugs.webkit.org/show_bug.cgi?id=223557

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindFontconfig.cmake: Fix to use ${PC_FONTCONFIG_VERSION}.

2021-03-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE] Bump API version when building with libsoup3
        https://bugs.webkit.org/show_bug.cgi?id=223437

        Reviewed by Adrian Perez de Castro.

        Use 1.1 as the API version when building with soup3.

        * Source/PlatformWPE.cmake:
        * Source/cmake/OptionsWPE.cmake:

2021-03-17  Martin Robinson  <mrobinson@igalia.com>

        [GTK][WPE] Enable CSS scroll snap support by default
        https://bugs.webkit.org/show_bug.cgi?id=222641

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Enable CSS scroll snap by default.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2021-03-16  Khem Raj  <raj.khem@gmail.com>

        [CMake] Build fails on RISC-V with GCC 11
        https://bugs.webkit.org/show_bug.cgi?id=222959

        Reviewed by Carlos Alberto Lopez Perez.

        Check for 1 byte atomic operations along with 64bit ones, some
        architevtures (e.g. RISCV) operations on less than 4 bytes are not lock-free

        * Source/cmake/WebKitCompilerFlags.cmake:

2021-03-14  Lauro Moura  <lmoura@igalia.com>

        [GLIB] Keep GPUProcess disabled when using experimental features
        https://bugs.webkit.org/show_bug.cgi?id=223155

        Reviewed by Philippe Normand.

        At least two recent GPUProcess-related revisions caused issues in
        GLIB, causing serious regressions in the bots. Disabling it for now
        until we improve its support.

        Revisions:

        r274327 - 2D Canvas enabled by default in GPUProcess
        r272842 - Media enabled by default in GPUProcess

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

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

        [GTK] Bump API version when building with libsoup3
        https://bugs.webkit.org/show_bug.cgi?id=223067

        Reviewed by Adrian Perez de Castro.

        Use 4.1 as the API version when building with soup3 and keep using 5.0 for GTK4. Also make it impossible to
        build with GTK4 and soup2.

        * Source/PlatformGTK.cmake:
        * Source/cmake/OptionsGTK.cmake:

2021-03-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK][WPE] Bump libsoup3 version to 2.99.3

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

2021-03-11  Carlos Garcia Campos  <cgarcia@igalia.com>

        [WPE][GTK] Add support for ICC color management
        https://bugs.webkit.org/show_bug.cgi?id=177185

        Reviewed by Adrian Perez de Castro.

        Add optional lcms2 dependency.

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

2021-03-10  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Reenable -fvisibility=hidden
        https://bugs.webkit.org/show_bug.cgi?id=181916

        Reviewed by Don Olmstead.

        In non-DEVELOPER_MODE builds, we rely on a linker version script to hide symbols that we
        don't want to export. Building with hidden visibility might seem redundant with this, but
        actually building with hidden visibility has advantages anyway. See
        https://gcc.gnu.org/wiki/Visibility.

        Note that I'm not confident GTK port can safely use -fvisibility-inlines-hidden, since it's
        split between two shared objects. Also, because GTK is split into two shared objects, GTK
        needs to build bmalloc and WTF as CMake OBJECT libraries, which is effectively the same as
        using -Wl,--whole-archive to prevent symbols from being prematurely stripped away.

        P.S. Major credit to Don Olmstead, who did most of the work to make this possible, which has
        already landed in previous patches.

        * Source/cmake/OptionsGTK.cmake:

2021-03-10  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r274166.
        https://bugs.webkit.org/show_bug.cgi?id=223024

        Broke GTK Debug builds

        Reverted changeset:

        "[GTK] Reenable -fvisibility=hidden"
        https://bugs.webkit.org/show_bug.cgi?id=181916
        https://trac.webkit.org/changeset/274166

2021-03-09  Don Olmstead  <don.olmstead@sony.com>

        GLib JSC API headers should only include other GLib JSC API headers
        https://bugs.webkit.org/show_bug.cgi?id=222803

        Reviewed by Michael Catanzaro.

        GTK and WPE both build the JavaScriptCore GLib API. However they diverged with their CMake
        variable names for the directory containing jsc. Declare a single variable for that
        directory, DERIVED_SOURCES_JAVASCRIPTCORE_GLIB_DIR, that is shared between GLib ports.

        Remove the GLIB_API_DIR variant which will just be replaced with
        ${DERIVED_SOURCES_JAVASCRIPTCORE_GLIB_DIR}/jsc in the CMake code.

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

2021-03-09  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Reenable -fvisibility=hidden
        https://bugs.webkit.org/show_bug.cgi?id=181916

        Reviewed by Don Olmstead.

        In non-DEVELOPER_MODE builds, we rely on a linker version script to hide symbols that we
        don't want to export. Building with hidden visibility might seem redundant with this, but
        actually building with hidden visibility has advantages anyway. See
        https://gcc.gnu.org/wiki/Visibility.

        Note that I'm not confident GTK port can safely use -fvisibility-inlines-hidden, since it's
        split between two shared objects. Also, because GTK is split into two shared objects, GTK
        needs to build bmalloc and WTF as CMake OBJECT libraries, which is effectively the same as
        using -Wl,--whole-archive to prevent symbols from being prematurely stripped away.

        P.S. Major credit to Don Olmstead, who did most of the work to make this possible, which has
        already landed in previous patches.

        * Source/cmake/OptionsGTK.cmake:

2021-03-05  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Remove ADD_WHOLE_ARCHIVE_TO_LIBRARIES
        https://bugs.webkit.org/show_bug.cgi?id=222826

        Reviewed by Don Olmstead.

        I don't know why it's no longer needed, but GTK links without it, so it can go away.

        * Source/cmake/OptionsGTK.cmake:

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

        [CMake] Bump cmake_minimum_required version to 3.12 or later
        https://bugs.webkit.org/show_bug.cgi?id=221727
        <rdar://problem/74454980>

        Reviewed by Konstantin Tokarev.

        Updates the minimum version to 3.12. In CMake 3.12 OBJECT library functionality was
        expanded to the point where they can successfully be used as a replacement for
        --whole-archive within WebKit. The check in JSCOnly for the minimum version before
        using hidden visibility was removed accordingly.

        * CMakeLists.txt:
        * Source/cmake/OptionsJSCOnly.cmake:

2021-03-05  ChangSeok Oh  <changseok@webkit.org>

        AVIF decoding support
        https://bugs.webkit.org/show_bug.cgi?id=207750

        Reviewed by Philippe Normand.

        This patch brings an initial support of AVIF image format to the gtk port.
        AVIF is a new royalty-free image format derived from the keyframes of AV1 video.
        FireFox and Chromium-variant browsers already support it. Its specification can be found
        at https://rawcdn.githack.com/AOMediaCodec/av1-avif/67a92add6cd642a8863e386fa4db87954a6735d1/index.html
        This patch aims to land a build option for AVIF and a basic decoding ability
        for still images by using libavif. Animated AVIF images will be covered later.

        * Source/cmake/FindAVIF.cmake: Added to find libavif.
        * Source/cmake/OptionsGTK.cmake: A build option, USE_AVIF is added.

2021-03-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r273814.
        https://bugs.webkit.org/show_bug.cgi?id=222676

        Unresolved types in JavaScriptCore-4.0.gir

        Reverted changeset:

        "[CMake] JavaScriptCore GLib headers should be copies"
        https://bugs.webkit.org/show_bug.cgi?id=222625
        https://trac.webkit.org/changeset/273814

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

        [CMake] JavaScriptCore GLib headers should be copies
        https://bugs.webkit.org/show_bug.cgi?id=222625

        Reviewed by Michael Catanzaro.

        Specify the directories for JavaScriptCore GLib headers and derived sources.

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

2021-03-01  Per Arne  <pvollan@apple.com>

        [Win] Fix build failure
        https://bugs.webkit.org/show_bug.cgi?id=222576
        <rdar://problem/74590803>
        Reviewed by Brent Fulgham.

        It appears a recent change has unintentionally enabled WebInspectorUI on Apple Win. Address this by explicitly disabling it.

        * Source/cmake/OptionsAppleWin.cmake:

2021-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Bump version numbers

        * Source/cmake/OptionsGTK.cmake:

2021-02-26  Imanol Fernandez  <ifernandez@igalia.com>

        Implement OpenXR port graphics binding
        https://bugs.webkit.org/show_bug.cgi?id=222173

        Reviewed by Sergio Villar Senin.

        Enable OpenXR defines required for EGL graphics binding.

        * Source/cmake/OptionsWPE.cmake:

2021-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Bump libsoup3 version to 2.99.1
        https://bugs.webkit.org/show_bug.cgi?id=222413

        Reviewed by Adrian Perez de Castro.

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

2021-02-24  Cameron McCormack  <heycam@apple.com>

        Fix typo in Introduction.md.
        https://bugs.webkit.org/show_bug.cgi?id=222387

        Reviewed by Ryosuke Niwa.

        * Introduction.md:

2021-02-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Fix JSCOnly build on Windows
        https://bugs.webkit.org/show_bug.cgi?id=222316

        Reviewed by Michael Catanzaro.

        Turn off ENABLE_WEBASSEMBLY for Windows on JSCOnly now that its possible to build it
        without FTL.

        * Source/cmake/OptionsJSCOnly.cmake:

2021-02-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        [SOUP] Add support for libsoup3
        https://bugs.webkit.org/show_bug.cgi?id=222093

        Reviewed by Adrian Perez de Castro.

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

2021-02-18  Martin Robinson  <mrobinson@igalia.com>

        [GTK][WPE] Implement support for CSS Scroll Snap
        https://bugs.webkit.org/show_bug.cgi?id=203684

        Reviewed by Carlos Garcia Campos.

        Add initial support for css-scroll-snap on WebKitGTK+ and WebKitWPE. This
        adds support for all types of scroll snapping that WebKit supports apart
        from mouse wheel snapping. Support for that will be added in a followup
        change.

        * Source/cmake/OptionsGTK.cmake: Enable scroll snapping when experimental features
        are enabled.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2021-02-16  Tim Horton  <timothy_horton@apple.com>

        Local macCatalyst builds should not build WebInspectorUI
        https://bugs.webkit.org/show_bug.cgi?id=221992

        Reviewed by Wenson Hsieh.

        * Source/Makefile:
        This project is not used in macCatalyst, and is not even built in production builds.
        We should stop building it in local release/debug builds as well.

2021-02-11  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WEBKIT_EXECUTABLE can incorrectly link framework
        https://bugs.webkit.org/show_bug.cgi?id=221703

        Reviewed by Michael Catanzaro.

        After r272484 which added an additional test for TestJavaScriptCore the PlayStation build
        began failing with an unresolved symbol in bmalloc. On PlayStation both WTF and bmalloc
        are linked into JavaScriptCore. That library was building successfully which implied that
        WTF was being erroniously linked into TestJavaScriptCore.

        Inside _WEBKIT_EXECUTABLE_LINK_FRAMEWORK there was an invalid conditional which was causing
        WTF to be linked. Fixed the logic to ensure that if the requested framework is linked into
        another framework that is being linked then it is not added to the linker.

        * Source/cmake/WebKitMacros.cmake:

2021-02-10  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Enable hidden visibility on JSCOnly
        https://bugs.webkit.org/show_bug.cgi?id=221726

        Reviewed by Yusuke Suzuki.

        Turn on hidden visibility for all *NIX ports of JSCOnly. To properly export the symbols
        from WTF/bmalloc OBJECT libraries are used. This requires CMake 3.12 or later to
        function properly.

        * Source/cmake/OptionsJSCOnly.cmake:

2021-02-10  Christopher Reid  <chris.reid@sony.com>

        [PlayStation] Add initial RESOURCE_USAGE implementation
        https://bugs.webkit.org/show_bug.cgi?id=221706

        Reviewed by Ross Kirsling.

        * Source/cmake/OptionsPlayStation.cmake:

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

        [WPE] Optionally build Cog as external project and replacement for MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=221518

        Reviewed by Adrian Perez de Castro.

        * Source/cmake/OptionsWPE.cmake: New variable for JSC forwarded headers path, useful
        uninstalled builds of projects depending on JSC.

2021-02-09  Jonathan Bedard  <jbedard@apple.com>

        AX: introduction.md broken architecture.png link
        https://bugs.webkit.org/show_bug.cgi?id=221607
        <rdar://problem/74140397>

        Reviewed by Sam Weinig.

        * Introduction.md: webkit2-process-architecture.png Moved to resources.

2021-02-08  Alicia Boya García  <aboya@igalia.com>

        ConsoleMessage: Don't encode string JSONLogValue's as JSON
        https://bugs.webkit.org/show_bug.cgi?id=221421

        Reviewed by Eric Carlson.

        Enable JavaScriptCore API tests.

        * Source/cmake/WebKitCommon.cmake:

2021-02-05  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Catalog warnings
        https://bugs.webkit.org/show_bug.cgi?id=199248

        Unreviewed build fix.

        Missed a warning generated when building AppleWin.

        * Source/cmake/OptionsMSVC.cmake:

2021-02-05  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Catalog warnings
        https://bugs.webkit.org/show_bug.cgi?id=199248

        Reviewed by Fujii Hironori.

        Catalog all the MSVC warnings providing the message and a link to documentation
        for the warning. Some warnings are noted as being against the style guide so they
        won't be addressed. All other warnings could potentially be fixed in the codebase.

        * Source/cmake/OptionsMSVC.cmake:

2021-02-04  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.31.1 release

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

2021-02-04  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Misc Thunder nitpicks
        https://bugs.webkit.org/show_bug.cgi?id=221398

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/FindThunder.cmake: Look-up Thunder through pkg-config before attempting a
        direct libocdm lookup.

2021-02-01  Saam Barati  <sbarati@apple.com>

        Lazily create m_windowCloseWatchpoints so we don't mistakenly think we have a frame when re-associating a document to a given cached frame
        https://bugs.webkit.org/show_bug.cgi?id=221098
        <rdar://72894454>

        Reviewed by Ryosuke Niwa and Mark Lam.

        * ManualTests/dont-create-invalid-watchpoint-when-going-back.html: Added.
        * ManualTests/resources/empty-text.txt: Added.
        * ManualTests/resources/full_results.json: Added.
        * ManualTests/resources/test-results-page.html: Added.

2021-02-01  Don Olmstead  <don.olmstead@sony.com>

        [Curl] Enable FTP protocol only when ENABLE_FTPDIR is on
        https://bugs.webkit.org/show_bug.cgi?id=220941

        Reviewed by Fujii Hironori.

        Turn off ENABLE_FTPDIR for WinCairo. The version of cURL used has FTP support explicitly
        disabled.

        * Source/cmake/OptionsWin.cmake:

2021-01-27  Yusuke Suzuki  <ysuzuki@apple.com>

        WebAssembly: add support for stream APIs
        https://bugs.webkit.org/show_bug.cgi?id=173105

        Reviewed by Keith Miller.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2021-01-27  Angelos Oikonomopoulos  <angelos@igalia.com>

        Set ruby-indent-level to 4
        https://bugs.webkit.org/show_bug.cgi?id=220982

        Reviewed by Fujii Hironori.

        All the ruby source files seem to default to 4 as the indent
        level; make it official.

        * .dir-locals.el:
        * .editorconfig:

2021-01-23  Xan Lopez  <xan@igalia.com>

        [JSC] Allow to build WebAssembly without B3
        https://bugs.webkit.org/show_bug.cgi?id=220365

        Reviewed by Yusuke Suzuki.

        Make the WebAssembly feature depend on Baseline JIT, not B3
        JIT. Also add a WEBASSEMBLY_B3JIT feature to enable or disable the
        B3 tier in WebAssembly.

        * Source/cmake/WebKitFeatures.cmake: disable on 32bit.

2021-01-21  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove ENABLE_USERSELECT_ALL macro which is enabled for all ports
        https://bugs.webkit.org/show_bug.cgi?id=100424

        Reviewed by Don Olmstead.

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

2021-01-20  Yusuke Suzuki  <ysuzuki@apple.com>

        Unreviewed, ANGLE should not be built in JSCOnly port

        ANGLE is not a part of JSC. Do not build it.

        * Source/cmake/OptionsJSCOnly.cmake:

2021-01-19  Lauro Moura  <lmoura@igalia.com>

        REGRESSION(r271580) [GTK] LTS/Debian build failure due to unsupported g-ir-scanner parameter
        https://bugs.webkit.org/show_bug.cgi?id=220730

        Reviewed by Philippe Normand.

        * Source/cmake/FindGObjectIntrospection.cmake: Expose variable about the
        presence of --sources-top-dirs.

2021-01-14  Jonathan Bedard  <jbedard@apple.com>

        [GitHub] Reference GitHub repository in readme
        https://bugs.webkit.org/show_bug.cgi?id=220611
        <rdar://problem/73173367>

        Reviewed by Aakash Jain.

        * ReadMe.md: Reference GitHub repository.

2021-01-12  Fujii Hironori  <Hironori.Fujii@sony.com>

        [PlayStation] Enable ENABLE_USERSELECT_ALL for -webkit-user-select:all support
        https://bugs.webkit.org/show_bug.cgi?id=220533

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake: Removed the line disabling ENABLE_USERSELECT_ALL.

2021-01-12  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Bump version requirement
        https://bugs.webkit.org/show_bug.cgi?id=220356

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/GStreamerChecks.cmake: Bump required version to 1.14.

2021-01-12  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer] Switch from ENABLE_ to USE_ in native audio/video and text sink options
        https://bugs.webkit.org/show_bug.cgi?id=220515

        Reviewed by Philippe Normand.

        * Source/cmake/GStreamerDefinitions.cmake: Add USE_ definitions.
        * Source/cmake/WebKitFeatures.cmake: Remove global ENABLE_
        definitions.

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

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.31.1 release

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

2021-01-11  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Add MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=220359

        Reviewed by Don Olmstead.

        Enable Fullscreen API.

        * Source/cmake/OptionsPlayStation.cmake:

2021-01-11  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer] Add support to build with native audio and video
        https://bugs.webkit.org/show_bug.cgi?id=220087

        Reviewed by Philippe Normand.

        * Source/cmake/GStreamerDefinitions.cmake: Enable TEXT_SINK.
        * Source/cmake/WebKitFeatures.cmake:  Declare TEXT_SINK, NATIVE_VIDEO and NATIVE_AUDIO.

2021-01-08  Ryan Hostetler  <rhost@apple.com>

        Add support for source caching between platforms
        https://bugs.webkit.org/show_bug.cgi?id=220439
        rdar://72905725

        Reviewed by Andy Estes.

        Include WebInspectorUI Source during any installsrc phase.

        * Source/Makefile:

2021-01-08  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] Enable ENABLE_USERSELECT_ALL for -webkit-user-select:all support
        https://bugs.webkit.org/show_bug.cgi?id=118740

        Reviewed by Don Olmstead.

        This change also fixes the assertion failure of
        editing/inserting/insert-list-user-select-none-crash.html
        (Bug 216256).

        * Source/cmake/OptionsFTW.cmake: Removed the line disabling ENABLE_USERSELECT_ALL.
        * Source/cmake/OptionsWin.cmake: Ditto.

2021-01-07  Ryan Hostetler  <rhost@apple.com>

        make clean/installsrc fail: You cannot specify -alltargets and also specify individual targets.
        https://bugs.webkit.org/show_bug.cgi?id=220370
        rdar://72834872

        Reviewed by Andy Estes.

        Update hardcoded '-alltargets' to use new XCODE_TARGET variable.

        * Makefile.shared:

2021-01-07  Monson Shao  <holymonson@gmail.com>

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

        Reviewed by Yusuke Suzuki.

        Add USE_APPLE_ICU option to allow non-Mac ports (GTK or JSCOnly) on Darwin could build with
        non-Apple ICU.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/WebKitFindPackage.cmake:

2021-01-06  Alexey Proskuryakov  <ap@apple.com>

        Make svn status ignore Python 3 __pycache__ directories.

        Unreviewed.

        Python 2 *.pyc files are still inconsistently handled via svn:ignore on each
        directory, but it is not worth cleaning up before GitHub move.

        * Tools: Added property svn:global-ignores.

2021-01-06  Fujii Hironori  <Hironori.Fujii@sony.com>

        [GTK][CMake] Add a build switch USE_OPENGL_OR_ES to be able to disable OpenGL and ES
        https://bugs.webkit.org/show_bug.cgi?id=220183

        Reviewed by Kenneth Russell.

        r270477 removed ENABLE_GRAPHICS_CONTEXT_GL macro and build switch,
        but GTK port still needs the build switch. Revert r270477
        partially to restore the build switch and rename it to
        USE_OPENGL_OR_ES.

        * Source/cmake/OptionsGTK.cmake:

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

        [WinCairo][curl] Enable CURLSSLOPT_NATIVE_CA flag to use system's CA certs instead of cacert.pem
        https://bugs.webkit.org/show_bug.cgi?id=220258

        Reviewed by Don Olmstead.

        Libcurl 7.71 added a new flag CURLSSLOPT_NATIVE_CA to use the
        operating system's native CA store only for Windows. Use the flag
        for WinCairo port.

        * Source/cmake/OptionsWinCairo.cmake: Bumped the minimum Curl version.

2021-01-04  Lauro Moura  <lmoura@igalia.com>

        [WebXR][WPE] Build fails without openxr installed
        https://bugs.webkit.org/show_bug.cgi?id=220250

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/FindOpenXR.cmake: Fix some names and export
        OPENXR_FOUND var.
        * Source/cmake/OptionsWPE.cmake: Fail config is WebXR is enabled but
        couldn't find OpenXR.

2021-01-04  Jeff Miller  <jeffm@apple.com>

        Update user-visible copyright strings to include 2021
        https://bugs.webkit.org/show_bug.cgi?id=219901

        Reviewed by Anders Carlsson.

        * Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:

2020-12-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Enable WebGL 2
        https://bugs.webkit.org/show_bug.cgi?id=192314

        Reviewed by Kenneth Russell.

        * Source/cmake/OptionsWin.cmake: Turned ENABLE_WEBGL2 on.

2020-12-23  Monson Shao  <holymonson@gmail.com>

        [CMake] Fix seperated include dir of harfbuzz and harfbuzz-icu
        https://bugs.webkit.org/show_bug.cgi?id=220082

        Reviewed by Alex Christensen.

        In some distros (NixOS) harfbuzz and harfbuzz-icu may have different include dir.

        * Source/cmake/FindHarfBuzz.cmake:

2020-12-21  Ryan Hostetler  <rhost@apple.com>

        $(findstring iphone,$(SDKROOT)) fails when SDKROOT is not lowercase
        https://bugs.webkit.org/show_bug.cgi?id=219993
        rdar://72436093

        Reviewed by Darin Adler.

        Update SDKROOT evaluation to be lowercase and SDK filename only.

        * Source/Makefile:

2020-12-16  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Enable USE_ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=219421

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWinCairo.cmake:

2020-12-13  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Version of LibPSL not reported
        https://bugs.webkit.org/show_bug.cgi?id=219837

        Reviewed by Adrian Perez de Castro.

        When determining the version of LibPSL from the header file LIBPSL_VERSION was set
        but the VERSION_VAR reported was LibPSL_VERSION. Consistently use LibPSL_VERSION
        within the file to prevent this.

        Additionally LibPSL_LIBRARY not LibPSL_LIBRARIES should be marked_as_advanced.

        * Source/cmake/FindLibPSL.cmake:

2020-12-11  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Determine correct visibility for linked frameworks
        https://bugs.webkit.org/show_bug.cgi?id=210366

        Reviewed by Michael Catanzaro.

        WebKit has some frameworks that are compiled statically into a larger shared library. For
        example Apple compiles bmalloc and WTF into JavaScriptCore. This means the JavaScriptCore
        framework also exposes the symbols for those two libraries and that targets depending
        on WTF or bmalloc should link to JavaScriptCore and never to WTF or bmalloc directly.

        The CMake code allows each port to decide the type of library for a WEBKIT_FRAMEWORK.
        This means there are many different combinations that it needs to support. To ensure that
        everything links properly some bookkeeping is required.

        WEBKIT_FRAMEWORK now uses ${target}_FRAMEWORKS to determine how to link the frameworks
        it depends on. First the macro determines if the framework is a SHARED library or is linked
        into a shared library, and if so it is linked as PUBLIC. If the framework itself is not a
        SHARED library, then it links other STATIC/OBJECT framework as PUBLIC. If the framework
        itself is SHARED then any framework that is a STATIC/OBJECT library is linked as PRIVATE
        to stop propagation. The linked framework's header directories are added to the
        WebKit::${framework} target to allow the framework to present as that framework. A global
        property is set to inform consumers that they should link to this different framework
        to get the requested framework.

        This ensures that all ports can ship with hidden visibility turned on which is a precursor
        to a port turning on link time optimization (LTO).

        * Source/cmake/WebKitMacros.cmake:

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

        [CMake] Determine when to use $<TARGET_OBJECTS> for executables
        https://bugs.webkit.org/show_bug.cgi?id=219648

        Reviewed by Michael Catanzaro.

        When a WebKit framework is declared as an OBJECT library the WebKit::${framework} ALIAS
        does not propagate the objects to the executable being built. As a workaround ports will
        explicitly add $<TARGET_OBJECTS> to the list of libraries being linked. There is already
        enough information to determine when $<TARGET_OBJECTS> is needed so this decision is moved
        into the WEBKIT_EXECUTABLE macros.

        An additional ${taget_name}_FRAMEWORKS variable is added which specifies the WebKit
        frameworks being used. This will link the WebKit::${framework} alias and if necessary the
        associated $<TARGET_OBJECTS>.

        This functionality will be expanded upon when support for ${target_name}_FRAMEWORKS is
        added to WebKit frameworks to support hidden visibility across ports.

        * Source/cmake/WebKitMacros.cmake:

2020-12-07  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Remove WEBKIT_WRAP_SOURCELIST
        https://bugs.webkit.org/show_bug.cgi?id=196916

        Reviewed by Michael Catanzaro.

        WEBKIT_WRAP_SOURCELIST macro is used only to adjust source groups in Visual Studio
        projects without any impact on build process. Its references variable specific to
        particular targets (WebCore) which contradicts our goal of having target-oriented
        CMake project. It can be reintroduced later in a more clean way, in case anyone needs
        to have such grouping.

        * Source/cmake/WebKitMacros.cmake:

2020-12-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove ENABLE_GRAPHICS_CONTEXT_GL by replacing it with ENABLE(WEBGL)
        https://bugs.webkit.org/show_bug.cgi?id=219551

        Reviewed by Kenneth Russell.

        * Source/CMakeLists.txt:
        * Source/cmake/GStreamerDependencies.cmake:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-11-26  Lauro Moura  <lmoura@igalia.com>

        [GTK][GTK4] Building with GObject-Introspection support does not work
        https://bugs.webkit.org/show_bug.cgi?id=219221

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Allow introspection with GTK4.

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

        [WinCairo] Enable GPU process
        https://bugs.webkit.org/show_bug.cgi?id=219294

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWin.cmake: Turned ENABLE_GPU_PROCESS on for WinCairo.

2020-11-26  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

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

        Reviewed by Fujii Hironori.

        * Source/cmake/OptionsPlayStation.cmake:

2020-11-20  Don Olmstead  <don.olmstead@sony.com>

        Remove quota module
        https://bugs.webkit.org/show_bug.cgi?id=219206

        Reviewed by Anders Carlsson.

        Remove the ability to set ENABLE_QUOTA. The Storage Quota API is deprecated and no
        WebKit port is enabling it.

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

2020-11-09  Michael Catanzaro  <mcatanzaro@gnome.org>

        Enable llint asm on aarch64 when USE(64KB_PAGE_BLOCK) is enabled
        https://bugs.webkit.org/show_bug.cgi?id=218613

        Reviewed by Carlos Alberto Lopez Perez.

        Normally we fall back to cloop when JIT is not supported. But on aarch64, llint asm is well-
        supported, so it is safe to use that here. This will only happen on aarch64, and only when
        USE(64KB_PAGE_BLOCK) is enabled, which should probably only be used by RHEL and SUSE.
        Everyone else should get the JIT.

        * Source/cmake/WebKitFeatures.cmake:

2020-11-04  Sergey Rubanov  <chi187@gmail.com>

        Fix JSC build on macOS Big Sur
        https://bugs.webkit.org/show_bug.cgi?id=218566

        Reviewed by David Kilzer.

        * Source/cmake/WebKitFindPackage.cmake:

2020-11-04  Michael Catanzaro  <mcatanzaro@gnome.org>

        Add new build option USE(64KB_PAGE_BLOCK)
        https://bugs.webkit.org/show_bug.cgi?id=217989

        Reviewed by Yusuke Suzuki.

        Why do we need this option? Because JSC and bmalloc both want to know the userspace page
        size at compile time, which is impossible on Linux because it's a runtime setting. We
        cannot test the system page size at build time in hopes that it will be the same on the
        target system, because (a) cross compiling wouldn't work, and (b) the build system could
        use a different page size than the target system (which will be true for Fedora aarch64,
        because Fedora is built using RHEL), so the best we can do is guess based on the target CPU
        architecture. In practice, guessing works for all architectures except aarch64 (unless
        unusual page sizes are used), but it fails for aarch64 because distros are split between
        using 4 KB and 64 KB pages there. Most distros (including Fedora) use 4 KB, but RHEL uses
        64 KB. SUSE actually supports both. Since there is no way to guess correctly, the best we
        can do is provide an option for it. You should probably only use this if building for
        aarch64. Otherwise, known CPUs except PowerPC will use 4 KB, while PowerPC and unknown CPUs
        will use 64 KB (see wtf/PageBlock.h). aarch64 will continue to default to 4 KB because this
        is a much better default on systems where it doesn't crash.

        Having one flag will help avoid mistakes. E.g. both RHEL and SUSE were manually passing
        -DENABLE_JIT=OFF and -DUSE_SYSTEM_MALLOC=ON, but we missed -DENABLE_C_LOOP=ON and
        -DENABLE_SAMPLING_PROFILER=OFF, so wound up running with both JIT and cloop disabled, a
        configuration not otherwise used on Linux (and not supported by GTK or WPE ports). It will
        be easier to not mess up if we only have to pass one special build option. This will also
        allow us to stop patching PageBlock.h downstream, because I don't like downstream patches
        that we have to keep forever.

        * Source/cmake/WebKitFeatures.cmake:

2020-10-30  Ryosuke Niwa  <rniwa@webkit.org>

        Add Introduction to WebKit
        https://bugs.webkit.org/show_bug.cgi?id=217017

        Rubber-stamped by Simon Fraser.

        Added the basic introductory documentation for WebKit.

        * Introduction.md: Added.
        * resources/js-wrapper.png: Added.
        * resources/webkit2-process-architecture.png: Added.
        * resources/xcode-add-file.png: Added.
        * resources/xcode-build-settings-for-run.png: Added.
        * resources/xcode-export-header.png: Added.
        * resources/xcode-scheme-dumprendertree.png: Added.
        * resources/xcode-scheme-layout-test.png: Added.
        * resources/xcode-workspace-build-location.png: Added.
        * resources/xcode-workspace-settings.png: Added.

2020-10-30  Jonathan Bedard  <jbedard@apple.com>

        Github mirror ReadMe need to update
        https://bugs.webkit.org/show_bug.cgi?id=218120
        <rdar://problem/70861595>

        Reviewed by Aakash Jain.

        * ReadMe.md:

2020-10-27  Keith Rollin  <krollin@apple.com>

        Fix "usage" message when invoking `ar -V`
        https://bugs.webkit.org/show_bug.cgi?id=218255
        <rdar://problem/70735674>

        Reviewed by Fujii Hironori.

        The Mac/BSD version of `ar` does not support the -V flag. This flag is
        used unconditionally in OptionsCommon.cmake when trying to determine
        if the installed `ar` supports the thinning of archives, leading to a
        "usage" message being emitted on macOS.

        Avoid this message by capturing the error-output. Examine the output
        to see if it's a "usage" message. If so, then treat the `ar` as one
        that does not support thinning. Any other error-output is printed as a
        warning. If there is no error-output, continue processing as normal.

        * Source/cmake/OptionsCommon.cmake:

2020-10-27  Brian Burg  <bburg@apple.com>

        Web Inspector: add ENABLE(INSPECTOR_EXTENSIONS) to feature defines
        https://bugs.webkit.org/show_bug.cgi?id=218237
        <rdar://problem/69968787>

        Reviewed by Antti Koivisto.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Add ENABLE(INSPECTOR_EXTENSIONS), which is only on for the Cocoa macOS port.

2020-10-26  Keith Rollin  <krollin@apple.com>

        Move some initialization code from top-level CMakeLists.txt to WebKitCommon.cmake
        https://bugs.webkit.org/show_bug.cgi?id=218069
        <rdar://problem/70556952>

        Reviewed by Fujii Hironori.

        Moving this initialization code into a central location allows other
        top-level CMakeLists.txt files to include WebKitCommon.cmake and get
        that same initialization.

        * CMakeLists.txt:
        * Source/cmake/WebKitCommon.cmake:

2020-10-23  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Replace USE(WEBAUDIO_GSTREAMER) with USE(GSTREAMER)
        https://bugs.webkit.org/show_bug.cgi?id=218083

        Reviewed by Xabier Rodriguez-Calvar.

        A separate define was introduced back when we thought enabling WebAudio without enabling
        <audio> would be a highly relevant scenario. I don't think it is very relevant, let's clean
        this up.

        * Source/cmake/GStreamerChecks.cmake: Wrap the WebAudio platform bits in the USE(GSTREAMER) umbrella.

2020-10-21  Carlos Garcia Campos  <cgarcia@igalia.com>

        WebDriver: add support for wheel actions
        https://bugs.webkit.org/show_bug.cgi?id=217174

        Reviewed by Brian Burg.

        Enable WEBDRIVER_WHEEL_INTERACTIONS for GTK and WPE ports.

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

2020-10-20  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Move ENABLE_ASYNC_SCROLLING build option to right place in OptionsGTK.cmake
        https://bugs.webkit.org/show_bug.cgi?id=217977

        Unreviewed. No functional changes.

        * Source/cmake/OptionsGTK.cmake:

2020-10-20  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Implement HTML5 Gamepad API
        https://bugs.webkit.org/show_bug.cgi?id=133847

        Reviewed by Michael Catanzaro.

        Enable the gamepad support by default for the GTK port. The option is marked PUBLIC
        because libmanette is not available in the current Debian "old stable" (Buster), which
        we need to support until September 2021.

        * Source/cmake/OptionsGTK.cmake: Set ENABLE_GAMEPAD to PUBLIC and ON by default.

2020-10-19  Lauro Moura  <lmoura@igalia.com>

        REGRESSION(r268115) [GTK] Build failures with GCC 7 (Ubuntu 18.04) and GCC 8 (Debian Buster)
        https://bugs.webkit.org/show_bug.cgi?id=217425

        Reviewed by Carlos Alberto Lopez Perez.

        The root cause is lack of proper <filesystem> support in gcc7/8 (and
        incompatibility with llvm's header that was included). As such, we
        need to check whether to use <filesystem>, <experimental/filesystem>,
        or fallback to the included header.

        Note: In some systems like Ubuntu 20.04, gcc-8 can use gcc-9's
        libstdc++ and link successfully, but running will fail as it should
        actually link with its libstc++fs to provide the correct symbols. As
        this is some corner case (Ubuntu's 20 default gcc is 9), LDFLAGS
        can be used to overcome this.

        * Source/cmake/OptionsCommon.cmake: Add a HAVE directive to
        check whether <experimental/filesystem> is the filesystem impl
        available.
        * Source/cmake/WebKitCompilerFlags.cmake: Test first whether
        <filesystem> can be used, with <experimental/filestystem> as fallback.

2020-10-14  Zan Dobersek  <zdobersek@igalia.com>

        Remove ACCELERATED_2D_CANVAS build flags and guarded code
        https://bugs.webkit.org/show_bug.cgi?id=217603

        Reviewed by Carlos Garcia Campos.

        Yank the CMake ENABLE_ACCELERATED_2D_CANVAS option now that it won't
        have any effect. FindCairoGL.cmake can also be removed.

        * Source/cmake/FindCairoGL.cmake: Removed.
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/tools/vsprops/FeatureDefines.props:
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

2020-10-13  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Set ENABLE_GAMEPAD=ON for developer builds
        https://bugs.webkit.org/show_bug.cgi?id=217493

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake: Make the default value of ENABLE_GAMEPAD
        depend on ENABLE_EXPERIMENTAL_FEATURES.

2020-10-13  Michael Catanzaro  <mcatanzaro@gnome.org>

        [WPE][GTK] ENABLE_SHAREABLE_RESOURCE should be PRIVATE build option
        https://bugs.webkit.org/show_bug.cgi?id=217592

        Reviewed by Carlos Garcia Campos.

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

2020-10-09  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][GraphicsLayerTextureMapper] backdrop-filter support
        https://bugs.webkit.org/show_bug.cgi?id=217081

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWin.cmake: Turn ENABLE_FILTERS_LEVEL_2 on for WinCairo.

2020-10-08  Keith Rollin  <krollin@apple.com>

        Remove copy-webkitlibraries-to-product-directory
        https://bugs.webkit.org/show_bug.cgi?id=217465
        <rdar://problem/70082193>

        Reviewed by Darin Adler.

        This script no longer does anything, so remove it along with the
        scaffolding around it that invokes it during the build.

        * Makefile:

2020-10-04  Ryan Hostetler  <rhost@apple.com>

        Submission failure with "make: *** No rule to make target `installsrc'. Stop"
        https://bugs.webkit.org/show_bug.cgi?id=214696
        <rdar://problem/62268104>

        Reviewed by Darin Adler.

        Add installsrc phase to support xbs submitproject for WebKit repository.
        This change allows internal tools to submit and build in a single step.

        * Makefile:
        * Makefile.shared:
        * Source/Makefile:

2020-10-02  Keith Rollin  <krollin@apple.com>

        Seeing "usage: basename string [suffix]" spam when using make to build
        https://bugs.webkit.org/show_bug.cgi?id=217231
        <rdar://problem/69889138>

        Reviewed by Darin Adler.

        The name of the project being built is no longer displayed when using
        XCBuild. Therefore, https://bugs.webkit.org/show_bug.cgi?id=216865
        taught the Makefile to perform this logging. The approach took
        advantage of a `make` variable (PATH_FROM_ROOT) that tracks the
        relative path from the root of the build hierarchy to the current
        project. However, that variable may not be initialized if the build is
        not initiated from the root. Therefore, don't count on that variable,
        and get the name of the current project by invoking `pwd`.

        * Makefile.shared:

2020-10-02  Sam Weinig  <weinig@apple.com>

        Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
        https://bugs.webkit.org/show_bug.cgi?id=216831

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Remove option to build with MEDIA_SESSION, no one was doing it.

2020-10-02  Karl Rackler  <rackler@apple.com>

        Unreviewed, reverting r267796.

        This change is breaking the build on AzulE debug bots.

        Reverted changeset:

        "Remove code behind ENABLE(MEDIA_SESSION), no ports enable it"
        https://bugs.webkit.org/show_bug.cgi?id=216831
        https://trac.webkit.org/changeset/267796

2020-10-02  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] Build broken with ENABLE_MEDIA_STREAM enabled and ENABLE_WEB_RTC_DISABLED
        https://bugs.webkit.org/show_bug.cgi?id=217128

        Reviewed by Philippe Normand.

        * Source/cmake/GStreamerChecks.cmake: Only enable USE_LIBWEBRTC when both
        ENABLE_MEDIA_STREAM and ENABLE_WEB_RTC is defined. This prevents trying to
        build code that uses libwebrtc types when ENABLE_WEB_RTC is disabled but
        ENABLE_MEDIA_STREAM is enabled.

2020-09-30  Sam Weinig  <weinig@apple.com>

        Remove code behind ENABLE(MEDIA_SESSION), no ports enable it
        https://bugs.webkit.org/show_bug.cgi?id=216831

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Remove option to build with MEDIA_SESSION, no one was doing it.

2020-09-30  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] Internal audio rendering support
        https://bugs.webkit.org/show_bug.cgi?id=207634

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/FindWPEBackend_fdo.cmake: Check for the audio extension header initially
        shipped in the 1.8.0 release.
        * Source/cmake/GStreamerChecks.cmake: Check and enable external audio rendering support if
        the WPEBackend-FDO audio extension was found.

2020-09-29  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WebGPU] Add FindDawn module
        https://bugs.webkit.org/show_bug.cgi?id=217097

        Reviewed by Darin Adler.

        Add a FindDawn CMake module to use for a WebGPU implementation on non-Cocoa platforms.
        If ENABLE_WEBGPU is on for WinCairo it will attempt to detect Dawn.

        * Source/cmake/FindDawn.cmake: Added.
        * Source/cmake/OptionsWinCairo.cmake:

2020-09-28  Keith Rollin  <krollin@apple.com>

        Print message saying what project is being built
        https://bugs.webkit.org/show_bug.cgi?id=216865
        <rdar://problem/69408135>

        Reviewed by Andy Estes.

        XCBuild removes the progress messages saying which project/target is
        being built. We can't show the target, but update the Makefiles to at
        least show which project is being built.

        * Makefile.shared:

2020-09-27  Philippe Normand  <pnormand@igalia.com>

        Add .ccls config file
        https://bugs.webkit.org/show_bug.cgi?id=216877

        Reviewed by Darin Adler.

        ccls is a stand-alone server implementing the Language Server Protocol for C, C++, and
        Objective-C languages. It can be used with any editor which provides an LSP client
        implementation. It originates from cquery.

        https://github.com/MaskRay/ccls/wiki

        It's basically used to provide semantic highlighting and code navigation. Many IDEs support
        LSP nowadays.

        * .ccls: Added.
        * .gitignore:

2020-09-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        make_names.pl no longer needs C preprocessor
        https://bugs.webkit.org/show_bug.cgi?id=216953

        Reviewed by Sam Weinig.

        * Source/cmake/WebKitCompilerFlags.cmake: Removed CODE_GENERATOR_PREPROCESSOR_WITH_LINEMARKERS which was used only for make_names.pl.

2020-09-25  Antti Koivisto  <antti@apple.com>

        [LFC][Integration] Enable on Apple Windows port
        https://bugs.webkit.org/show_bug.cgi?id=216928
        <rdar://problem/69505961>

        Reviewed by Zalan Bujtas.

        * Source/cmake/OptionsWin.cmake:

2020-09-23  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove ENABLE_SVG_FONTS macro
        https://bugs.webkit.org/show_bug.cgi?id=216850

        Reviewed by Don Olmstead.

        No ports have this disabled, so remove it.

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

2020-09-22  Keith Rollin  <krollin@apple.com>

        Unify debug and release target aliases
        https://bugs.webkit.org/show_bug.cgi?id=216863
        <rdar://problem/69407746>

        Reviewed by Tim Horton.

        All Makefiles have "debug", "d", "release", and "r" for build
        targets. Others -- but not all -- also include "dev", "develop",
        "development", "dep", "deploy", and "deployment". Because of this
        inconsistency, trying to use those additional targets didn't work. It
        looks like all Makefiles used to support all of those targets, but
        some got dropped along the way. For instance, the top-level Makefile
        and Source/Makefile dropped them in 2013 as part of Bug 107863. And it
        looks like WebKitLibraries/Makefile never had them. Given that those
        additional targets don't work, it seems like no one uses them, so
        let's remove them completely.

        * Makefile.shared:

2020-09-22  Keith Rollin  <krollin@apple.com>

        Refactor build rules in Makefiles and Makefile.shared
        https://bugs.webkit.org/show_bug.cgi?id=216806
        <rdar://problem/69332316>

        Reviewed by David Kilzer.

        Build fix: Previous change for this bug broke the ability to perform a
        build with just `make`, due to that code path invoking
        `set-webkit-configuration` with no parameters, which causes that
        script to error-out.

        * Makefile.shared:

2020-09-22  Keith Rollin  <krollin@apple.com>

        Refactor build rules in Makefiles and Makefile.shared
        https://bugs.webkit.org/show_bug.cgi?id=216806
        <rdar://problem/69332316>

        Reviewed by David Kilzer.

        Factor out the common aspects of the build rules in Makefile.shared
        and the various Makefiles. This allows us to more easily see what's
        different between the various build targets, and to apply uniform
        changes across all of the targets.

        * Makefile:
        * Makefile.shared:
        * Source/Makefile:

2020-09-22  Jonathan Bedard  <jbedard@apple.com>

        Correct instructions for building iOS in ReadMe
        https://bugs.webkit.org/show_bug.cgi?id=216825
        <rdar://problem/69372654>

        Reviewed by David Kilzer.

        * ReadMe.md: Update iOS build instructions to apply to all embedded platforms.

2020-09-21  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Use imported targets in find module for the ATK SPI2 bridge dependency
        https://bugs.webkit.org/show_bug.cgi?id=216773

        Reviewed by Don Olmstead.

        * Source/cmake/FindATKBridge.cmake: Rewrite to define an ATK::Bridge imported target.
        * Source/cmake/OptionsWPE.cmake: Use the ATK::Bridge imported target.

2020-09-16  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Add a new library target TestRunnerShared
        https://bugs.webkit.org/show_bug.cgi?id=216465

        WinCairo port is using both DRT and WTR. However, it has a problem
        for precompiled header builds to compile the source of
        TestRunnerShared twice for DRT and WTR.

        Add a new library target TestRunnerShared. Re-enable precompiled
        header for DRT and WTR for WinCairo.

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitFS.cmake:

2020-09-16  Stephan Szabo  <stephan.szabo@sony.com>

        Remove ENABLE_METER_ELEMENT
        https://bugs.webkit.org/show_bug.cgi?id=216582

        Reviewed by Fujii Hironori.

        With PlayStation finally planning to turn this on,
        no ports had this disabled, so remove the enable flag.

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

2020-09-15  David Kilzer  <ddkilzer@apple.com>

        WebKit should support building with clang ThreadSanitizer enabled
        <https://webkit.org/b/216318>
        <rdar://problem/31615729>

        Reviewed by Darin Adler.

        This patch doesn't attempt to resolve every potential false
        positive, but makes it easy to build WebKit with TSan enabled.

        * Makefile.shared:
        - Update to work with `make [args] TSAN=YES`.

2020-09-14  Fujii Hironori  <Hironori.Fujii@sony.com>

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

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:

2020-09-12  Myles C. Maxfield  <mmaxfield@apple.com>

        [Apple Win] Add a CTFont member to FontPlatformData
        https://bugs.webkit.org/show_bug.cgi?id=216432

        Reviewed by Darin Adler.

        Include ***CoreText.cpp files on the Apple Win port.

        * Source/cmake/OptionsAppleWin.cmake:

2020-09-10  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Use imported targets in find module for libseccomp
        https://bugs.webkit.org/show_bug.cgi?id=216329

        Reviewed by Don Olmstead.

        * Source/cmake/BubblewrapSandboxChecks.cmake: Use Libseccomp_FOUND.
        * Source/cmake/FindLibseccomp.cmake: Rewrite to define the
        Libseccomp::Libseccomp target, fall-back to read version from the main
        header, and define variables with Libseccomp_ as prefix.

2020-09-04  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. [WPE] Bump version numbers

        * Source/cmake/OptionsWPE.cmake:

2020-09-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Bump version numbers

        * Source/cmake/OptionsGTK.cmake:

2020-09-02  Philippe Normand  <pnormand@igalia.com>

        [Flatpak SDK] Update to FDO 20.08
        https://bugs.webkit.org/show_bug.cgi?id=215763

        Reviewed by Žan Doberšek.

        * .gitignore: Ignore buildstream local Flatpak repository. This is created only when
        manually building the SDK.

2020-08-31  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Build fix for intermittent copy errors
        https://bugs.webkit.org/show_bug.cgi?id=215951

        Reviewed by Ross Kirsling.

        * Source/cmake/OptionsPlayStation.cmake:
        When copying platform specific files into the binary
        directory post build on executable targets, we'd
        intermittently get copy errors in parallel builds.

2020-08-28  Adrian Perez de Castro  <aperez@igalia.com>

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

        Reviewed by Philippe Normand.

        Enable web notifications support for the WPE port. The code is shared with the GTK
        port, but as we do not try to find and enable libnotify the default implementation
        is a stub: embedders can customize how to display notifications by connecting to
        the WebKitWebView:show-notification signal. This way we do not add any additional
        build dependencies.

        * Source/cmake/OptionsWPE.cmake: Flip ENABLE_NOTIFICATIONS to ON.

2020-08-27  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Build fix due to memmem not always being available.
        https://bugs.webkit.org/show_bug.cgi?id=215893

        Unreviewed build fix

        * Source/cmake/OptionsPlayStation.cmake: Check for memmem

2020-08-22  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Compilation warnings with clang/gcc 10
        https://bugs.webkit.org/show_bug.cgi?id=215699

        Reviewed by Darin Adler.

        * Source/cmake/WebKitCompilerFlags.cmake: Disable tautological-compare and
        misleading-indentation warnings triggering false-positive when building JSC.

2020-08-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Remove support for NPAPI plugins
        https://bugs.webkit.org/show_bug.cgi?id=215503

        Reviewed by Darin Adler.

        * Source/cmake/OptionsGTK.cmake:

2020-08-12  Keith Rollin  <krollin@apple.com>

        Remove the need for defining USE_NEW_BUILD_SYSTEM
        https://bugs.webkit.org/show_bug.cgi?id=215439

        Reviewed by Darin Adler.

        When building WebKit for XCBuild, we currently require that the
        external build system (such as the Makefile, build-webkit, etc.)
        defines the USE_NEW_BUILD_SYSTEM=YES build setting. This build setting
        controls parts of our build instructions that are sensitive to when
        XCBuild or the Legacy build system are being used. Notably, we need to
        know when to use our custom “copy and modify” scripts with copying
        certain header files (used with the Legacy build system) vs. using the
        enhanced Copy Headers build phase that’s enabled with
        APPLY_RULES_IN_COPY_HEADERS=YES (introduced with and used by XCBuild).
        The choice of which method to copy headers is used is controlled by
        USE_NEW_BUILD_SYSTEM.

        There is no built-in build setting that we can probe to help us
        determine which approach to take when copying and modifying headers,
        which is why we need to define USE_NEW_BUILD_SYSTEM ourselves. But it
        turns out that we can *detect* which build system is being used by
        taking advantage of a subtle difference between the two systems. As
        noted in:

            https://developer.apple.com/documentation/xcode-release-notes/build-system-release-notes-for-xcode-10

            “When an .xcconfig file contains multiple assignments of the same
             build setting, later assignments using $(inherited) or
             $(<setting_name>) will inherit from earlier assignments in the
             .xcconfig. The legacy build system caused every use of
             $(inherited) or $(<setting_name>) skip any other values defined
             within the .xcconfig.”

        This difference can be exploited as follows:

            WK_WHICH_BUILD_SYSTEM = not_
            WK_WHICH_BUILD_SYSTEM = $(inherited)legacy
            WK_USE_NEW_BUILD_SYSTEM = $(WK_USE_NEW_BUILD_SYSTEM_$(WK_WHICH_BUILD_SYSTEM))
            WK_USE_NEW_BUILD_SYSTEM_legacy = NO
            WK_USE_NEW_BUILD_SYSTEM_not_legacy = YES

        We can then use WK_USE_NEW_BUILD_SYSTEM where we used to use the
        externally-defined USE_NEW_BUILD_SYSTEM.

        * Makefile.shared:

2020-08-11  Philippe Normand  <pnormand@igalia.com>

        [GStreamer] gst-full standalone library support
        https://bugs.webkit.org/show_bug.cgi?id=215262

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/GStreamerChecks.cmake:
        * Source/cmake/GStreamerDefinitions.cmake:

2020-08-03  Wenson Hsieh  <wenson_hsieh@apple.com>

        Remove the ENABLE_DATA_INTERACTION feature flag
        https://bugs.webkit.org/show_bug.cgi?id=215091

        Reviewed by Megan Gardner.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-07-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK4] Enable API tests
        https://bugs.webkit.org/show_bug.cgi?id=214344

        Reviewed by Adrian Perez de Castro.

        Build API tests for GTK4 too.

        * Source/cmake/OptionsGTK.cmake:

2020-07-29  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.29.2 release

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

2020-07-29  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.4 release

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

2020-07-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Support for backdrop-filter
        https://bugs.webkit.org/show_bug.cgi?id=169988

        Reviewed by Adrian Perez de Castro.

        Enable FILTERS_LEVEL_2 by default for WPE and GTK.

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

2020-07-27  Alberto Garcia  <berto@igalia.com>

        [GTK] Default to OpenGL ES in arm
        https://bugs.webkit.org/show_bug.cgi?id=214828

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2020-07-24  Yusuke Suzuki  <ysuzuki@apple.com>

        Add project.pbxproj editorconfig entry
        https://bugs.webkit.org/show_bug.cgi?id=214778

        Reviewed by Mark Lam.

        We should use tab for project.pbxproj file.

        * .editorconfig:

2020-07-21  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.29.1 release

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

2020-07-20  Adrian Perez de Castro  <aperez@igalia.com>

        [CMake] Do not use ${DEVELOPER_MODE} directly, as it may be undefined

        Unreviewed build fix.

        Instead of using ${DEVELOPER_MODE} directly, which might be undefined an cause errors, set
        first ENABLE_DEVELOPER_MODE based on its value with SET_AND_EXPOSE_TO_BUILD(), and then use
        the ${ENABLE_DEVELOPER_MODE} expansion in the rest of the file.

        * Source/cmake/OptionsWPE.cmake:

2020-07-13  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        Unreviewed. Fixed copy&paste typos of gcrypt -> Thunder

        * Source/cmake/FindThunder.cmake:

2020-07-11  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] Conic gradients support
        https://bugs.webkit.org/show_bug.cgi?id=214216

        Reviewed by Sam Weinig.

        * Source/cmake/OptionsWin.cmake: Turn ENABLE_CSS_CONIC_GRADIENTS on.

2020-07-10  Don Olmstead  <don.olmstead@sony.com> and Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo] WOFF2 font support
        https://bugs.webkit.org/show_bug.cgi?id=214174

        Reviewed by Per Arne Vollan.

        * Source/cmake/OptionsWinCairo.cmake: Unmarked fast/text/woff2-totalsfntsize.html and fast/text/woff2.html.

2020-07-10  Xabier Rodriguez Calvar  <calvaris@igalia.com>

        [GStreamer][EME][OpenCDM] Implement OpenCDM support
        https://bugs.webkit.org/show_bug.cgi?id=213550

        Reviewed by Philippe Normand.

        Added support to enable OpenCDM and find it it needed.

        * Source/cmake/FindOpenCDM.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-07-08  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.3 release

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

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

        [CMake] Fix typo in version variable assingment in FindWOFF2.cmake
        https://bugs.webkit.org/show_bug.cgi?id=214012

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindWOFF2.cmake: Properly use PC_WOFF2_VERSION as the version
        detected from pkg-config.

2020-07-04  Sergio Villar Senin  <svillar@igalia.com>

        [Flatpak SDK] Require OpenXR 1.0.9
        https://bugs.webkit.org/show_bug.cgi?id=213930

        Reviewed by Philippe Normand.

        Require version 1.0.9 because is the first one that include EGL support for Monado.

        * Source/cmake/OptionsWPE.cmake:

2020-07-03  Darin Adler  <darin@apple.com>

        Make generate-unified-sources.sh not depend on features being listed in FEATURE_DEFINES environment variable
        https://bugs.webkit.org/show_bug.cgi?id=212420

        Reviewed by Don Olmstead.

        * Source/cmake/WebKitCommon.cmake: Removed call to SET_CONFIGURATION_FOR_UNIFIED_SOURCE_LISTS.
        * Source/cmake/WebKitFeatures.cmake: Removed SET_CONFIGURATION_FOR_UNIFIED_SOURCE_LISTS.
        * Source/cmake/WebKitMacros.cmake: Removed use of "--feature-flags" when invoking the
        generate-unified-source-bundles.rb, which also means no longer depending on the
        UNIFIED_SOURCE_LIST_ENABLED_FEATURES variable, which was set by the
        SET_CONFIGURATION_FOR_UNIFIED_SOURCE_LISTS function.

2020-07-03  Sam Weinig  <weinig@apple.com>

        Remove support for ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE
        https://bugs.webkit.org/show_bug.cgi?id=213932

        Reviewed by Darin Adler.

        Removes support for non-standard <input type="datetime">, currently being 
        guarded by the macro ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE. This macro, was
        added back in 2013 as a temporary measure to support some engines who shipped
        support for <input type="datetime">. It is currently not enabled for any
        ports so now seems like as good a time as any to remove it.

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

2020-07-02  Alex Christensen  <achristensen@webkit.org>

        Update Mac CMake build

        * Source/cmake/OptionsMac.cmake:

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

        [CMake] Add WOFF2 targets
        https://bugs.webkit.org/show_bug.cgi?id=213865

        Reviewed by Fujii Hironori.

        Rework the Find module for WOFF2 to provide targets for libwoff2common and
        libwoff2dec. Previously only libwoff2dec was specified in the find module. This
        is because pkg-config works on that platform and because shared libraries are
        supported. Neither is true for Windows so the module was expanded in anticipation
        of support for WinCairo.

        * Source/cmake/FindWOFF2.cmake: Added.
        * Source/cmake/FindWOFF2Dec.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2020-06-30  Andres Gonzalez  <andresg_22@apple.com>

        Code cleanup in AccessibilityMenuList.cpp and AXIsolatedTree.h.
        https://bugs.webkit.org/show_bug.cgi?id=213806

        Reviewed by Darin Adler.

        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

2020-06-29  Guowei Yang  <guowei_yang@apple.com>

        Adding Experimental Feature Flags for CoreImage backed SVG/CSS Filters
        https://bugs.webkit.org/show_bug.cgi?id=213578

        Reviewed by Darin Adler, Simon Fraser, Myles C. Maxfield.

        Preparing to implement CoreImage backed filter rendering
        Needs Compiler guards and experimental feature guard.

        * Source/cmake/WebKitFeatures.cmake: added definition of 
          CoreImage-accelerated filter rendering feature flag, 
          ENABLE_CORE_IMAGE_ACCELERATED_FILTER_RENDER

2020-06-29  Tetsuharu Ohzeki  <tetsuharu.ohzeki@gmail.com>

        Remove ENABLE_STREAMS_API compilation flag
        https://bugs.webkit.org/show_bug.cgi?id=213728

        Reviewed by Sam Weinig.

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

2020-06-25  Diego Pino Garcia  <dpino@igalia.com>

        [GTK] Enable WEB_API_STATISTICS
        https://bugs.webkit.org/show_bug.cgi?id=213592

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsGTK.cmake:

2020-06-24  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.2 release

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

2020-06-22  Saam Barati  <sbarati@apple.com>

        Allow building JavaScriptCore Mac+arm64 in public SDK build
        https://bugs.webkit.org/show_bug.cgi?id=213472

        Reviewed by Sam Weinig.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-06-18  Tim Horton  <timothy_horton@apple.com>

        Remove some vestiges of the 32-bit Plugin Process
        https://bugs.webkit.org/show_bug.cgi?id=213361

        Reviewed by Dan Bernstein.

        * Makefile.shared:
        This hack from r203348 is no longer needed, because WebKit cannot be built for 32-bit anymore.

2020-06-17  Michael Catanzaro  <mcatanzaro@gnome.org>

        REGRESSION(r260760): ENABLE_GRAPHICS_CONTEXT_GL should be ON, not TRUE
        https://bugs.webkit.org/show_bug.cgi?id=212057

        Reviewed by Carlos Garcia Campos.

        This is already set by feature policy. Don't clobber it.

        * Source/cmake/OptionsGTK.cmake:

2020-06-10  Dean Jackson  <dino@apple.com>

        Add a dynamic library target for ANGLE
        https://bugs.webkit.org/show_bug.cgi?id=207591

        Reviewed by Tim Horton.

        In preparation for moving to a dynamic library, start
        by compiling and linking it. It isn't used anywhere
        but getting it into the build will help Apple's
        build system remain happy as we migrate, as well
        as have the system know it exists for building
        the shared system cache.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2020-06-12  Adrian Perez de Castro  <aperez@igalia.com>

        Build is broken with EVENT_LOOP_TYPE=GLib
        https://bugs.webkit.org/show_bug.cgi?id=212987

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsJSCOnly.cmake: Add gio-unix as a required component of the GLib
        package, as it is needed for the remote inspector support with EVENT_LOOP_TYPE=GLib.

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

        [GTK4] Get MiniBrowser ready for GTK4
        https://bugs.webkit.org/show_bug.cgi?id=210276

        Reviewed by Adrian Perez de Castro.

        Bump GTK4 required version.

        * Source/cmake/OptionsGTK.cmake:

2020-06-07  Philippe Normand  <pnormand@igalia.com>

        Remove ENABLE_VIDEO_TRACK ifdef guards
        https://bugs.webkit.org/show_bug.cgi?id=212568

        Reviewed by Youenn Fablet.

        VIDEO_TRACK has been enabled by default on all ports for a long time. As the spec is stable,
        the feature can unconditionally be enabled and is now guarded under ENABLE(VIDEO).

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

2020-06-05  Andy Estes  <aestes@apple.com>

        [Apple Pay] Remove conditionals for ENABLE_APPLE_PAY_SESSION_V(3|4)
        https://bugs.webkit.org/show_bug.cgi?id=212541
        <rdar://problem/63781452>

        Reviewed by Darin Adler.

        APPLE_PAY_SESSION_V(3|4) is now enabled whenever APPLE_PAY itself is enabled.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-06-04  Mark Lam  <mark.lam@apple.com>

        Editors should not automatically trim trailing whitespace.
        https://bugs.webkit.org/show_bug.cgi?id=212763

        Reviewed by Yusuke Suzuki.

        Doing so would force a lot of unnecessary code changes and make patches hard to
        review.  It is common WebKit practice to not make unrelated changes in patches.

        * .editorconfig:

2020-06-02  Keith Rollin  <krollin@apple.com>

        Revert FEATURES_DEFINES related changes
        https://bugs.webkit.org/show_bug.cgi?id=212664
        <rdar://problem/63893033>

        Reviewed by Andy Estes.

        Bug 262310, Bug 262311, Bug 262318, and Bug 262331 involve changes to
        FEATURE_DEFINES and how the values there relate to those found in the
        Platform*.h files. Those changes break XCBuild (by removing the
        .xcfilelist related to UnifiedSources and the process for generating
        them), and so are being reverted.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-06-02  Yoshiaki JITSUKAWA  <yoshiaki.jitsukawa@sony.com>

        Add .editorconfig
        https://bugs.webkit.org/show_bug.cgi?id=212463

        Add .editorconfig for Visual Studio.
        
        Initally following file types are supported:
          - .h/.c/.cpp
          - CMakeFilelist.txt/.cmake
          - .editorconfig itself

        Reviewed by Fujii Hironori.

        * .editorconfig: Added.

2020-05-29  Andy Estes  <aestes@apple.com>

        [Apple Pay] Remove conditionals for ENABLE_APPLE_PAY_SESSION_V(3|4)
        https://bugs.webkit.org/show_bug.cgi?id=212541

        Reviewed by Darin Adler.

        APPLE_PAY_SESSION_V(3|4) is now enabled whenever APPLE_PAY itself is enabled.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-05-29  Keith Rollin  <krollin@apple.com>

        Revert switch to XCBuild
        https://bugs.webkit.org/show_bug.cgi?id=212530
        <rdar://problem/63764632>

        Unreviewed build fix.

        Bug 209890 enabled the use of XCBuild by default. Since then, some
        build issues have shown up. While addressing them, temporarily turn
        off the use of XCBuild by default.

        * Makefile.shared:
        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

2020-05-27  Kenneth Russell  <kbr@chromium.org>

        Update MobileMiniBrowser project settings to current Xcode
        https://bugs.webkit.org/show_bug.cgi?id=212428

        Reviewed by Dean Jackson.

        Accept Xcode's suggested upgrade to use the new build system.

        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

2020-05-27  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Manette_INCLUDE_DIR and Manette_LIBRARY are undefined.
        https://bugs.webkit.org/show_bug.cgi?id=212236

        Reviewed by Michael Catanzaro.

        The cmake complains Manette_INCLUDE_DIR and Manette_LIBRARY are missing
        in finding the manette package where GAMEPAD is enabled for the gtk port.
        In r261965, we thought they would be automatically defined with IMPORTED_TARGET
        but they seem not. We explicitly find the header and library paths, following FindOpenJPEG.cmake.

        * Source/cmake/FindManette.cmake:
        * Source/cmake/OptionsGTK.cmake: REQUIRED removed.

2020-05-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][WK2] Use GraphicsLayerTextureMapper for Accelerated Compositing mode
        https://bugs.webkit.org/show_bug.cgi?id=211883

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWinCairo.cmake: Added a new build option
        USE_GRAPHICS_LAYER_TEXTURE_MAPPER, and set ON as the default.

2020-05-26  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add static analyzers
        https://bugs.webkit.org/show_bug.cgi?id=212280

        Reviewed by David Kilzer.

        Add support for static analyzers within CMake builds. Supported analyzers are
        clang-tidy, iwyu (include-what-you-use) and lwyu (link-what-you-use). They can
        be enabled by passing a semicolon separated list to CMake through the ANALYZERS
        option.

        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        * Source/cmake/WebKitMacros.cmake:
        * Source/cmake/WebKitStaticAnalysis.cmake: Added.

2020-05-26  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * Makefile.shared:
        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

2020-05-22  Yoshiaki JITSUKAWA  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Enable JSC shell to run
        https://bugs.webkit.org/show_bug.cgi?id=212294

        Reviewed by Ross Kirsling.

        * Source/cmake/OptionsPlayStation.cmake:

2020-05-21  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Add minimal WKView API to enable TestWebKitAPI
        https://bugs.webkit.org/show_bug.cgi?id=211868

        Reviewed by Alex Christensen.

        Enable TestWebKitAPI

        * Source/cmake/OptionsPlayStation.cmake:
        Disable FullScreen API and ContextMenus.

2020-05-20  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Implement connected and disconnected events of GAMEPAD API with libmanette
        https://bugs.webkit.org/show_bug.cgi?id=133854

        Reviewed by Carlos Garcia Campos.

        This patch brings initial GAMEPAD API support to the gtk port. We use libmanette,
        a simple GObject game controller library to handle gamepad connection and input.

        * Source/cmake/FindManette.cmake: Added to detect libmanette headers and libs installed in host system.
        * Source/cmake/OptionsGTK.cmake: Added a private flag, ENABLE_GAMEPAD.
          Once libmanette is found, we expose another build flag, USE_MANETTE for other ports.

2020-05-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Fix GTK4 build with GTK 3.98.4

        * Source/cmake/OptionsGTK.cmake:

2020-05-18  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Allow gtk-doc and introspection in cross builds
        https://bugs.webkit.org/show_bug.cgi?id=212026

        Reviewed by Adrian Perez de Castro.

        Stop disabling these options in cross builds.

        * Source/cmake/OptionsGTK.cmake:

2020-05-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.29.1 release

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

2020-05-10  Basuke Suzuki  <basuke.suzuki@sony.com>

        Add ENABLE_PERIODIC_MEMORY_MONITOR flag.
        https://bugs.webkit.org/show_bug.cgi?id=211704

        Reviewed by Yusuke Suzuki.

        Define ENABLE_PERIODIC_MEMORY_MONITOR flags in specific platform's options.
        Enable it for PlayStation port.

        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-05-09  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use WEBKIT_EXECUTABLE in MallocBench
        https://bugs.webkit.org/show_bug.cgi?id=211665

        Reviewed by Yusuke Suzuki.

        Add the PerformanceTest subdirectory for all ports when in DEVELOPER_MODE.

        * CMakeLists.txt:

2020-05-07  Philippe Normand  <pnormand@igalia.com>

        [WPE][Qt] Enable by default
        https://bugs.webkit.org/show_bug.cgi?id=211517

        Reviewed by Adrian Perez de Castro.

        * Source/cmake/OptionsWPE.cmake: Now that the EWS and bots use the
        Flatpak SDK, Qt5 libs are available so we can enable the module
        and have bots run its tests.

2020-05-05  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        Compile GPUProcess in WPE port as experimental feature
        https://bugs.webkit.org/show_bug.cgi?id=211442

        Reviewed by Don Olmstead.

        Enable GPUProcess in WPE.

        * Source/cmake/OptionsWPE.cmake: enable GPU Process as
        experimental feature

2020-05-05  Rob Buis  <rbuis@igalia.com>

        [GTK][WPE][Fetch API] Stale-while-revalidate is not enabled
        https://bugs.webkit.org/show_bug.cgi?id=206416

        Reviewed by Carlos Alberto Lopez Perez.

        Enable s-w-r for GTK/WPE.

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

2020-05-04  Darin Adler  <darin@apple.com>

        Remove unused HAVE(STRINGS_H)
        https://bugs.webkit.org/show_bug.cgi?id=211377

        Reviewed by Alex Christensen.

        * Source/cmake/OptionsCommon.cmake: Remove code to set HAVE_STRINGS_H.

2020-05-01  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=211324

        Reviewed by Don Olmstead.

        Use correct target namespace.

        * Source/cmake/target/WebCore.cmake:

2020-05-01  Don Olmstead  <don.olmstead@sony.com>

        Use export macros on all platforms
        https://bugs.webkit.org/show_bug.cgi?id=211293

        Reviewed by Michael Catanzaro.

        Remove explicit setting of USE_EXPORT_MACROS from all ports.

        Ports that use declspec require no changes. Ports with visibility attributes
        need to set that as the default in the CMake. This is already done on the
        PlayStation port.

        The export macros can also be overridden for different build variants if
        required. For example production builds may want to override them.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsPlayStation.cmake:

2020-04-29  Víctor Manuel Jáquez Leal  <vjaquez@igalia.com>

        [GPUP][GTK] compile GPUProcess in GTK port
        https://bugs.webkit.org/show_bug.cgi?id=208814

        Reviewed by Don Olmstead.

        Enable GPUProcess compilation in WebKitGTK as an experimental
        feature

        * Source/cmake/OptionsGTK.cmake: sort alphabetically WebKit
        options for GTK port and enable GPU_PROCESS if experimental
        features option is enabled.

2020-04-29  Sergio Villar Senin  <svillar@igalia.com>

        Add ccls config file to the list of ignored files
        https://bugs.webkit.org/show_bug.cgi?id=210426

        Reviewed by Tim Horton.

        * .gitignore: ccls can read configuration options from a .ccls file in
        the project root directory. Let's just ignore it.

2020-04-28  Christopher Reid  <chris.reid@sony.com>

        [Win] Bundle Inspector Resources in Release builds
        https://bugs.webkit.org/show_bug.cgi?id=210942

        Reviewed by Fujii Hironori.

        Add ENABLE_WEBINSPECTORUI so the resource copy can be disabled
        on platforms without inspector frontends.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/PlatformWin.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsPlayStation.cmake:

2020-04-28  Philippe Normand  <pnormand@igalia.com>

        [GStreamer][MediaStream] Doesn't build with GStreamer 1.10
        https://bugs.webkit.org/show_bug.cgi?id=210271

        Reviewed by Xabier Rodriguez-Calvar.

        * Source/cmake/GStreamerChecks.cmake: Require at least GStreamer
        1.12 when building with WebRTC/MediaStream enabled.

2020-04-27  Philippe Normand  <pnormand@igalia.com>

        [GTK] ENABLE(OPENGL) remmants...
        https://bugs.webkit.org/show_bug.cgi?id=211077

        Reviewed by Adrian Perez de Castro.

        ENABLE(OPENGL) was renamed to ENABLE(GRAPHICS_CONTEXT_GL) in
        r254064 but not in all the code base...

        * Source/cmake/GStreamerDependencies.cmake:
        * Source/cmake/OptionsGTK.cmake:

2020-04-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK4] Make it possible to build with GTK4 without errors
        https://bugs.webkit.org/show_bug.cgi?id=210967

        Reviewed by Adrian Perez de Castro.

        Disable API tests and GObject introspection when building with GTK4.

        * Source/cmake/OptionsGTK.cmake:

2020-04-27  Diego Pino Garcia  <dpino@igalia.com>

        Unreviewed, reverting r260672.

        [GTK] WebInspector tests are timing out after r260672

        Reverted changeset:

        "[Win] Bundle Inspector Resources in Release builds"
        https://bugs.webkit.org/show_bug.cgi?id=210942
        https://trac.webkit.org/changeset/260672

2020-04-26  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Enable TestWTF and TestWebCore
        https://bugs.webkit.org/show_bug.cgi?id=208849

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:
        - Add PLAYSTATION_COPY_SHARED_LIBRARIES() to install dependencies.
        - Add -g option for "Release" configuration.
        - Drop "RelWithDebInfo" and "MinSizeRel" configuration.

2020-04-24  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK][WPE][JSCOnly] compile error when -DWTF_CPU_ARM64_CORTEXA53=ON set for arm64
        https://bugs.webkit.org/show_bug.cgi?id=197192

        Reviewed by Yusuke Suzuki.

        * Source/cmake/OptionsCommon.cmake:

2020-04-24  Christopher Reid  <chris.reid@sony.com>

        [Win] Bundle Inspector Resources in Release builds
        https://bugs.webkit.org/show_bug.cgi?id=210942

        Reviewed by Fujii Hironori.

        Add ENABLE_WEBINSPECTORUI so the resource copy can be disabled
        on platforms without inspector frontends.

        * CMakeLists.txt:
        * Source/CMakeLists.txt:
        * Source/PlatformWin.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsPlayStation.cmake:

2020-04-24  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=210971

        Reviewed by Brent Fulgham.

        PAL is built as a static library.

        * Source/cmake/target/PAL.cmake:

2020-04-23  Yusuke Suzuki  <ysuzuki@apple.com>

        Make JSCOnly work on macOS
        https://bugs.webkit.org/show_bug.cgi?id=210953

        Reviewed by Ross Kirsling.

        In JSCOnly port on macOS, we should disable ICU API renaming because OS shipped ICU does not have version suffix.

        * Source/cmake/OptionsJSCOnly.cmake:

2020-04-22  Darin Adler  <darin@apple.com>

        [Cocoa] Build with UChar as char16_t even in builds that use Apple's internal SDK
        https://bugs.webkit.org/show_bug.cgi?id=210845

        Reviewed by Anders Carlsson.

        * Source/cmake/OptionsCommon.cmake: Move ICU-configuring macros to Platform.h.
        * Source/cmake/OptionsJSCOnly.cmake: Ditto.
        * Source/cmake/OptionsMac.cmake: Ditto.

2020-04-22  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use WEBKIT_EXECUTABLE in WebKitTestRunner
        https://bugs.webkit.org/show_bug.cgi?id=210132

        Reviewed by Adrian Perez de Castro.

        Add a WebKitTestRunner derived sources directory.

        * Source/cmake/WebKitFS.cmake:

2020-04-21  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][CMake] Make gtk-unix-print a component of FindGTK.cmake
        https://bugs.webkit.org/show_bug.cgi?id=210792

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindGTK.cmake: Support an "unix-print" component.
        * Source/cmake/FindGTKUnixPrint.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake: Use the "unix-print" component of the GTK find module.

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

        [GTK][WPE] Enable resource load statistics
        https://bugs.webkit.org/show_bug.cgi?id=210184

        Reviewed by Žan Doberšek.

        Enable resource load statistics.

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

2020-04-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::WebCore target
        https://bugs.webkit.org/show_bug.cgi?id=210445

        Reviewed by Michael Catanzaro.

        Add a target file for internal Apple Windows builds.

        * Source/cmake/target/WebCore.cmake: Added.

2020-04-16  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK4] Disable netscape plugins API
        https://bugs.webkit.org/show_bug.cgi?id=210552

        Reviewed by Adrian Perez de Castro.

        Because GTK4 is the future and NPAPI plugins the past.

        * Source/cmake/OptionsGTK.cmake:

2020-04-15  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Do not run gtk-doc when building with GTK4

        It's not supported yet.

        * Source/PlatformGTK.cmake:

2020-04-13  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][CMake] Introduce an USE_GTK4 build option
        https://bugs.webkit.org/show_bug.cgi?id=210154

        Reviewed by Carlos Garcia Campos.

        Do the bare minimum changes to build against GTK4 and produce a WebKit port library with a
        different name than GTK3 builds. Note that this does not attempt to make the built artifacts
        parallel-installable yet, though at least the main library, headers, and the pkg-config .pc
        file should be safe to install. The final names for built artifacts for GTK4 builds may
        still change.

        * Source/cmake/OptionsGTK.cmake: Add a new USE_GTK4 public build option, which defaults
        to FALSE for now, and depending on its value choose the required version of GTK and set
        a different API version versions. This is enough to build a library with a different
        name (libwebkit2gtk-5.0 vs. libwebkit2gtk-4.0) when GTK4 is in use.

2020-04-10  Philippe Normand  <pnormand@igalia.com>

        [Flatpak SDK] Improved sccache support
        https://bugs.webkit.org/show_bug.cgi?id=210027

        Reviewed by Žan Doberšek.

        * Source/cmake/WebKitCCache.cmake: Check for sccache if one of its
        environment variables has been set as well, otherwise the local
        disk cache would be used, if WEBKIT_USE_SCCACHE is set to 1.

2020-04-08  Ross Kirsling  <ross.kirsling@sony.com>

        Remove ENABLE_INTL define
        https://bugs.webkit.org/show_bug.cgi?id=210164

        Reviewed by Darin Adler.

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

2020-04-08  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Update import of libdl stubs for new Angle dladdr use
        https://bugs.webkit.org/show_bug.cgi?id=210200

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:
        Use find_package to get libdl wrappers on playstation, include
        them in both executables and shared libraries.

2020-04-08  Truitt Savell  <tsavell@apple.com>

        Unreviewed, reverting r259708.

        Broke the iOS device Build

        Reverted changeset:

        "Enable the use of XCBuild by default in Apple builds"
        https://bugs.webkit.org/show_bug.cgi?id=209890
        https://trac.webkit.org/changeset/259708

2020-04-08  Keith Rollin  <krollin@apple.com>

        Enable the use of XCBuild by default in Apple builds
        https://bugs.webkit.org/show_bug.cgi?id=209890
        <rdar://problem/44182078>

        Reviewed by Darin Adler.

        Switch from the "legacy" Xcode build system to the "new" build system
        (also known as "XCBuild"). Switching to the new system speeds up
        builds by a small percentage, better validates projects for
        build-related issues (such as dependency cycles), lets WebKit benefit
        from future improvements in XCBuild such as those coming from the
        underlying llbuild open source project, and prepares us for any other
        tools built for this new ecosystem.

        Specific changes:

        - Remove Xcode project and workspace settings that selected the Build
          system, allowing the default to take hold (which is currently the
          New build system).
        - Updated webkitdirs.pm with a terser check for Xcode version.
        - Update build-webkit and Makefile.shared to be explicit when using
          the old build system (no longer treat it as a default or fall-back
          configuration).
        - Update various xcconfig files similarly to treat the default as
          using the new build system.
        - Update various post-processing build steps to check for Xcode 11.4
          and to no longer treat the default as using the old build system.

        * Makefile.shared:
        * WebKit.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:

2020-04-08  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Release logs are unconditionally filling the journal
        https://bugs.webkit.org/show_bug.cgi?id=209421

        Reviewed by Carlos Alberto Lopez Perez.

        Re-enable Systemd logging and make it opt-in via the WEBKIT_DEBUG environment variable.

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

2020-04-07  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK] CMake find module for GTK4
        https://bugs.webkit.org/show_bug.cgi?id=210110

        Reviewed by Don Olmstead.

        Rename FindGTK3.cmake as FindGTK.cmake, make it provide a GTK::GTK imported target,
        and rewrite the logic to detect which targets (backends) have been built into GTK
        to use the "targets" pkg-config variable instead of checking for multiple pkg-config
        modules.

        * Source/cmake/FindGDK3.cmake: Removed.
        * Source/cmake/FindGTK.cmake: Added.
        * Source/cmake/FindGTK3.cmake: Removed. This is now unused because the GTK::GTK target
        will transitively depend on GDK3 when using GTK3 and bring in the compiler and linker
        options automatically without needing to use a separate find module for GDK.
        * Source/cmake/OptionsGTK.cmake: Use the GTK::GTK imported target, change variables
        prefixed with GTK3_ to use the GTK_ prefix, and remove variables which are not needed
        anymore when using the target (GTK_LIBRARIES, GTK_INCLUDE_DIRS, GDK_LIBRARIES and
        GDK_INCLUDE_DIRS).

2020-04-06  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use WEBKIT_EXECUTABLE in DumpRenderTree
        https://bugs.webkit.org/show_bug.cgi?id=210059

        Reviewed by Fujii Hironori.

        Add a DumpRenderTree derived sources directory.

        * Source/cmake/WebKitFS.cmake:

2020-04-06  Ross Kirsling  <ross.kirsling@sony.com>

        Update minimum ICU version to 60.2
        https://bugs.webkit.org/show_bug.cgi?id=209694

        Reviewed by Darin Adler.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:
        Indicate 60.2 as minimum version (as required by GTK for supporting Ubuntu 18.04 LTS).
        Also ensure that the C++ API is hidden for all platforms.

2020-04-05  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use WEBKIT_EXECUTABLE in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=206894

        Reviewed by Adrian Perez de Castro.

        Add a MiniBrowser derived sources directory.

        * Source/cmake/WebKitFS.cmake:

2020-04-05  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::WebKit target
        https://bugs.webkit.org/show_bug.cgi?id=210033

        Reviewed by Fujii Hironori.

        Use SET_AND_EXPOSE_TO_BUILD for the Plugin process since ENABLE(PLUGIN_PROCESS)
        is used in the source code.

        * Source/cmake/OptionsGTK.cmake:

2020-04-02  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r259390.
        https://bugs.webkit.org/show_bug.cgi?id=209944

        It broke WinCairo builds (Requested by fujihiro on #webkit).

        Reverted changeset:

        "Enable offlineasm debug annotations for GCC"
        https://bugs.webkit.org/show_bug.cgi?id=207119
        https://trac.webkit.org/changeset/259390

2020-04-01  Don Olmstead  <don.olmstead@sony.com>

        [GPUP][PlayStation] Enable GPU Process
        https://bugs.webkit.org/show_bug.cgi?id=209865

        Reviewed by Eric Carlson.

        Enable GPU Process for development builds as an experimental feature.

        * Source/cmake/OptionsPlayStation.cmake:

2020-04-01  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Use OBJECT libraries for WebCore and PAL
        https://bugs.webkit.org/show_bug.cgi?id=209835

        Reviewed by Ross Kirsling.

        When compiling WebCore in debug mode ranlib was having issues with the size of
        libWebCore.a. This is similar to what happened with Visual Studio and WinCairo.

        Additionally hidden visibility defaults are added for the port.

        * Source/cmake/OptionsPlayStation.cmake:

2020-03-30  Zan Dobersek  <zdobersek@igalia.com>

        [WPE] Can't create WebGL context after r259139
        https://bugs.webkit.org/show_bug.cgi?id=209722

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsWPE.cmake: Disable WebGL2 for WPE until
        the ANGLE-backed implementation can be used for it.

2020-03-26  Don Olmstead  <don.olmstead@sony.com>

        [MSVC] Remove experimental lambda processor usage
        https://bugs.webkit.org/show_bug.cgi?id=209358

        Reviewed by Fujii Hironori.

        Remove /experimental:newLambdaProcessor since WebKit is no longer able to build
        with this setting as of Visual Studio 16.5.0.

        * Source/cmake/OptionsMSVC.cmake:

2020-03-26  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] lld-link: error: /manifestdependency: is not allowed in .drectve
        https://bugs.webkit.org/show_bug.cgi?id=204831

        Reviewed by Ross Kirsling.

        * Source/cmake/WebKitMacros.cmake (WEBKIT_EXECUTABLE): Added /manifestdependency linkder option if WIN32.

2020-03-26  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, reverting r259035.
        https://bugs.webkit.org/show_bug.cgi?id=209597

        broke windows layout-tests (Requested by aakashjain on
        #webkit).

        Reverted changeset:

        "[Win] lld-link: error: /manifestdependency: is not allowed in
        .drectve"
        https://bugs.webkit.org/show_bug.cgi?id=204831
        https://trac.webkit.org/changeset/259035

2020-03-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win] lld-link: error: /manifestdependency: is not allowed in .drectve
        https://bugs.webkit.org/show_bug.cgi?id=204831

        Reviewed by Ross Kirsling.

        clang-cl doesn't support #pragma comment(linker, "/manifestdependency ..").
        Use an linker option instead.

        * Source/cmake/WebKitMacros.cmake (WEBKIT_EXECUTABLE): Added -manifestdependency linkder option if WIN32.

2020-03-23  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Allow distributors to brand user agent
        https://bugs.webkit.org/show_bug.cgi?id=162611

        Reviewed by Adrian Perez de Castro.

        Add build option for inserting distributor branding into the user agent string.

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

2020-03-23  Philippe Normand  <pnormand@igalia.com>

        [GTK][WPE] Disable systemd logging by default

        Rubber-stamped by Žan Doberšek.

        The logAlways logs are filling the journal way too fast currently,
        specially on EWS running tests and buildbots. For the time being
        disable logging until we figure out a better way to handle this.

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

2020-03-21  Michael Catanzaro  <mcatanzaro@gnome.org>

        [GTK] Use ${PYTHON_EXECUTABLE} to run generate-gtkdoc
        https://bugs.webkit.org/show_bug.cgi?id=208970

        Reviewed by Konstantin Tokarev.

        There's no need to rely on shebangs when executing python scripts from CMake. This should
        ensure the script always works even if the shebang does not.

        * Source/cmake/GtkDoc.cmake:

2020-03-20  Justin Michaud  <justin@justinmichaud.com>

        Fix JSCOnly build without unified sources
        https://bugs.webkit.org/show_bug.cgi?id=209343

        Reviewed by Keith Miller.

        * .gitignore:

2020-03-17  Philippe Normand  <pnormand@igalia.com>

        RELEASE_LOG should not be Cocoa specific
        https://bugs.webkit.org/show_bug.cgi?id=195182

        Reviewed by Konstantin Tokarev.

        Add a Systemd Journald Logger implementation, enabled by default
        in the GTK and WPE ports. When this is enabled, release logs will
        be sent to the Systemd Journal. To retrieve media logs for
        instance, this command can be used:

        $ journalctl WEBKIT_SUBSYSTEM=WebKitGTK WEBKIT_CHANNEL=Media

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

2020-03-16  Keith Rollin  <krollin@apple.com>

        Remove support for WebKitSystemInterface
        https://bugs.webkit.org/show_bug.cgi?id=208894
        <rdar://problem/60297590>

        Reviewed by Brent Fulgham.

        This project provided support for facilities that are now handled
        elsewhere and is no longer needed.

        * .gitignore:
        * Source/PlatformWin.cmake:
        * Source/cmake/OptionsAppleWin.cmake:

2020-03-13  Sergio Villar Senin  <svillar@igalia.com>

        [WebXR] IDLs, stubs and build configuration for WPE
        https://bugs.webkit.org/show_bug.cgi?id=208702

        Reviewed by Dean Jackson.

        Added a new compile flag for WEBXR which depends on WEBGL.

        For the WPE port, added OpenXR detection and USE_OPENXR define to be
        used in the sources. It also adds a dependency between USE_OPENXR and
        ENABLE_WEBXR.

        Largely based on previous work by Žan Doberšek.

        * Source/cmake/FindOpenXR.cmake: Added.
        * Source/cmake/OptionsWPE.cmake: Added mandatory OpenXR dependency if
        WEBXR is enabled exposing USE_OPENXR to the build.
        * Source/cmake/WebKitFeatures.cmake: Added ENABLE_WEBXR.
        * Source/cmake/tools/vsprops/FeatureDefines.props: Ditto.
        * Source/cmake/tools/vsprops/FeatureDefinesCairo.props: Ditto.

2020-03-14  Michael Catanzaro  <mcatanzaro@gnome.org>

        [CMake] Warning when ccache is not installed
        https://bugs.webkit.org/show_bug.cgi?id=208952

        Reviewed by Daniel Bates.

        Change the warning when ccache is not installed to a status message. We shouldn't be
        printing warnings except when there is an actual problem.

        * Source/cmake/WebKitCCache.cmake:

2020-03-13  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Eleminate mismatches between Find* module names and variables they set
        https://bugs.webkit.org/show_bug.cgi?id=208948

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindLibseccomp.cmake:
        * Source/cmake/FindWPEBackend_fdo.cmake: Renamed from Source/cmake/FindWPEBackend-fdo.cmake.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:

2020-03-12  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Find modules should find pkg-config with find_package(PkgConfig QUIET)
        https://bugs.webkit.org/show_bug.cgi?id=208948

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindATK.cmake:
        * Source/cmake/FindATKBridge.cmake:
        * Source/cmake/FindATSPI.cmake:
        * Source/cmake/FindCairo.cmake:
        * Source/cmake/FindCairoGL.cmake:
        * Source/cmake/FindEGL.cmake:
        * Source/cmake/FindEnchant.cmake:
        * Source/cmake/FindFontconfig.cmake:
        * Source/cmake/FindGDK3.cmake:
        * Source/cmake/FindGLIB.cmake:
        * Source/cmake/FindGObjectIntrospection.cmake:
        * Source/cmake/FindGStreamer.cmake:
        * Source/cmake/FindGTK3.cmake:
        * Source/cmake/FindGTKUnixPrint.cmake:
        * Source/cmake/FindHarfBuzz.cmake:
        * Source/cmake/FindLibEpoxy.cmake:
        * Source/cmake/FindLibNotify.cmake:
        * Source/cmake/FindLibPSL.cmake:
        * Source/cmake/FindLibSoup.cmake:
        * Source/cmake/FindLibseccomp.cmake:
        * Source/cmake/FindLibsecret.cmake:
        * Source/cmake/FindLibtasn1.cmake:
        * Source/cmake/FindLibxkbcommon.cmake:
        * Source/cmake/FindNghttp2.cmake:
        * Source/cmake/FindOpenGL.cmake:
        * Source/cmake/FindOpenGLES2.cmake:
        * Source/cmake/FindOpenJPEG.cmake:
        * Source/cmake/FindSQLite3.cmake:
        * Source/cmake/FindWOFF2Dec.cmake:
        * Source/cmake/FindWPE.cmake:
        * Source/cmake/FindWPEBackend-fdo.cmake:
        * Source/cmake/FindWayland.cmake:
        * Source/cmake/FindWaylandProtocols.cmake:
        * Source/cmake/FindWebP.cmake:

2020-03-12  Konstantin Tokarev  <annulen@yandex.ru>

        [CMake] Avoid calling FPHSA multiple time in FindPerlModules.cmake
        https://bugs.webkit.org/show_bug.cgi?id=208948

        Reviewed by Michael Catanzaro.

        * Source/cmake/FindPerlModules.cmake:

2020-03-09  Don Olmstead  <don.olmstead@sony.com>

        Add script to search for feature defines
        https://bugs.webkit.org/show_bug.cgi?id=208726

        Reviewed by Konstantin Tokarev.

        Sync feature defines with the FeatureDefines.xcconfig files present in the
        repository.

        * Source/cmake/WebKitFeatures.cmake:

2020-03-09  Don Olmstead  <don.olmstead@sony.com>

        Remove obsolete feature flags
        https://bugs.webkit.org/show_bug.cgi?id=208830

        Reviewed by Alex Christensen.

        Remove ENABLE_CSS_IMAGE_ORIENTATION, ENABLE_CUSTOM_SCHEME_HANDLER, ENABLE_FETCH_API,
        and ENABLE_WEB_PROCESS_SANDBOX from list of feature definitions since they're unused.
        Rename ENABLE_ACCESSIBILITY_STATIC_TREE to ENABLE_ACCESSIBILITY_ISOLATED_TREE.
        Sort the declarations within the block and always use Toggle instead of Enable within
        the descriptions.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-03-09  Antoine Quint  <graouts@apple.com>

        Remove the compile-time flag for Pointer Events
        https://bugs.webkit.org/show_bug.cgi?id=208821
        <rdar://problem/60223471>

        Reviewed by Dean Jackson.

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

2020-03-03  Fujii Hironori  <fujii.hironori@gmail.com>

        [Curl] Add TLS debugging feature to log encryption keys
        https://bugs.webkit.org/show_bug.cgi?id=208192
        <rdar://problem/59900616>

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWin.cmake:
        Changed the default ENABLE_TLS_DEBUG to OFF.

2020-02-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r257565.

        It broke WinCairo MiniBrowser

        Reverted changeset:

        "[CMake] Use WEBKIT_EXECUTABLE in MiniBrowser"
        https://bugs.webkit.org/show_bug.cgi?id=206894
        https://trac.webkit.org/changeset/257565

2020-02-28  Takashi Komori  <Takashi.Komori@sony.com>

        [Curl] Add TLS debugging feature to log encryption keys
        https://bugs.webkit.org/show_bug.cgi?id=208192

        Reviewed by Fujii Hironori.

        This patch enables recording encryption keys on curl port.
        When you set key log file path to environment variable SSLKEYLOGFILE on curl port, network process writes encryption keys into the path.
        The key log file follows the NSS key log format and this feature is as same as Chrome and Firefox have.

        See also: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format

        Test: No tests for this debugging feature. We have to check manually if the log file is generate.

        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWin.cmake:

2020-02-28  Keith Miller  <keith_miller@apple.com>

        Fix issue in cmake build for checking ccache
        https://bugs.webkit.org/show_bug.cgi?id=208377

        Reviewed by Carlos Alberto Lopez Perez.

        If either of the "readlink" or "which" commands fail when looking for the ccache prefix
        the output variables will be empty and an invalid expression will be provided to CMake.
        e.g. we will get something like:
        if ("0" "EQUAL" "0" "AND" "1" "EQUAL" "0" "AND" "STREQUAL" "/usr/local/bin/ccache")

        The fix is to wrap the output variables in the quotes when unboxing them in the if.

        * Source/cmake/WebKitCCache.cmake:

2020-02-27  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=208330

        Reviewed by Don Olmstead.

        Set framework headers directory for AppleWin build.

        * Source/cmake/target/TargetJavaScriptCore.cmake:
        * Source/cmake/target/TargetWTF.cmake:

2020-02-27  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebKit::PAL target
        https://bugs.webkit.org/show_bug.cgi?id=198493

        Reviewed by Michael Catanzaro.

        Define WebKit::PAL target for Apple internal Windows builds.

        * Source/cmake/target/PAL.cmake: Added.

2020-02-27  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use WEBKIT_EXECUTABLE in MiniBrowser
        https://bugs.webkit.org/show_bug.cgi?id=206894

        Reviewed by Adrian Perez de Castro.

        Add a MiniBrowser derived sources directory.

        * Source/cmake/WebKitFS.cmake:

2020-02-27  Adrian Perez de Castro  <aperez@igalia.com>

        [LFC][Integration] Build and enable for the WPE and GTK ports
        https://bugs.webkit.org/show_bug.cgi?id=208289

        Reviewed by Carlos Garcia Campos.

        Enable LFC for the WPE and GTK ports.

        * Source/cmake/OptionsGTK.cmake: LFC enabled as experimental feature.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2020-02-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Bump GTK version numbers

        * Source/cmake/OptionsGTK.cmake:

2020-02-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Add support for rendering slider ticks
        https://bugs.webkit.org/show_bug.cgi?id=208132

        Reviewed by Adrian Perez de Castro.

        Add a test case for sliders with ticks.

        * ManualTests/gtk/theme.html:

2020-02-25  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Stop using gtk foreign drawing API to style form controls
        https://bugs.webkit.org/show_bug.cgi?id=208129

        Reviewed by Adrian Perez de Castro.

        Add a test case for datalist element.

        * ManualTests/gtk/theme.html:

2020-02-24  Yusuke Suzuki  <ysuzuki@apple.com>

        Do not use target/icu.cmake
        https://bugs.webkit.org/show_bug.cgi?id=208173

        Reviewed by Don Olmstead.

        icu.cmake is removed in r256731. Use find_package + ICU since WebKit offers find_package implementation
        which can find appropriate system-installed ICU.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:

2020-02-24  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build.
        https://bugs.webkit.org/show_bug.cgi?id=208164

        Unreviewed build fix.

        Allow a warning which happens when building with older SDKs.

        * Source/cmake/OptionsMSVC.cmake:

2020-02-20  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Not set ccache compiler prefix if ccache its already the compiler binary in path.
        https://bugs.webkit.org/show_bug.cgi?id=208007

        Reviewed by Tim Horton.

        Detect if the compiler binary already points to the ccache binary and in that case don't
        set the ccache compiler prefix. Also export CCACHE_SLOPPINESS=time_macros if its not
        defined to other thing on the environment and add a some logging of related messages.

        * Source/cmake/WebKitCCache.cmake:

2020-02-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WebP targets
        https://bugs.webkit.org/show_bug.cgi?id=207982

        Reviewed by Adrian Perez de Castro.

        Modernize the FindWebP.cmake module so it creates targets that can be
        referenced rather than using WEBP_LIBRARIES and WEBP_INCLUDE_DIRS.
        Also making demux a component within the module, and allowing alternate names
        for the library to be set by the platform.

        * Source/cmake/FindWebP.cmake:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-02-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WPE::libwpe target
        https://bugs.webkit.org/show_bug.cgi?id=207970

        Reviewed by Adrian Perez de Castro.

        Redo the WPE find module to export a target.

        * Source/cmake/FindWPE.cmake:

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

        [GTK][WPE] Set ccache as compiler launcher, add opt-in sccache support
        https://bugs.webkit.org/show_bug.cgi?id=207838

        Reviewed by Carlos Alberto Lopez Perez.

        This change allows for more granular control over the compiler
        launcher configuration. The build host should no longer need to
        set ccache symbolic links. Additionally optional support for
        sccache is added, enabled when the WEBKIT_USE_SCCACHE environment
        variable is set to YES.

        * Source/cmake/WebKitCCache.cmake:

2020-02-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin targets
        https://bugs.webkit.org/show_bug.cgi?id=205166

        Reviewed by Darin Adler.

        Add WebKitFindPackage.cmake which wraps CMake's find_package to provide targets
        for common libraries.

        Rationale:
        1. There are a number of libraries which are found using CMake's internal Find modules
           that contain targets but not all of them are available in the minimum version of
           CMake we support, 3.10.
        2. Updating to CMake 3.12 or higher is not possible due to the WebKit GTK's support
           policy. It looks like the next time we can bump the version is spring 2021.
        3. Apple builds, both Mac and Windows, have libraries that won't be found using the
           stock CMake modules. AppleWin also has internal builds where all libraries have
           a DEBUG_SUFFIX of _debug that would not be picked up.

        In the implementation of find_package any Apple specific requirements are dealt with
        and the expected CMake values are populated. For all other cases CMake's original
        find_package is called so there's no behavior change. Afterwards if there is a library
        that has a target but the target was not created it is created from the definitions
        that are present from the find module at CMake 3.10.

        This makes it so all ports consistently have targets across all versions of CMake
        above the current minimum.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/WebKitCommon.cmake:
        * Source/cmake/WebKitFindPackage.cmake: Added.
        * Source/cmake/target/icu.cmake: Removed.

2020-02-14  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add Fontconfig::Fontconfig target
        https://bugs.webkit.org/show_bug.cgi?id=207730

        Reviewed by Adrian Perez de Castro.

        Redo the Fontconfig find module to export a target.

        * Source/cmake/FindFontconfig.cmake:

2020-02-10  Michael Catanzaro  <mcatanzaro@gnome.org>

        [CMake] Prepend -Wno-noexcept-type only to global CXX flags
        https://bugs.webkit.org/show_bug.cgi?id=207468

        Reviewed by Adrian Perez de Castro.

        -Wno-noexcept-type is a C++-specific flag that should not be passed to the C compiler. This
        causes a warning spam in GCC 10.

        * Source/cmake/WebKitCompilerFlags.cmake:

2020-02-10  Enrique Ocaña González  <eocanha@igalia.com>

        [GTK] Mouse pointer no longer hidden during fullscreen video playback
        https://bugs.webkit.org/show_bug.cgi?id=197346

        Reviewed by Adrian Perez de Castro.

        Enabled the CURSOR_VISIBILITY feature on the GTK port.

        * Source/cmake/OptionsGTK.cmake:

2020-02-06  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Use radio buttons instead of a combo for text direction in theme test

        * ManualTests/gtk/theme.html:

2020-02-05  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Build a shared JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=198446

        Reviewed by Fujii Hironori.

        Compile bmalloc and WTF as OBJECT libraries that are then linked into a shared
        JavaScriptCore. Using OBJECT libraries is a modern CMake way to have the behavior
        of --whole-archive.

        * Source/cmake/OptionsPlayStation.cmake:

2020-02-04  Don Olmstead  <don.olmstead@sony.com>

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

        Reviewed by Ross Kirsling.

        Turn back on API tests.

        * Source/cmake/OptionsPlayStation.cmake:

2020-02-04  Ross Kirsling  <ross.kirsling@sony.com>

        [CMake] Add Cairo::Cairo target
        https://bugs.webkit.org/show_bug.cgi?id=207159

        Reviewed by Konstantin Tokarev.

        * Source/cmake/FindCairo.cmake:
        * Source/cmake/OptionsPlayStation.cmake:

2020-02-02  Ting-Wei Lan  <lantw44@gmail.com>

        [CMake] Use opj_config.h to find OpenJPEG include directory
        https://bugs.webkit.org/show_bug.cgi?id=207100

        Reviewed by Konstantin Tokarev.

        WebKit needs OpenJPEG 2.2.0 or later versions, but it is possible for a
        system to have both OpenJPEG 1 and OpenJPEG 2 installed. However, some
        distributions do not put OpenJPEG 1 under a versioned directory and
        put its header file directly under /usr/include or /usr/local/include.
        Since CMake prefers its prefixes to paths given in HINTS, it is possible
        that openjpeg.h from OpenJPEG 1 is found before the one from OpenJPEG 2,
        causing WebKit to fail to build because of using the wrong header file.

        Resolve the problem by checking opj_config.h instead of openjpeg.h.
        OpenJPEG 1.5 does not have opj_config.h, so only OpenJPEG 2 can be
        found. This also makes it consistent with the code below which already
        uses opj_config.h.

        * Source/cmake/FindOpenJPEG.cmake:

2020-01-31  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add _PRIVATE_LIBRARIES to framework
        https://bugs.webkit.org/show_bug.cgi?id=207004

        Reviewed by Konstantin Tokarev.

        Use _PRIVATE_LIBRARIES to when creating a WebKit target to specify privately linked
        libraries. This fits with the current conventions in WebKit for CMake libraries and
        prevents appending to _LIBRARIES with a visibility modifier which likely has
        unintended consequences.

        * Source/cmake/WebKitMacros.cmake:

2020-01-30  Ross Kirsling  <ross.kirsling@sony.com>

        [CMake] Add SQLite::SQLite3 target
        https://bugs.webkit.org/show_bug.cgi?id=207005

        Reviewed by Don Olmstead.

        * Source/cmake/FindSQLite3.cmake: Added.
        * Source/cmake/FindSqlite.cmake: Removed.
        * Source/cmake/OptionsAppleWin.cmake: Actually use find_package.
        * Source/cmake/OptionsFTW.cmake: Sqlite -> SQLite3
        * Source/cmake/OptionsGTK.cmake: Sqlite -> SQLite3
        * Source/cmake/OptionsPlayStation.cmake: Sqlite -> SQLite3
        * Source/cmake/OptionsWPE.cmake: Sqlite -> SQLite3
        * Source/cmake/OptionsWinCairo.cmake: Sqlite -> SQLite3

2020-01-29  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MSVC] Add /experimental:newLambdaProcessor switch for better C++ conformance
        https://bugs.webkit.org/show_bug.cgi?id=204443

        Reviewed by Alex Christensen.

        MSVC has a bug of 'this' in lambda captures. It has caused
        compilation errors repeatedly.

        * Source/cmake/OptionsMSVC.cmake: Added /experimental:newLambdaProcessor switch.

2020-01-29  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Allow setting CMAKE_IGNORE_PATH from environment for bots
        https://bugs.webkit.org/show_bug.cgi?id=206964

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:

2020-01-28  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Should use light theme unless website declares support for dark themes in color-schemes property
        https://bugs.webkit.org/show_bug.cgi?id=197947

        Reviewed by Michael Catanzaro.

        Do not define HAVE_OS_DARK_MODE_SUPPORT.

        * Source/cmake/OptionsGTK.cmake:

2020-01-28  Don Olmstead  <don.olmstead@sony.com>

        [LFC][Integration] Build and enable on Windows
        https://bugs.webkit.org/show_bug.cgi?id=206165

        Reviewed by Darin Adler.

        Enable LFC for Windows.

        * Source/cmake/OptionsWin.cmake:

2020-01-24  Sergio Villar Senin  <svillar@igalia.com>

        Remove WebVR from the tree
        https://bugs.webkit.org/show_bug.cgi?id=206739

        Reviewed by Darin Adler.

        Removed WebVR and OpenVR build options for GTK and WPE ports.

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

2020-01-22  Don Olmstead  <don.olmstead@sony.com>

        [OpenSSL] Add stubs and build for Web Crypto
        https://bugs.webkit.org/show_bug.cgi?id=206449

        Reviewed by Jiewen Tan.

        Enable Web Crypto as an experiment for WinCairo and PlayStation. Add the USE_OPENSSL
        definition to platforms using OpenSSL.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-01-21  Rob Buis  <rbuis@igalia.com>

        Add build flag for stale-while-revalidate
        https://bugs.webkit.org/show_bug.cgi?id=204169

        Reviewed by Youenn Fablet.

        Add build flag for stale-while-revalidate to make it
        independent from the NETWORK_CACHE_SPECULATIVE_REVALIDATION build flag.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2020-01-20  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.4 release

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

2020-01-16  Don Olmstead  <don.olmstead@sony.com>

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

        Reviewed by Ross Kirsling.

        Turn on build WebKit for the PlayStation port. Temporarily turn off API tests
        until the WebKit tests are added.

        * Source/cmake/OptionsPlayStation.cmake:

2020-01-16  Philippe Normand  <philn@igalia.com>

        [GStreamer][WPE] Client-side video rendering support
        https://bugs.webkit.org/show_bug.cgi?id=206289

        Reviewed by Xabier Rodriguez-Calvar.

        Add a new compile-time option to enable client-side video
        rendering support. With this feature enabled the UIProcess will be
        in charge of positioning and rendering video surfaces, thanks to
        the WPEBackend-FDO video-plane-display-dmabuf protocol.

        * Source/cmake/GStreamerDefinitions.cmake: Add
        USE_WPE_VIDEO_PLANE_DISPLAY_DMABUF CMake option, disabled by
        default.
        * Source/cmake/GStreamerDependencies.cmake: This new option
        depends on GStreamer-GL.
        * Source/cmake/OptionsWPE.cmake: It depends also on the presence
        of the WPEBackend-FDO library.

2020-01-16  Per Arne Vollan  <pvollan@apple.com>

        [Win] Fix AppleWin build
        https://bugs.webkit.org/show_bug.cgi?id=206299

        Reviewed by Brent Fulgham.

        This patch has been created by don.olmstead@sony.com and pvollan@apple.com. Add target files for WTF and
        JavaScriptCore. Also, to make sure headers are copied to the forwarding headers directory, add the CMake
        keywork ALL when adding custom target for copying files.

        * Source/cmake/TargetJavaScriptCore.cmake: Added.
        * Source/cmake/TargetWTF.cmake: Added.
        * Source/cmake/WebKitMacros.cmake:

2020-01-10  Dean Jackson  <dino@apple.com>

        [WebGL] Clarify USE_OPENGL_ES_3
        https://bugs.webkit.org/show_bug.cgi?id=206081
        <rdar://problem/58486798>

        Reviewed by Simon Fraser.

        Make it clear that USE_ANGLE | USE_OPENGL | USE_OPENGL_ES are exclusive,
        and that the availability of OpenGL ES 3 is a separate query.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-01-10  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.4 release

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

2020-01-09  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r254234.
        https://bugs.webkit.org/show_bug.cgi?id=206011

        Broke production builds (Requested by ap on #webkit).

        Reverted changeset:

        "build-jsc should invoke make instead of calling xcodebuild
        directly"
        https://bugs.webkit.org/show_bug.cgi?id=205960
        https://trac.webkit.org/changeset/254234

2020-01-08  Saam Barati  <sbarati@apple.com>

        build-jsc should invoke make instead of calling xcodebuild directly
        https://bugs.webkit.org/show_bug.cgi?id=205960

        Reviewed by Keith Miller.

        * Makefile.shared:

2020-01-08  Saam Barati  <sbarati@apple.com>

        build-jsc should invoke make instead of calling xcodebuild directly
        https://bugs.webkit.org/show_bug.cgi?id=205960

        Reviewed by Keith Miller.

        * Makefile.shared:

2020-01-08  Mark Lam  <mark.lam@apple.com>

        Rename testing build configuration to release+assert, and add new testing build configuration.
        https://bugs.webkit.org/show_bug.cgi?id=205954

        Reviewed by Yusuke Suzuki.

        "make release-assert" builds a release build with ASSERT_ENABLED=1.
        "make testing" builds a debug build with clang optimization level forced to -O3.

        * Makefile:
        * Makefile.shared:
        * Source/Makefile:

2020-01-08  Keith Miller  <keith_miller@apple.com>

        Fix testing Makefile to inherit preprocessor definitions
        https://bugs.webkit.org/show_bug.cgi?id=205940

        Reviewed by Mark Lam.

        * Makefile.shared:

2020-01-07  Keith Miller  <keith_miller@apple.com>

        Add a testing target to make that is release + assertions
        https://bugs.webkit.org/show_bug.cgi?id=205895

        Reviewed by Mark Lam.

        * Makefile:
        * Makefile.shared:
        * Source/Makefile:

2020-01-07  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add API to set purpose and hints of active editable element to input methods
        https://bugs.webkit.org/show_bug.cgi?id=205605

        Reviewed by Žan Doberšek.

        Add ENABLE_AUTOCAPITALIZE build flag. It's private and disabled by default, enabled in GTK and WPE ports.

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

2020-01-06  Yoshiaki Jitsukawa  <yoshiaki.jitsukawa@sony.com>

        [PlayStation] Update port cmake
        https://bugs.webkit.org/show_bug.cgi?id=205846

        Reviewed by Don Olmstead.

        Define C/CXX macro BPLATFORM_PLAYSTATION.

        Find HarfBuzz::ICU component to fix cmake errors.

        Make the WebCore and WebKit builds optional.

        * Source/cmake/OptionsPlayStation.cmake:

2020-01-06  Don Olmstead  <don.olmstead@sony.com>

        Rename GraphicsContext3D to GraphicsContextGL
        https://bugs.webkit.org/show_bug.cgi?id=205778
        <rdar://problem/58327597>

        Reviewed by Ross Kirsling.

        Fix the build after r254064 on Windows and PlayStation.

        Add USE_OPENGL_ES_3 to Windows and WPE builds to simplify the Platform checks
        for GL functions available in OpenGL ES 3.0+. Expose additional USE macros for
        Windows builds to remove Platform.h entries around ENABLE(WEBGL).

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-01-05  Dean Jackson  <dino@apple.com>

        Rename GraphicsContext3D to GraphicsContextGL
        https://bugs.webkit.org/show_bug.cgi?id=205778
        <rdar://problem/58327597>

        Reviewed by Sam Weinig.

        Rename all the GraphicsContext3D things to GraphicsContextGL
        (includes Extensions3D and GRAPHICS_CONTEXT_3D).

        GraphicsContext3DBase now becomes GraphicsContextGL.
        GraphicsContext3D is now GraphicsContextGLOpenGL (since it represents
        the OpenGL implementation of the API).

        * Source/CMakeLists.txt:
        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2020-01-03  Simon Fraser  <simon.fraser@apple.com>

        Add some shared schemes to the WebKit.xcworkspace
        https://bugs.webkit.org/show_bug.cgi?id=205698

        Reviewed by Tim Horton.

        Make WebKit.xcworkspace show the following schemes by default:
            All Source
            All Tools
            WTF
            JavaScriptCore
            WebCore
            WebKit
            WebKitLegacy
            DumpRenderTree
            WebKitTestRunner
            TestWebKitAPI
            MiniBrowser
            MobileMiniBrowser.
            
        Also remove the MobileMiniBrowserUITests scheme.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

2019-12-22  Jeff Miller  <jeffm@apple.com>

        Update user-visible copyright strings to include 2020
        https://bugs.webkit.org/show_bug.cgi?id=205552

        Reviewed by Darin Adler.

        * Source/cmake/tools/scripts/COPYRIGHT-END-YEAR:

2019-12-18  Diego Pino Garcia  <dpino@igalia.com>

        [GTK][WPE] Renderization of Conic gradients
        https://bugs.webkit.org/show_bug.cgi?id=202739

        Reviewed by Carlos Alberto Lopez Perez.

        * Source/cmake/OptionsGTK.cmake: Enable CSS Conic Gradients.

2019-12-17  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Suppress undefined USE_OPENGL warnings when USE_ANGLE_WEBGL and USE_OPENGL_ES are enabled.
        https://bugs.webkit.org/show_bug.cgi?id=204634

        Reviewed by Žan Doberšek.

        When USE_ANGLE_WEBGL and USE_OPENGL_ES are enabled, many compiler warnings occur.
        This is because USE_OPENGL is defined nowhere if they are enabled.
        To fix this, USE_OPENGL is explicitly defined when USE_OPENGL_ES is enabled.

        * Source/cmake/OptionsGTK.cmake:

2019-12-16  Simon Fraser  <simon.fraser@apple.com>

        Let the DrawingArea decide whether scrolling is delegated
        https://bugs.webkit.org/show_bug.cgi?id=205258

        Reviewed by Anders Carlsson.
        
        Let Xcode have its way with the workspace file, after the libANGLE rename.

        * WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:

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

        [CMake] Add LibPSL::LibPSL target
        https://bugs.webkit.org/show_bug.cgi?id=205149

        Reviewed by Michael Catanzaro.

        Add a LibPSL target into the FindLibPSL module.

        * Source/cmake/FindLibPSL.cmake:

2019-12-11  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add OpenJPEG find module
        https://bugs.webkit.org/show_bug.cgi?id=204657

        Reviewed by Michael Catanzaro.

        Add a FindOpenJPEG CMake module. Update GTK and WPE ports to use this and
        require v2.2.0 or later. Add support for OpenJPEG in WinCairo port.

        * Source/cmake/FindOpenJPEG.cmake: Added.
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWinCairo.cmake:

2019-12-11  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add HarfBuzz targets
        https://bugs.webkit.org/show_bug.cgi?id=205042

        Reviewed by Konstantin Tokarev.

        Modernize the FindHarfBuzz.cmake module so it creates targets that can be
        referenced rather than using HARFBUZZ_LIBRARIES and HARFBUZZ_INCLUDE_DIRS.
        Also making ICU a component within the module, and allowing alternate names
        for the library to be set by the platform.

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

2019-12-03  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r253020.

        It breaks WinCairo bots.

        Reverted changeset:

        "[MSVC] Add /experimental:newLambdaProcessor switch for better
        C++ conformance"
        https://bugs.webkit.org/show_bug.cgi?id=204443
        https://trac.webkit.org/changeset/253020

2019-12-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [MSVC] Add /experimental:newLambdaProcessor switch for better C++ conformance
        https://bugs.webkit.org/show_bug.cgi?id=204443

        Reviewed by Alex Christensen.

        MSVC has a bug of lambda capture of 'this'. It has caused
        compilation errors repeatedly.

        * Source/cmake/OptionsMSVC.cmake: Added /experimental:newLambdaProcessor switch.

2019-11-28  Fujii Hironori  <Hironori.Fujii@sony.com>

        Remove ENABLE_KEYBOARD_CODE_ATTRIBUTE and ENABLE_KEYBOARD_KEY_ATTRIBUTE macros
        https://bugs.webkit.org/show_bug.cgi?id=204666

        Reviewed by Ross Kirsling and Don Olmstead.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2019-11-27  Alejandro G. Castro  <alex@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.3 release

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

2019-11-26  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.3 release

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

2019-11-20  ChangSeok Oh  <changseok@webkit.org>

        [GTK] Add ANGLE backend to GTK port
        https://bugs.webkit.org/show_bug.cgi?id=199060

        Reviewed by Žan Doberšek.

        This change brings ANGLE support for WebGL to GTK port. USE_ANGLE_WEBGL
        is newly defined in OptionGTK.cmake, and turns on the USE_ANGLE_EGL flag.

        * Source/cmake/OptionsGTK.cmake: USE_ANGLE_WEBGL added.

2019-11-19  Devin Rousso  <drousso@apple.com>

        Web Inspector: DOM.highlightSelector should work for "div, div::before"
        https://bugs.webkit.org/show_bug.cgi?id=204306

        Reviewed by Brian Burg.

        * ManualTests/inspector/overlay-selectors.html: Added.

2019-11-12  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Support Pointer Events
        https://bugs.webkit.org/show_bug.cgi?id=202789

        Reviewed by Carlos Garcia Campos.

        Build support for PointerEvents when EXPERIMENTAL_FEATURES is enabled.
        Currently support for PointerEvents of pointerType==mouse works fine,
        but support for other type of PointerEvents is missing.

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

2019-11-12  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Enable CSS Painting API
        https://bugs.webkit.org/show_bug.cgi?id=190710

        Reviewed by Don Olmstead.

        This enables the feature when building with experimental features enabled.

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

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

        [GTK] Implement support for Pointer Lock API
        https://bugs.webkit.org/show_bug.cgi?id=202956

        Reviewed by Carlos Alberto Lopez Perez.

        Enable Pointer Lock for GTK port.

        * Source/cmake/OptionsGTK.cmake:

2019-11-05  Fujii Hironori  <Hironori.Fujii@sony.com>

        [Win][CMake] Build WebCore as an OBJECT library for WinCairo port
        https://bugs.webkit.org/show_bug.cgi?id=203663

        Reviewed by Ross Kirsling.

        WebCore is using __declspec(dllexport) to export symbols, but it
        is built as a static library rather than a DLL. If any symbols in
        an object file aren't referenced from WebKit.dll, they won't be
        included in WebKit.dll.

        This issue can be solved either by using OBJECT library for
        WebCore or using /WHOLEARCHIVE:WebCore.lib for WebKit.

        This change takes OBJECT library approach becuase it doesn't
        generate unnecessary static libs (WebCore.lib) and it's already
        used for non-unified source builds for the library size issue (Bug
        196866 Comment 4).

        However, AppleWin can't use it because the Apple internal builds
        need to generate the static libs and OBJECT library doesn't work
        well with makesafeseh.obj.

        * Source/cmake/OptionsWin.cmake: Removed code overriding library types.
        * Source/cmake/OptionsWinCairo.cmake: Use OBJECT library types for WebCore and WebCoreTestSupport.

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

        Web Inspector: Add diagnostic logging for frontend feature usage
        https://bugs.webkit.org/show_bug.cgi?id=203579
        <rdar://problem/56717410>

        Reviewed by Brian Burg.

        Original patch by Matt Baker <mattbaker@apple.com>.

        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/WebKitFeatures.cmake:
        Add `ENABLE_INSPECTOR_TELEMETRY`, which is only enabled for macOS.

2019-11-01  Tim Horton  <timothy_horton@apple.com>

        macCatalyst: Get TestWebKitAPI building
        https://bugs.webkit.org/show_bug.cgi?id=203728

        Reviewed by Alexey Proskuryakov.

        * Makefile:
        Descend into Tools/.

2019-10-31  Alex Christensen  <achristensen@apple.com>

        Enable more features in Mac CMake build
        https://bugs.webkit.org/show_bug.cgi?id=203699

        Rubber-stamped by Tim Horton.

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

2019-10-31  Alex Christensen  <achristensen@webkit.org>

        CMake build should make WebKit framework able to be used by Safari
        https://bugs.webkit.org/show_bug.cgi?id=203685

        Rubber-stamped by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

2019-10-29  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.2 release

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

2019-10-28  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Enable CSS typed OM
        https://bugs.webkit.org/show_bug.cgi?id=192875

        Reviewed by Carlos Garcia Campos.

        This enables the feature when building with experimental features enabled.

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

2019-10-26  Chris Lord  <clord@igalia.com>

        Put OffscreenCanvas behind a build flag
        https://bugs.webkit.org/show_bug.cgi?id=203146

        Reviewed by Ryosuke Niwa.

        Put OffscreenCanvas behind a build flag and enable building with
        experimental features on GTK and WPE.

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

2019-10-22  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.2 release

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

2019-10-22  Carlos Alberto Lopez Perez  <clopez@igalia.com>

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

        Reviewed by Carlos Garcia Campos.

        Flip the build-time switch to be enabled by default and not only
        when building with experimental features enabled.

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

2019-10-21  Alicia Boya García  <aboya@igalia.com>

        [MSE][GStreamer] Revert WebKitMediaSrc rework temporarily
        https://bugs.webkit.org/show_bug.cgi?id=203078

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/GStreamerChecks.cmake:

2019-10-11  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Use HINTS instead of PATHS when searching in paths from pkg-config
        https://bugs.webkit.org/show_bug.cgi?id=202831

        Reviewed by Carlos Garcia Campos.

        HINTS and PATHS sections are similar, however HINTS is processed before
        default system locations, while PATHS - after. If target file can be found
        in the system, pkg-config results are ignored in case of PATHS, making it
        impossible to override system version of library with PKG_CONFIG_PATH.

        Note that CMake documentation recommends using PATHS for hard-coded guesses.

        * Source/cmake/FindEnchant.cmake:
        * Source/cmake/FindFontconfig.cmake:
        * Source/cmake/FindLibEpoxy.cmake:
        * Source/cmake/FindLibtasn1.cmake:
        * Source/cmake/FindSqlite.cmake:

2019-10-08  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.27.1 release

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

2019-10-04  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.27.1 release

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

2019-10-02  Alex Christensen  <achristensen@webkit.org>

        CMake-built WebKit.framework should launch XPC services successfully
        https://bugs.webkit.org/show_bug.cgi?id=202490

        Rubber-stamped by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

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

        [GTK][WPE] Stop using legacy custom protocol implementation
        https://bugs.webkit.org/show_bug.cgi?id=202407

        Reviewed by Žan Doberšek.

        Make LEGACY_CUSTOM_PROTOCOL_MANAGER disabled by default.

        * Source/cmake/OptionsFTW.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/WebKitFeatures.cmake:

2019-10-02  Zan Dobersek  <zdobersek@igalia.com>

        [Nicosia] Enable async scrolling at build-time for Nicosia-using ports
        https://bugs.webkit.org/show_bug.cgi?id=202397

        Reviewed by Carlos Garcia Campos.

        Enable ASYNC_SCROLLING code for ports leveraging the Nicosia layering
        system. This still has to be runtime-enabled in the DrawingArea
        implementation.

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

2019-09-30  Alex Christensen  <achristensen@webkit.org>

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

        Rubber-stamped by Tim Horton.

        * Source/cmake/OptionsMac.cmake:

2019-09-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK][WPE] Add about:gpu
        https://bugs.webkit.org/show_bug.cgi?id=202305

        Reviewed by Žan Doberšek.

        Add SVN_REVISION definition to the build.

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

2019-09-23  Zan Dobersek  <zdobersek@igalia.com>

        run-web-platform-tests: remove support for in-repository manifest, expectation management
        https://bugs.webkit.org/show_bug.cgi?id=202037

        Reviewed by Carlos Alberto Lopez Perez.

        Remove the test expecations JSON and test manifest file that were used
        for managing and generating the necessary wptrunner metadata.

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

2019-09-20  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Bump WPE version numbers.

        * Source/cmake/OptionsWPE.cmake:

2019-09-17  Fujii Hironori  <Hironori.Fujii@sony.com>

        [WinCairo][curl] Define NOCRYPT to suppress libressl "Warning, overriding WinCrypt defines"
        https://bugs.webkit.org/show_bug.cgi?id=201858

        Reviewed by Alex Christensen.

        LibreSSL headers are reporing a compilation warning for overriding
        WinCrypt defines. Define NOCRYPT to let windows.h not to include
        WinCrypt for WinCairo port.

        * Source/cmake/OptionsWinCairo.cmake: Added -DNOCRYPT.

2019-09-15  Adrian Perez de Castro  <aperez@igalia.com>

        [GTK][WPE] Do not run the Bubblewrap executable when configuring for cross-compilation
        https://bugs.webkit.org/show_bug.cgi?id=201340

        Reviewed by Konstantin Tokarev.

        * Source/cmake/BubblewrapSandboxChecks.cmake: Do not run the
        Bubblewrap executable when cross-compiling to guess its version.
        Emit a warning instead and trust that valid run-time paths will
        be set using the BWRAP_EXECUTABLE and DBUS_PROXY_EXECUTABLE
        variables. While at it, fix the regular expression used to match
        the version string in the Bubblewrap output when not cross-compiling.

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

        Unreviewed. Bump GTK version numbers

        * Source/cmake/OptionsGTK.cmake:

2019-08-23  Alex Christensen  <achristensen@webkit.org>

        Remove NPAPI Examples
        https://bugs.webkit.org/show_bug.cgi?id=201089

        Reviewed by Alexey Proskuryakov.

        We are only supporting NPAPI for flash until its upcoming end of life.
        We don't need to encourage the creation of new NPAPI plugins by having examples.

        * Examples: Removed.

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

        [GTK][WPE] Gtk-Doc fails with build options which need cooperation between CFLAGS and LDFLAGS
        https://bugs.webkit.org/show_bug.cgi?id=200987

        Reviewed by Philippe Normand.

        Only CFLAGS was being set before trying to generate the documentation
        but not LDFLAGS, which could cause errors when gtk-doc tries to link
        a generated program when the compiler flags would also require usage
        of certain linker flags later on.

        * Source/cmake/GtkDoc.cmake: Also set LDFLAGS in the environment when
        invoking Tools/gtkdoc/generate-gtkdoc.

2019-08-16  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] WebCoreTestSupport is too big to link
        https://bugs.webkit.org/show_bug.cgi?id=200820

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWin.cmake:
        As with WebCore itself, build WebCoreTestSupport as an object library when unified builds are disabled
        (and we haven't explicitly asked to build it as a shared library).

2019-08-08  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Get WebKit, WebKit2, and MiniBrowser building and executing
        https://bugs.webkit.org/show_bug.cgi?id=200539
        <rdar://problem/54082550>

        Reviewed by Dean Jackson.

        * Source/cmake/OptionsFTW.cmake:

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

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.4 release

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

2019-07-31  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Datalist element support for TextFieldInputType
        https://bugs.webkit.org/show_bug.cgi?id=98934

        Reviewed by Michael Catanzaro.

        Enable DATALIST_ELEMENT.

        * Source/cmake/OptionsGTK.cmake:

2019-07-24  Fujii Hironori  <fujii.hironori@gmail.com>

        [CMake] CMAKE_SHARED_LINKER_FLAGS drops "-Wl,--no-undefined"
        https://bugs.webkit.org/show_bug.cgi?id=200074

        Reviewed by Michael Catanzaro.

        Although WebKitCompilerFlags.cmake adds "-Wl,--no-undefined" to
        CMAKE_SHARED_LINKER_FLAGS, it wasn't effective because
        OptionsCommon.cmake inadvertently override the value with
        CMAKE_EXE_LINKER_FLAGS as:

        > set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ...")

        * Source/cmake/OptionsCommon.cmake: Use string(APPEND) to modify
        CMAKE_*_LINKER_FLAGS variables to avoid typos.

2019-07-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.3 release

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

2019-07-18  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] MOUSE_CURSOR_SCALE is not implemented
        https://bugs.webkit.org/show_bug.cgi?id=109469

        Reviewed by Darin Adler.

        Enable MOUSE_CURSOR_SCALE for the GTK port.

        * Source/cmake/OptionsGTK.cmake:

2019-07-11  Pablo Saavedra  <psaavedra@igalia.com>

        [WPE][GTK] Build failure with ENABLE_ACCESSIBILITY=OFF
        https://bugs.webkit.org/show_bug.cgi?id=199625

        Added ENABLE(ACCESSIBILITY) and replaced HAVE(ACCESSIBILITY)
        with ENABLE(ACCESSIBILITY) in the code.

        Additionally, the TestRunner code generator now honors the
        Conditional IDL format.

        Reviewed by Konstantin Tokarev.

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

2019-07-10  Carlos Alberto Lopez Perez  <clopez@igalia.com>

        [GTK][WPE] Enable support for CSS_COMPOSITING
        https://bugs.webkit.org/show_bug.cgi?id=199513

        Reviewed by Michael Catanzaro.

        This feature is needed to support the CSS properties "mix-blend-mode" and "isolation".
        Enable it for all ports except for AppleWin (doesn't build).

        It has been tested that it builds on the EWS bots of all the ports enabled (for those that have an EWS).
        Also, for the GTK and WPE ports it also has been tested that the feature works fine on most of the cases and that doesn't cause regressions.

        * Source/cmake/OptionsFTW.cmake: Enable the feature.
        * Source/cmake/OptionsMac.cmake: Use the new default.
        * Source/cmake/OptionsWin.cmake: Enable for WinCairo only.
        * Source/cmake/WebKitFeatures.cmake: Enable it Globally

2019-06-28  Brent Fulgham  <bfulgham@apple.com>

        [FTW] Build WebCore
        https://bugs.webkit.org/show_bug.cgi?id=199199

        Reviewed by Don Olmstead.

        Establish a set of build options for the FTW port, based on the current WinCairo
        feature set. I also note which features should be turned on, but aren't yet, as
        well as which features are disabled due to lack of WebGL and Media support in
        the current build.

        * Source/cmake/OptionsFTW.cmake:

2019-06-28  Konstantin Tokarev  <annulen@yandex.ru>

        Remove traces of ENABLE_ICONDATABASE remaining after its removal in 219733
        https://bugs.webkit.org/show_bug.cgi?id=199317

        Reviewed by Michael Catanzaro.

        While IconDatabase and all code using it was removed,
        ENABLE_ICONDATABASE still exists as build option and C++ macro.

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

2019-06-27  Don Olmstead  <don.olmstead@sony.com>

        [FTW] Build JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=199254

        Reviewed by Brent Fulgham.

        Add the FTW [For the Win(dows)] port. FTW is OS(WINDOWS) + USE(DIRECT2D) +
        USE(CURL). Its eventual goal is to be the one true Windows port but to avoid
        breaking AppleWin and WinCairo its being split into its own port for the interim.

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

2019-06-27  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Bump cmake_minimum_required version to 3.10
        https://bugs.webkit.org/show_bug.cgi?id=199181

        Reviewed by Don Olmstead.

        * CMakeLists.txt:

2019-06-21  Konstantin Tokarev  <annulen@yandex.ru>

        [cmake] Switch to built-in handling of C++ standard instead of hardcoding -std=c++17
        https://bugs.webkit.org/show_bug.cgi?id=199108

        Reviewed by Don Olmstead.

        Rationale:

        1. It provides an abstraction over exact flags of particular compilers -
           we just specify required version of C++ standard
        2. External libraries (like Qt used in WPEQt) may require particular C++
           standard or even particular C++ features to be availabe (e.g. Qt
           requires INTERFACE_COMPILE_FEATURES cxx_decltype, which causes cmake
           to add -std=gnu++11 unless proper CXX_STANDARD is defined)

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/OptionsMSVC.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake:

2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Fully rename WebKitGTK+ -> WebKitGTK everywhere
        https://bugs.webkit.org/show_bug.cgi?id=199159

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindGLIB.cmake:

2019-06-25  Michael Catanzaro  <mcatanzaro@igalia.com>

        Require GCC 7
        https://bugs.webkit.org/show_bug.cgi?id=198914

        Reviewed by Darin Adler.

        * CMakeLists.txt:

2019-06-21  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE][GTK] Bump minimum versions of GLib, GTK, libsoup, ATK, GStreamer, and Cairo
        https://bugs.webkit.org/show_bug.cgi?id=199094

        Reviewed by Carlos Garcia Campos.

        We can remove a lot of preprocessor guards in our code if we bump the minimum required
        versions of certain dependencies:

        GStreamer 1.8 -> 1.10
        GTK 3.6 -> 3.22
        ATK 2.16
        libsoup 2.42 -> 2.54
        glib 2.40 -> 2.44
        cairo 1.14

        I'm being extremely conservative with all these dependency bumps. All of these versions are
        already available in Debian Stretch, which we will soon no longer support building on anyway
        due to the impending GCC 7 requirement. Dependencies are also bumped no further than we
        actually have guards for. For example, ATK 2.22 is available in Stretch, but the highest
        ATK_CHECK_VERSION guards we use below 2.22 are for 2.16, so I set the min version to 2.16.

        We still have a few preprocessor guards remaining for everything here except glib and cairo,
        but this removes the vast majority of them. Deleting code is fun!

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

2019-06-20  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove support for GTK2 plugins
        https://bugs.webkit.org/show_bug.cgi?id=199065

        Reviewed by Sergio Villar Senin.

        * Source/cmake/FindGDK2.cmake: Removed.
        * Source/cmake/FindGTK2.cmake: Removed.
        * Source/cmake/OptionsGTK.cmake:

2019-06-18  Adrian Perez de Castro  <aperez@igalia.com>

        Unreviewed. Update OptionsWPE.cmake and NEWS for the 2.25.1 release

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

2019-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.2 release

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

2019-06-17  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. [GTK] Bump WPEBackend-fdo requirement to 1.3.1

        * Source/cmake/OptionsGTK.cmake:

2019-06-13  Tim Horton  <timothy_horton@apple.com>

        Make it possible for validate-committer-lists to dump a mailmap file
        https://bugs.webkit.org/show_bug.cgi?id=198517

        Reviewed by Simon Fraser.

        * .gitignore:
        Ignore .mailmap files.

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

        [GTK] Remove option REDIRECTED_XCOMPOSITE_WINDOW
        https://bugs.webkit.org/show_bug.cgi?id=198748

        Reviewed by Žan Doberšek.

        * Source/cmake/OptionsGTK.cmake: Remove USE_REDIRECTED_XCOMPOSITE_WINDOW build option.

2019-06-10  Sam Weinig  <weinig@apple.com>

        Remove Dashboard support
        https://bugs.webkit.org/show_bug.cgi?id=198615

        Reviewed by Ryosuke Niwa.

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

2019-06-10  Philippe Normand  <pnormand@igalia.com>

        [WPE][Qt] Port to new wpe_fdo_egl_exported_image API
        https://bugs.webkit.org/show_bug.cgi?id=198713

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/OptionsWPE.cmake:

2019-06-04  Takashi Komori  <Takashi.Komori@sony.com>

        [WinCairo] Implement cpu and memory measuring functions.
        https://bugs.webkit.org/show_bug.cgi?id=198466

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsWin.cmake:

2019-06-03  Zan Dobersek  <zdobersek@igalia.com>

        [Nicosia] Disable async scrolling until implemented
        https://bugs.webkit.org/show_bug.cgi?id=198476

        Reviewed by Antti Koivisto.

        Disable async scrolling on Nicosia-using ports until the underlying
        implementation is complete, allowing easier refactorings of the general
        async scrolling system.

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

2019-05-30  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WEBKIT_FRAMEWORK_TARGET macro
        https://bugs.webkit.org/show_bug.cgi?id=198396

        Reviewed by Konstantin Tokarev.

        Add a macro to help create the WebKit::targets in CMake.

        * CMakeLists.txt:
        * Source/cmake/WebKitMacros.cmake:

2019-05-29  Don Olmstead  <don.olmstead@sony.com>

        Remove ENABLE definitions from WebKit config files
        https://bugs.webkit.org/show_bug.cgi?id=197858

        Reviewed by Simon Fraser.

        Add ENABLE flags into WebKitFeatures.cmake and set the values for GTK and WPE according
        to what was present in the config files.

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

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Use WPEBackend-fdo for accelerating compositing in Wayland instead of the nested compositor
        https://bugs.webkit.org/show_bug.cgi?id=197944

        Reviewed by Michael Catanzaro.

        Add USE_WPE_RENDERER option to use WPEBackend-fdo.

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

2019-05-27  Carlos Garcia Campos  <cgarcia@igalia.com>

        Unreviewed. Update OptionsGTK.cmake and NEWS for 2.25.1 release

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

2019-05-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use target oriented design for bmalloc
        https://bugs.webkit.org/show_bug.cgi?id=198046

        Reviewed by Konstantin Tokarev.

        Add WEBKIT_COPY_FILES to WebKitMacros so it is available to all CMake code. Add
        bmalloc_FRAMEWORK_HEADERS_DIR for specifying the location to copy bmalloc headers to.

        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitMacros.cmake:

2019-05-21  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Build WebDriver
        https://bugs.webkit.org/show_bug.cgi?id=198056

        Reviewed by Carlos Garcia Campos.

        Add ENABLE_WEBDRIVER as an experimental feature for WinCairo.

        * Source/cmake/OptionsWin.cmake:

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

        [WPE] Add initial accessibility support using ATK
        https://bugs.webkit.org/show_bug.cgi?id=197413

        Reviewed by Michael Catanzaro.

        Add ENABLE_ACCESSIBILITY public option to WPE.

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

2019-05-20  Ross Kirsling  <ross.kirsling@sony.com>

        [WinCairo] Implement Remote Web Inspector Client.
        https://bugs.webkit.org/show_bug.cgi?id=197434

        Reviewed by Don Olmstead.

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

2019-05-17  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Use builtin FindICU
        https://bugs.webkit.org/show_bug.cgi?id=197934

        Reviewed by Michael Catanzaro.

        Update CMake minimum required to 3.7. 3.7 has a FindICU module so the WebKit one
        is removed. For non-Apple ports this just requires adding individual components of
        ICU to find_package(ICU). For Apple ports the module does not work so the targets
        created in FindICU are mirrored in target/icu.cmake.

        * CMakeLists.txt:
        * Source/cmake/FindICU.cmake: Removed.
        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsGTK.cmake:
        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:
        * Source/cmake/OptionsPlayStation.cmake:
        * Source/cmake/OptionsWPE.cmake:
        * Source/cmake/OptionsWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/target/icu.cmake: Added.

2019-05-09  Xan López  <xan@igalia.com>

        [CMake] Detect SSE2 at compile time
        https://bugs.webkit.org/show_bug.cgi?id=196488

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/DetectSSE2.cmake: Added.
        * Source/cmake/WebKitCompilerFlags.cmake: Detect SSE2 support and
        add SSE2 to the global compiler flags.

2019-05-08  Don Olmstead  <don.olmstead@sony.com>

        [PlayStation] Update port options
        https://bugs.webkit.org/show_bug.cgi?id=197723

        Reviewed by Ross Kirsling.

        Update the options used.

        * Source/cmake/OptionsPlayStation.cmake:

2019-05-08  Ross Kirsling  <ross.kirsling@sony.com>

        Add .vs and .vscode directories to .gitignore.
        https://bugs.webkit.org/show_bug.cgi?id=197727

        Reviewed by Don Olmstead.

        * .gitignore:

2019-05-07  Keith Rollin  <krollin@apple.com>

        Add option to build-webkit to control whether or not XCBuild is used
        https://bugs.webkit.org/show_bug.cgi?id=197668
        <rdar://problem/50549728>

        Reviewed by Tim Horton.

        Add --[no-]xcbuild to build-webkit to force the use of XCBuild or not.
        Also update build-webkit and the makefiles with the foundation for
        automatically using XCBuild when the conditions allow it. This latter
        facility is currently turned off until Xcode fully supports building
        WebKit with XCBuild.

        * Makefile.shared:

2019-05-06  Christopher Reid  <chris.reid@sony.com>

        [CMake] fuse-ld should also be set in module linker flags
        https://bugs.webkit.org/show_bug.cgi?id=197583

        Reviewed by Michael Catanzaro.

        Add fuse-ld to CMAKE_MODULE_LINKER_FLAGS.

        * Source/cmake/OptionsCommon.cmake:

2019-05-03  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [WinCairo] Implement and enable RemoteInspector Server.
        https://bugs.webkit.org/show_bug.cgi?id=197432

        Reviewed by Ross Kirsling.

        Add new build flag USE_INSPECTOR_SOCKET_SERVER to indicate using Socket implementation for RemoteInspector
        protocol. Currently PlayStation is the only platform which uses this. WinCairo is the second one.

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

2019-05-03  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r244881.
        https://bugs.webkit.org/show_bug.cgi?id=197559

        Breaks compilation of jsconly on linux, breaking compilation
        for jsc-i386-ews, jsc-mips-ews and jsc-armv7-ews (Requested by
        guijemont on #webkit).

        Reverted changeset:

        "[CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into
        WEBKIT_COPY_FILES"
        https://bugs.webkit.org/show_bug.cgi?id=197174
        https://trac.webkit.org/changeset/244881

2019-05-02  Christopher Reid  <chris.reid@sony.com>

        [CMake] Add support for LTO builds
        https://bugs.webkit.org/show_bug.cgi?id=188986

        Reviewed by Don Olmstead.

        Add LTO_MODE cmake variable to enable flto in clang builds.
        Add support to use ld.lld to build with LTO.

        * Source/cmake/OptionsCommon.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake:

2019-05-02  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Refactor WEBKIT_MAKE_FORWARDING_HEADERS into WEBKIT_COPY_FILES
        https://bugs.webkit.org/show_bug.cgi?id=197174

        Reviewed by Alex Christensen.

        Replace WEBKIT_MAKE_FORWARDING_HEADERS with WEBKIT_COPY_FILES which is a general
        purpose macro that copies files to a destination. WEBKIT_COPY_FILES removes the
        requirement of a target being passed in so there is no longer any implicit dependency
        between the target and the copying. Instead the dependencies need to be explicit.

        This opens the macro up for use by third party libraries and for copying other files
        to a destination.

        * Source/cmake/WebKitMacros.cmake:

2019-05-01  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Update port for WEBKIT_EXECUTABLE changes
        https://bugs.webkit.org/show_bug.cgi?id=197483

        Reviewed by Don Olmstead.

        * Source/cmake/OptionsPlayStation.cmake:
        Update wrapping for configuring executables' playstation
        specific data to new WEBKIT_EXECUTABLE macro.

2019-04-30  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Support prefers-color-scheme media query
        https://bugs.webkit.org/show_bug.cgi?id=196685

        Reviewed by Michael Catanzaro.

        Enable DARK_MODE_CSS. Supported color schemes feature is not supported for now. I'm not sure we will be able to
        suport it, because it requires to change the theme too many times, which is very slow in GTK.

        * Source/cmake/OptionsGTK.cmake:

2019-04-29  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WEBKIT_EXECUTABLE macro
        https://bugs.webkit.org/show_bug.cgi?id=197206

        Unreviewed build fix.

        Calls to add_dependencies were not happening.

        * Source/cmake/WebKitMacros.cmake:

2019-04-29  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Add flag to enable version information stamping and disable by default.
        https://bugs.webkit.org/show_bug.cgi?id=197249
        <rdar://problem/50224412>

        Reviewed by Ross Kirsling.

        This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
        Then enable it by default on AppleWin.

        * Source/cmake/OptionsWin.cmake:

2019-04-28  Andy Estes  <aestes@apple.com>

        Fix the watchOS engineering build.

        * Source/Makefile: Moved libwebrtc logic into Source/ThirdParty/Makefile.

2019-04-26  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Add WEBKIT_EXECUTABLE macro
        https://bugs.webkit.org/show_bug.cgi?id=197206

        Reviewed by Konstantin Tokarev.

        Add WEBKIT_EXECUTABLE macro for creating executable targets. This wraps the creation of
        executable targets using the same conventions of WEBKIT_FRAMEWORK.

        Common code from the two macros were moved to WEBKIT_TARGET which is meant as an internal
        macro.

        Add WEBKIT_WRAP_EXECUTABLE macro to support Windows targets which use a DLLLauncherMain to
        launch the executable.

        * Source/cmake/WebKitMacros.cmake:

2019-04-25  Fujii Hironori  <Hironori.Fujii@sony.com>

        Unreviewed, rolling out r244669.

        Windows ports can't clean build.

        Reverted changeset:

        "[Win] Add flag to enable version information stamping and
        disable by default."
        https://bugs.webkit.org/show_bug.cgi?id=197249
        https://trac.webkit.org/changeset/244669

2019-04-25  Basuke Suzuki  <Basuke.Suzuki@sony.com>

        [Win] Add flag to enable version information stamping and disable by default.
        https://bugs.webkit.org/show_bug.cgi?id=197249

        Reviewed by Ross Kirsling.

        This feature is only used in AppleWin port. Add flag for this task and make it OFF by default.
        Then enable it by default on AppleWin.

        * Source/cmake/OptionsWin.cmake:

2019-04-25  Alex Christensen  <achristensen@webkit.org>

        Start using C++17
        https://bugs.webkit.org/show_bug.cgi?id=197131

        Reviewed by Darin Adler.

        * Source/cmake/OptionsMSVC.cmake:
        * Source/cmake/WebKitCompilerFlags.cmake:

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

        [GTK] Hardcoded text color in input fields
        https://bugs.webkit.org/show_bug.cgi?id=126907

        Reviewed by Michael Catanzaro.

        Set and expose to build HAVE_OS_DARK_MODE_SUPPORT=1.

        * Source/cmake/OptionsGTK.cmake:

2019-04-23  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use target oriented design for WebKit
        https://bugs.webkit.org/show_bug.cgi?id=197173

        Reviewed by Alex Christensen.

        Override WebKit_DERIVED_SOUCES_DIR within WinCairo in support of a target
        oriented design.

        * Source/cmake/OptionsWinCairo.cmake:

2019-04-20  Don Olmstead  <don.olmstead@sony.com>

        [CMake][Win] Use target oriented design for WebKitLegacy
        https://bugs.webkit.org/show_bug.cgi?id=197112

        Reviewed by Konstantin Tokarev.

        Override WebKitLegacy_DERIVED_SOURCES_DIR within WinCairo in support of a target
        oriented design.

        * Source/cmake/OptionsWinCairo.cmake:

2019-04-18  Ross Kirsling  <ross.kirsling@sony.com>

        [WinCairo] Non-unified build fails to link Tools
        https://bugs.webkit.org/show_bug.cgi?id=196866

        Reviewed by Fujii Hironori.

        * Source/cmake/OptionsWin.cmake:
        Build WebCore as an object library when unified builds are disabled
        (and we haven't explicitly asked to build it as a shared library).
        This is necessary for two reasons:
        - Non-unified WebCore.lib is too large for the MSVC linker to create (>4GB).
        - Some WebCore object files are not actually used, but DumpRenderTree and TestRunnerInjectedBundle
          still expect that their symbols will be re-exported via WebKit[Legacy].

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

        Automatically use ccache when available for Makefile builds
        https://bugs.webkit.org/show_bug.cgi?id=197020

        Reviewed by Alex Christensen.

        * Makefile.shared:

2019-04-16  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Set WTF_SCRIPTS_DIR
        https://bugs.webkit.org/show_bug.cgi?id=196917

        Reviewed by Konstantin Tokarev.

        Define WTF_SCRIPTS_DIR in WebKitFS.cmake and use that within the WEBKIT_COMPUTE_SOURCES
        macro. This allows it to be overridden by a port such as the AppleWin internal build.

        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitMacros.cmake:

2019-04-15  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WebCore derived sources should only be referenced inside WebCore
        https://bugs.webkit.org/show_bug.cgi?id=196904

        Reviewed by Konstantin Tokarev.

        Override WebCore_DERIVED_SOURCES_DIR for WinCairo.

        * Source/cmake/OptionsWinCairo.cmake:

2019-04-14  Don Olmstead  <don.olmstead@sony.com>

        [CMake] JavaScriptCore derived sources should only be referenced inside JavaScriptCore
        https://bugs.webkit.org/show_bug.cgi?id=196742

        Reviewed by Konstantin Tokarev.

        Migrate to using JavaScriptCore_DERIVED_SOURCES_DIR instead of DERIVED_SOURCES_JAVASCRIPTCORE_DIR
        to support moving the JavaScriptCore derived sources outside of a shared directory.
        This is in support of the target oriented design refactoring.

        WinCairo is explicitly overriding the value as a canary for this setup.

        Also move JavaScriptCore_SCRIPTS_DIR to WebKitFS to remove logic setting it in other projects.

        * Source/PlatformWin.cmake:
        * Source/cmake/OptionsAppleWin.cmake:
        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitFS.cmake:

2019-04-10  Michael Catanzaro  <mcatanzaro@igalia.com>

        Unreviewed, rolling out r243989.

        Broke i686 builds

        Reverted changeset:

        "[CMake] Detect SSE2 at compile time"
        https://bugs.webkit.org/show_bug.cgi?id=196488
        https://trac.webkit.org/changeset/243989

2019-04-09  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WEBKIT_COMPUTE_SOURCES should use the target's derived sources directory
        https://bugs.webkit.org/show_bug.cgi?id=196741

        Reviewed by Michael Catanzaro.

        WEBKIT_COMPUTE_SOURCES is using ${DERIVED_SOURCES_DIR} directly. Instead it should
        rely on the directory specified by the target.

        * Source/cmake/WebKitFS.cmake:
        Add variables that can be expanded within CMake to the derived sources directory for
        a target.

        * Source/cmake/WebKitMacros.cmake:
        Use variable expansion rather than ${DERIVED_SOURCES_DIR} to determine the target's
        derived sources directory.

2019-04-09  Don Olmstead  <don.olmstead@sony.com>

        [CMake] WTF derived sources should only be referenced inside WTF
        https://bugs.webkit.org/show_bug.cgi?id=196706

        Reviewed by Konstantin Tokarev.

        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitFS.cmake:

2019-04-09  Don Olmstead  <don.olmstead@sony.com>

        [CMake] Apple builds should use ICU_INCLUDE_DIRS
        https://bugs.webkit.org/show_bug.cgi?id=196720

        Reviewed by Konstantin Tokarev.

        The Apple platform is using ${DERIVED_SOURCES_WTF_DIR} for hosting the ICU headers.
        Instead it should stage the headers into ${ICU_INCLUDE_DIRS} so no special handling
        is needed.

        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsMac.cmake:

2019-04-08  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WinCairo] Separate copied headers into different directories
        https://bugs.webkit.org/show_bug.cgi?id=196655

        Reviewed by Michael Catanzaro.

        Add variables for the paths to copied framework headers. This is done to be
        explicit rather than relying on ${FORWARDING_HEADERS_DIR}.

        Currently all ports but WinCairo will default to ${FORWARDING_HEADERS_DIR}.
        WinCairo overrides them to provide a directory structure that looks more
        like what happens in an XCode build. This is meant as an intermediate step
        towards making all CMake ports behave like this.

        * Source/cmake/OptionsWinCairo.cmake:
        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/WebKitMacros.cmake:

2019-04-08  Xan Lopez  <xan@igalia.com>

        [CMake] Detect SSE2 at compile time
        https://bugs.webkit.org/show_bug.cgi?id=196488

        Reviewed by Carlos Garcia Campos.

        * CMakeLists.txt: Use FindSSE2.cmake to detect SSE2 support.
        * Source/cmake/FindSSE2.cmake: Added.

2019-04-05  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r243833.
        https://bugs.webkit.org/show_bug.cgi?id=196645

        This change breaks build of WPE and GTK ports (Requested by
        annulen on #webkit).

        Reverted changeset:

        "[CMake][WTF] Mirror XCode header directories"
        https://bugs.webkit.org/show_bug.cgi?id=191662
        https://trac.webkit.org/changeset/243833

2019-04-03  Don Olmstead  <don.olmstead@sony.com>

        [CMake][WTF] Mirror XCode header directories
        https://bugs.webkit.org/show_bug.cgi?id=191662

        Reviewed by Konstantin Tokarev.

        Add WTF_FRAMEWORK_HEADERS_DIR to place WTF headers into. Add frameworks/WTF.cmake
        which creates an interface target which will populate dependencies for consumers.
        This file is added here to support AppleWin internal builds which invoke CMake on
        each directory.

        * Source/cmake/WebKitFS.cmake:
        * Source/cmake/frameworks/WTF.cmake: Added.

2019-04-03  Myles C. Maxfield  <mmaxfield@apple.com>

        Remove support for -apple-trailing-word
        https://bugs.webkit.org/show_bug.cgi?id=196525

        Reviewed by Zalan Bujtas.

        This CSS property is nonstandard and not used.

        * Source/cmake/WebKitFeatures.cmake:

2019-04-02  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] WEBKIT_MAKE_FORWARDING_HEADERS shouldn't use POST_BUILD to copy generated headers
        https://bugs.webkit.org/show_bug.cgi?id=182757

        Reviewed by Don Olmstead.

        Some generated headers need to be exported to its client modules.
        Before this change, WEBKIT_MAKE_FORWARDING_HEADERS copies all *.h
        files in the directory specified by DERIVED_SOURCE_DIRECTORIES
        parameter. The copy operation was triggered by POST_BUILD event.

        This caused build dependency issues for Ninja builds. This change
        remove the DERIVED_SOURCE_DIRECTORIES parameter. And list all
        generated headers explicitly which need to be copied.

        * Source/cmake/WebKitMacros.cmake: Removed
        DERIVED_SOURCE_DIRECTORIES parameter of
        WEBKIT_MAKE_FORWARDING_HEADERS. Accept absolute paths for FILES
        parameter.

2019-04-01  Fujii Hironori  <Hironori.Fujii@sony.com>

        [CMake] Remove EXTRA_DIRECTORIES parameter of WEBKIT_MAKE_FORWARDING_HEADERS
        https://bugs.webkit.org/show_bug.cgi?id=196436

        Reviewed by Darin Adler.

        The parameter was only for WebCore/ForwardingHeaders which was
        removed in Bug 182347.

        * Source/cmake/WebKitMacros.cmake: Remove unused EXTRA_DIRECTORIES parameter.

2019-04-01  Stephan Szabo  <stephan.szabo@sony.com>

        [PlayStation] Add initialization for JSC shell for PlayStation port
        https://bugs.webkit.org/show_bug.cgi?id=195411

        Reviewed by Ross Kirsling.

        Add functions for doing the automatic libc, floating point
        initializations, signing of binaries and libraries and 
        wrapping of libc functions on PlayStation port.

        * Source/cmake/OptionsPlayStation.cmake:

2019-03-29  Myles C. Maxfield  <mmaxfield@apple.com>

        Delete WebMetal implementation in favor of WebGPU
        https://bugs.webkit.org/show_bug.cgi?id=195418

        Reviewed by Dean Jackson.

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

2019-03-29  Cathie Chen  <cathiechen@igalia.com>

        Implement ResizeObserver.
        https://bugs.webkit.org/show_bug.cgi?id=157743

        Reviewed by Simon Fraser.

        Add ENABLE_RESIZE_OBSERVER.

        * Source/cmake/WebKitFeatures.cmake:

2019-03-25  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE][GTK] Make building WebVR (w/OpenVR) not depend on ENABLE_EXPERIMENTAL_FEATURES
        https://bugs.webkit.org/show_bug.cgi?id=196223

        Reviewed by Michael Catanzaro.

        Disentangle USE_OPENVR from ENABLE_EXPERIMENTAL_FEATURES, making it
        unneeded to include ThirdParty/openvr/ in release tarballs.

        * Source/cmake/OptionsGTK.cmake: Set USE_OPENVR to OFF by default,
        instead of making it use the value of ENABLE_EXPERIMENTAL_FEATURES.
        * Source/cmake/OptionsWPE.cmake: Ditto.

2019-03-25  Xan López  <xan@igalia.com>

        [WTF] Fix typo when forcing WTF_CPU_X86
        https://bugs.webkit.org/show_bug.cgi?id=196204

        Reviewed by Michael Catanzaro.

        Fix a typo when setting the WTF_CPU variable for X86.

        * CMakeLists.txt:

2019-03-23  Carlos Garcia Campos  <cgarcia@igalia.com>

        [GTK] Remove build time dependency on Geoclue2
        https://bugs.webkit.org/show_bug.cgi?id=195994

        Reviewed by Michael Catanzaro.

        Remove USE_GEOCLUE build option.

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

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

        [GTK][WPE] Add API to provide geolocation information
        https://bugs.webkit.org/show_bug.cgi?id=195940

        Reviewed by Michael Catanzaro.

        Build with geolocation enabled by default in both GTK and WPE. In GTK add a specific USE_GEOCLUE build option
        instead of using ENABLE_GEOLOCATION.

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

2019-03-20  Simon Fraser  <simon.fraser@apple.com>

        Rename ENABLE_ACCELERATED_OVERFLOW_SCROLLING macro to ENABLE_OVERFLOW_SCROLLING_TOUCH
        https://bugs.webkit.org/show_bug.cgi?id=196049

        Reviewed by Tim Horton.

        This macro is about the -webkit-overflow-scrolling CSS property, not accelerated
        overflow scrolling in general, so rename it.

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

2019-03-19  Christopher Reid  <chris.reid@sony.com>

        [CMake] Support more clang and gcc sanitizers
        https://bugs.webkit.org/show_bug.cgi?id=195956

        Reviewed by Michael Catanzaro.

        Add support to compile with undefined, thread, memory, and leak sanitizers in cmake.
        Also add ubsan and asan support when compiling with clang-cl on WinCairo.
        This changes ENABLE_ADDRESS_SANITIZER flag to a generic ENABLE_SANITIZERS
        which takes a semicolon separated list of sanitizers to enable.
        e.g. `-DENABLE_SANITIZERS=address;undefined`

        Building WinCairo with sanitizers enabled also needs CLANG_LIB_PATH set to the clang compiler runtime library folder.
        e.g. pass `--cmakeargs="-DCLANG_LIB_PATH=\"C:\Program Files\LLVM\lib\clang\7.0.1\lib\windows\""` to build-webkit

        * Source/cmake/WebKitCompilerFlags.cmake:

2019-03-18  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Bump public API to wpe-1.0
        https://bugs.webkit.org/show_bug.cgi?id=195887

        Reviewed by Philippe Normand.

        * Source/cmake/OptionsWPE.cmake: Bump public API version to 1.0

2019-03-18  Adrian Perez de Castro  <aperez@igalia.com>

        [WPE] Bump dependencies to wpe-1.0 and wpebackend-fdo-1.0
        https://bugs.webkit.org/show_bug.cgi?id=195786

        Reviewed by Philippe Normand.

        * Source/cmake/FindWPE.cmake: Check for the wpe-1.0 pkg-config package.

2019-03-11  Xan Lopez  <xan@igalia.com>

        [CMake] Build 32bit binaries on Linux/64bit when the --32-bit is passed to build-jsc
        https://bugs.webkit.org/show_bug.cgi?id=194147

        Reviewed by Michael Saboff.

        * CMakeLists.txt: set WTF_CPU properly if FORCE_32BIT is set in
        build-jsc.

2019-03-11  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Enable web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195169

        Reviewed by Daniel Bates.

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

2019-03-07  Commit Queue  <commit-queue@webkit.org>

        Unreviewed, rolling out r242354.
        https://bugs.webkit.org/show_bug.cgi?id=195402

        breaks layout tests in all configurations (Requested by
        zdobersek on #webkit).

        Reverted changeset:

        "[WPE] Enable web process sandbox"
        https://bugs.webkit.org/show_bug.cgi?id=195169
        https://trac.webkit.org/changeset/242354

2019-03-06  Ross Kirsling  <ross.kirsling@sony.com>

        [Win] Remove -DUCHAR_TYPE=wchar_t stopgap and learn to live with char16_t.
        https://bugs.webkit.org/show_bug.cgi?id=195346

        Reviewed by Fujii Hironori.

        * Source/cmake/OptionsJSCOnly.cmake:
        * Source/cmake/OptionsWin.cmake:
        Stop compiling with -DUCHAR_TYPE=wchar_t.

2019-03-06  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Enable additional experimental features
        https://bugs.webkit.org/show_bug.cgi?id=195363

        Reviewed by Ross Kirsling.

        Turn on ENABLE_APPLICATION_MANIFEST, ENABLE_FILTERS_LEVEL_2, ENABLE_CSS_PAINTING_API,
        and ENABLE_VARIATION_FONTS. This will allow testing and development of these features
        for Windows.

        * Source/cmake/OptionsWin.cmake:

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

        [WinCairo] Enable CSS Typed OM
        https://bugs.webkit.org/show_bug.cgi?id=195340

        Reviewed by Myles C. Maxfield.

        * Source/cmake/OptionsWin.cmake:

2019-03-04  Michael Catanzaro  <mcatanzaro@igalia.com>

        [WPE] Enable web process sandbox
        https://bugs.webkit.org/show_bug.cgi?id=195169

        Reviewed by Daniel Bates.

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

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

        [WinCairo] Enable service worker
        https://bugs.webkit.org/show_bug.cgi?id=188318

        Reviewed by Youenn Fablet.

        * Source/cmake/OptionsWin.cmake:

2019-02-28  Don Olmstead  <don.olmstead@sony.com>

        [WinCairo] Turn ENABLE_RESOURCE_LOAD_STATISTICS on
        https://bugs.webkit.org/show_bug.cgi?id=194267

        Reviewed by Brent Fulgham.

        * Source/cmake/OptionsWin.cmake:

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

        [CoordinatedGraphics] Remove COORDINATED_GRAPHICS_THREADED option
        https://bugs.webkit.org/show_bug.cgi?id=195159

        Reviewed by Don Olmstead.

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

2019-02-26  Gabe Giosia  <giosia@google.com>

        Incorrect formatting around command in Readme.md
        https://bugs.webkit.org/show_bug.cgi?id=195061

        Reviewed by Fujii Hironori.

        * ReadMe.md: removed stray period

2019-02-26  Dominik Infuehr  <dinfuehr@igalia.com>

        Fix warnings on ARM and MIPS
        https://bugs.webkit.org/show_bug.cgi?id=195049

        Reviewed by Mark Lam.

        Disable warnings for changes to the ABI with GCC 7.1.

        * Source/cmake/WebKitCompilerFlags.cmake:

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

        [WPE] Bump WPEBackend-fdo requirement to API version 1.0
        https://bugs.webkit.org/show_bug.cgi?id=195001

        Reviewed by Carlos Garcia Campos.

        * Source/cmake/FindWPEBackend-fdo.cmake: Use WPEBackend-fdo-1.0.
        * Source/cmake/OptionsWPE.cmake: Ditto.

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

        [WPE] Add support for holepunch using an external video player
        https://bugs.webkit.org/show_bug.cgi?id=194899

        Reviewed by Xabier Rodriguez-Calvar.

        Add EXTERNAL_HOLEPUNCH option to the WPE port. Add a manual test to check the
        feature. Rename and update the test for GStreamer holepunch to avoid confusion.

        * ManualTests/wpe/video-player-holepunch-external.html: Added.
        * ManualTests/wpe/video-player-holepunch-gstreamer.html: Renamed from ManualTests/wpe/video-player-holepunch.html.
        * Source/cmake/OptionsWPE.cmake:

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 ==
