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