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

        Unreviewed, update atomics detection to make libpas built on Linux

        * Source/cmake/WebKitCompilerFlags.cmake:

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

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

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

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 ==
