https://bugs.webkit.org/show_bug.cgi?id=224227
Patch by Kimmo Kinnunen <kkinnunen@apple.com> on 2021-04-07
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:
Canonical link: https://commits.webkit.org/236246@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@275601 268f45cc-cd09-0410-ab3c-d52691b4dbfc
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.
Tools:
Highlights:
- ICU 67 (see bug 215327)
- gcc update from 9.3.0 to 10.0
- clang update from 8.0 to 10.0
- perf is now included
- usable pipewire (host needs a working daemon and recent enough xdg-desktop-portal though)
- Mesa is no longer loaded from the flathub GL extension, but included in our downstream SDK, with debug symbols
This patch only includes the build definitions updates, bumping the SDK branch to 0.3. The
actual migration will be landed in a follow-up patch.
* buildstream/elements/flatpak-platform-extensions.bst:
* buildstream/elements/flatpak-runtimes.bst:
* buildstream/elements/flatpak/platform.bst:
* buildstream/elements/flatpak/sdk.bst:
* buildstream/elements/freedesktop-sdk.bst:
* buildstream/elements/sdk-build-depends/swig.bst:
* buildstream/elements/sdk-platform.bst:
* buildstream/elements/sdk.bst:
* buildstream/elements/sdk/at-spi2-atk.bst: Removed.
* buildstream/elements/sdk/at-spi2-core.bst: Removed.
* buildstream/elements/sdk/atk.bst: Removed.
* buildstream/elements/sdk/brotli.bst: Removed.
* buildstream/elements/sdk/glib.bst:
* buildstream/elements/sdk/gobject-introspection.bst: Removed.
* buildstream/elements/sdk/graphene.bst:
* buildstream/elements/sdk/gst-plugins-bad.bst:
* buildstream/elements/sdk/gst-plugins-good.bst:
* buildstream/elements/sdk/gstreamer.bst:
* buildstream/elements/sdk/gtk+-3.bst:
* buildstream/elements/sdk/gtk.bst:
* buildstream/elements/sdk/libdrm.bst: Added.
* buildstream/elements/sdk/libgcrypt.bst:
* buildstream/elements/sdk/libsecret.bst:
* buildstream/elements/sdk/libsoup.bst:
* buildstream/elements/sdk/libsrtp2.bst: Removed.
* buildstream/elements/sdk/mesa.bst: Added.
* buildstream/elements/sdk/pygobject.bst:
* buildstream/elements/sdk/python2-pygobject.bst:
* buildstream/elements/sdk/rr.bst:
* buildstream/elements/sdk/shared-mime-info.bst:
* buildstream/elements/sdk/v4lutils.bst: Removed.
* buildstream/elements/sdk/woff2.bst:
* buildstream/elements/sdk/xorg-server.bst:
* buildstream/elements/test-infra/httpd.bst:
* buildstream/patches/fdo/0001-Pango-Bump-to-1.45-master.patch: Removed.
* buildstream/patches/fdo/0001-dav1d-Bump-to-0.7.0.patch: Removed.
* buildstream/patches/gtk-meson-Bump-to-latest-version-of-the-3.24-branch.patch: Removed.
* buildstream/patches/libsecret-b53e9876f4611525b7a8f69a3110fbec51dcede0.patch: Removed.
* buildstream/patches/mesa/mesa_libdrm_deps.patch: Added.
* buildstream/patches/xserver-search-for-DRI-drivers-at-LIBGL_DRIVERS_PATH-environ.patch:
Removed because a variant was landed upstream 2 years ago:
319af6f471
* buildstream/project.conf:
* flatpak/flatpakutils.py:
(WebkitFlatpak.run_in_sandbox): White-list a few Mesa environment variables.
Canonical link: https://commits.webkit.org/228860@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@266455 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=209343
Patch by Justin Michaud <justin@justinmichaud.com> on 2020-03-20
Reviewed by Keith Miller.
.:
* .gitignore:
Source/JavaScriptCore:
I managed to get clangd to work for code completion using the following command:
./Tools/Scripts/build-webkit --jsc-only --cmakeargs="-DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DENABLE_UNIFIED_BUILDS=OFF" && compdb -p WebKitBuild/Release/ list > compile_commands.json
This patch fixes the build for non-unified sources, and adds some extra clangd files to .gitignore.
* API/MarkedJSValueRefArray.h:
* jit/JITPropertyAccess.cpp:
Canonical link: https://commits.webkit.org/222280@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258774 268f45cc-cd09-0410-ab3c-d52691b4dbfc
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:
Tools:
* Scripts/copy-webkitlibraries-to-product-directory:
WebKitLibraries:
* Makefile:
* WebKitSystemInterface.h: Removed.
* win/include/WebKitSystemInterface/WebKitSystemInterface.h: Removed.
* win/lib32/WebKitSystemInterface.lib: Removed.
Canonical link: https://commits.webkit.org/222062@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@258520 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=198517
Reviewed by Simon Fraser.
.:
* .gitignore:
Ignore .mailmap files.
Tools:
Mailmaps wildly improve the output of various Git tools, including
`git shortlog -sne`, mapping committers to our canonical name/email pair.
* Scripts/validate-committer-lists:
(CommitterListFromGit):
(CommitterListBugzillaChecker.print_committers_with_invalid_bugzilla_emails):
Add some missing legacy username mappings.
(dump_mailmap):
(dump_mailmap.format_email):
(dump_mailmap.format_email_with_gitsvn_uuid):
(dump_mailmap.map_emails_to_legacy_username):
(main):
Add `validate-committer-lists --dump-mailmap`, which generates
one given committers.json and the existing mapping of legacy username
to email addresses that exists in validate-committer-lists.
Canonical link: https://commits.webkit.org/212816@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@246414 268f45cc-cd09-0410-ab3c-d52691b4dbfc
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.
Source/bmalloc:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/JavaScriptCore:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/ThirdParty/ANGLE:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/ThirdParty/libwebrtc:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WebCore:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
No new tests -- no new WebKit functionality.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WebCore/PAL:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WebInspectorUI:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WebKit:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WebKitLegacy/mac:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Source/WTF:
Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
Tools:
Add tools/scripts support for controlling LTO builds.
* Scripts/build-webkit: Add --lto-mode={none,thin,full}.
* Scripts/set-webkit-configuration: Add support for saving LTO
configuration to WebKitBuild/LTO.
* Scripts/webkitdirs.pm: Add support for reading configuration from
WebKitBuild/LTO and providing it to xcodebuild.
(determineLTOMode):
(ltoMode):
(XcodeOptions):
Canonical link: https://commits.webkit.org/204040@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235381 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=175715
Patch by Mathias Bynens <mathias@qiwi.be> on 2017-08-23
Reviewed by Ryosuke Niwa.
This patch pins React and react-dom to v15.5.4 (released in May 2017).
* Speedometer/resources/todomvc/architecture-examples/react/README.md: Documented build steps.
* Speedometer/resources/todomvc/architecture-examples/react/index.html: Made title consistent.
* Speedometer/resources/todomvc/architecture-examples/react/node_modules/*: Remove unneeded files and update per build instructions.
* Speedometer/resources/todomvc/architecture-examples/react/npm-shrinkwrap.json: Removed in favor of package-lock.json.
* Speedometer/resources/todomvc/architecture-examples/react/package-lock.json: Pinned dependencies to make build deterministic.
* Speedometer/resources/todomvc/architecture-examples/react/package.json: Update dependencies.
* Speedometer/resources/todomvc/architecture-examples/react/yarn.lock: Removed in favor of package-lock.json.
Canonical link: https://commits.webkit.org/192558@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221104 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=119618
Patch by Martin Robinson <mrobinson@igalia.com> and Danilo Cesar Lemes de Paula <danilo.cesar@collabora.co.uk> on 2013-12-11
Reviewed by Gustavo Noronha Silva.
Added a YouCompleteMe flag discovery script for Vim and the GTK+ port. The script
read the GTK+ build files to determine dynamically what flags to compile a source
file with. This allows Vim to provide auto-complete for C++/C language. See
https://github.com/Valloric/YouCompleteMe for how to use this file.
.:
* .gitignore: Ignore the YCM symlinks in the tree.
Tools:
* gtk/common.py:
(get_build_path): Added a fatal argument to build_path to avoid crashing YCM on failure.
* gtk/ycm_extra_conf.py: Added.
Canonical link: https://commits.webkit.org/143701@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@160531 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=99271
Reviewed by Gustavo Noronha Silva.
.:
The autogen.sh script now calls the Tools/gtk/override-feature-defines script
before calling autoreconf. This ensures that Source/WebCore/GNUmakefile.features.am
is present and properly modified if the build-webkit script intends to override
any feature.
The Source/WebCore/GNUmakefile.features.am file is added to the ignored files list
so it doesn't pop out as a new, untracked file.
* .gitignore:
* autogen.sh:
Source/WebCore:
Move the contents of GNUmakefile.features.am into GNUmakefile.features.am.in.
The former is then copied from the latter but then appropriately modified if
the build-webkit script overrides any of the default feature defines.
No new tests - no new testable functionality.
* GNUmakefile.features.am.in: Renamed from Source/WebCore/GNUmakefile.features.am.
Tools:
Refactor the code in webkitdirs.pm that builds an autotools project to generate
autogen.sh arguments, make arguments and installation prefix from the passed-in
parameters rather than generating all of that in build-webkit. The autogen.sh
arguments now contain only enable/disable flags for options that are actually
configurable in configure.ac, the flag value actually reflecting whether the feature
is enabled or disabled in the feature list.
Other features are overridable through modifying the GNUmakefile.features.am file.
All these features are now stored in the build directory and upon change trigger
a rerun of the autogen.sh script, pretty much like the autogen.sh arguments do.
The override-feature-defines script is called by autogen.sh, before GNUmakefile.in is
generated when calling autoreconf. Its task is to copy the GNUmakefile.features.am.in
into GNUmakefile.features.am and modify it if there's a text file in the build directory
that contains all the feature defines the build-webkit script has written. If the build
is not done through build-webkit (and there's no file in build directory listing all the
feature defines) the script does not advance further from copying.
This approach is taken to overcome the rigidness of the automake system as it's impossible
to effectively generate and use GNUmakefile.features.am or even GNUmakefile.features file
after the autoreconf command execution in autogen.sh.
* Scripts/build-jsc:
(buildMyProject):
* Scripts/build-webkit:
* Scripts/webkitdirs.pm:
(runAutogenForAutotoolsProjectIfNecessary):
(mustReRunAutogen):
(buildAutotoolsProject):
(buildGtkProject):
* Scripts/webkitperl/FeatureList.pm: Update the features that are currently enabled in
Source/WebCore/GNUmakefile.features.am.in but aren't in the feature list.
* Scripts/webkitpy/style/checker.py: Source/WebCore/GNUmakefile.features.am.in is recognized
as a text file and tabulation errors are reported. Skip the file to suppress them.
* gtk/override-feature-defines: Added.
(copy_feature_defines_makefile):
(adjust_feature_defines_makefile):
(adjust_feature_defines_makefile.override_feature_define):
(override_feature_defines):
Canonical link: https://commits.webkit.org/122825@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@137270 268f45cc-cd09-0410-ab3c-d52691b4dbfc
When building against Qt5 with GCC we would just run 'make' in the build dir,
and rely on the dependency files output by GCC (-MD) to handle dependency
tracking, but that fails for special-cases like adding a Q_OBJECT macro
to a header.
To guarantee that an incrmental build will work, we have to run 'make qmake',
which we now do on every build-webkit that's followed by a successful run
of update-webkit. The reasoning is that update-webkit can result in such
potential corner-cases being applied, and since we can't know for sure
unless we inspect the diff and account for all the corner cases we assume
the worst and always run 'make qmake'.
After a succesful run of build-webkit we proceed to do just 'make' for any
subsequent runs, since we assume that the developer knows what kind of
changes he/she is doing, and when a 'make qmake' is needed.
Reviewed by Simon Hausmann.
Canonical link: https://commits.webkit.org/93443@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@105398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=76505
Reviewed by Tony Chang.
.:
Update with newly-generated files.
* .gitignore:
Source/WebKit/chromium:
Update path to Tools/DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp.
* All.gyp:
* gyp_webkit:
- change to using All.gyp
- change build_webkit_exes_from_webkit_gyp to 0
Tools:
Update chromium build script to use All.gyp instead of WebKit.gyp
* DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Renamed from Source/WebKit/chromium/Tools.gyp.
* Scripts/webkitdirs.pm:
Canonical link: https://commits.webkit.org/93404@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@105330 268f45cc-cd09-0410-ab3c-d52691b4dbfc
https://bugs.webkit.org/show_bug.cgi?id=74583
Reviewed by Darin Fisher.
.:
Update .gitignore for Source/Platform/Platform.gyp/ generated project files.
* .gitignore:
Source/Platform:
This creates a skeleton directory structure for the chromium WebKit platform API and moves WebMimeRegistry.h
along with its dependencies (WebString and WebCString) to their final location.
* Platform.gyp/Platform.gyp: Added.
* Platform.gypi: Added.
* chromium/platform/WebCString.h: Copied from Source/WebKit/chromium/public/platform/WebCString.h.
(WebKit::WebCString::~WebCString):
(WebKit::WebCString::WebCString):
(WebKit::WebCString::operator=):
(WebKit::WebCString::isEmpty):
(WebKit::WebCString::isNull):
(WebKit::WebCString::operator std::string):
(WebKit::WebCString::fromUTF16):
(WebKit::operator<):
* chromium/platform/WebCommon.h: Copied from Source/WebKit/chromium/public/platform/WebCommon.h.
* chromium/platform/WebMimeRegistry.h: Copied from Source/WebKit/chromium/public/platform/WebMimeRegistry.h.
(WebKit::WebMimeRegistry::~WebMimeRegistry):
* chromium/platform/WebString.h: Copied from Source/WebKit/chromium/public/platform/WebString.h.
(WebKit::WebString::~WebString):
(WebKit::WebString::WebString):
(WebKit::WebString::operator=):
(WebKit::WebString::isEmpty):
(WebKit::WebString::isNull):
(WebKit::WebString::operator string16):
(WebKit::WebString::operator NullableString16):
(WebKit::WebString::fromUTF8):
(WebKit::operator==):
(WebKit::operator!=):
* chromium/src/WebCString.cpp: Renamed from Source/WebKit/chromium/src/WebCString.cpp.
(WebKit::WebCString::compare):
(WebKit::WebCString::reset):
(WebKit::WebCString::assign):
(WebKit::WebCString::length):
(WebKit::WebCString::data):
(WebKit::WebCString::utf16):
(WebKit::WebCString::fromUTF16):
(WebKit::WebCString::WebCString):
(WebKit::WebCString::operator=):
(WebKit::WebCString::operator WTF::CString):
* chromium/src/WebString.cpp: Renamed from Source/WebKit/chromium/src/WebString.cpp.
(WebKit::WebString::reset):
(WebKit::WebString::assign):
(WebKit::WebString::length):
(WebKit::WebString::data):
(WebKit::WebString::utf8):
(WebKit::WebString::fromUTF8):
(WebKit::WebString::equals):
(WebKit::WebString::WebString):
(WebKit::WebString::operator=):
(WebKit::WebString::operator WTF::String):
(WebKit::WebString::operator WTF::AtomicString):
Source/WebKit/chromium:
public/platform/WebMimeRegistry.h is a temporary forwarding header to ease the transition. Once downstream
callers are updated to the new location this header can be removed.
WebString, WebCString, and WebCommon.h will remain in place as forwarding headers for users of the WebKit client
API.
* WebKit.gyp:
* public/platform/WebCString.h:
* public/platform/WebCommon.h:
* public/platform/WebMimeRegistry.h:
* public/platform/WebString.h:
Tools:
Teaches the WEBKIT_EXPORT check about the chromium WebKit platform API header location.
* Scripts/webkitpy/style/checkers/cpp.py:
(check_function_definition):
Canonical link: https://commits.webkit.org/92335@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@104048 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebKit/chromium/WebKitUnitTests.xcodeproj,
Source/WebKit/chromium/All.xcodeproj to .gitignore
https://bugs.webkit.org/show_bug.cgi?id=73823
Reviewed by Tony Chang.
* .gitignore:
Source/WebKit/chromium: binaries in webkit.gyp should be split into a new file to break circular dependencies on webkit_support
https://bugs.webkit.org/show_bug.cgi?id=73382
Reviewed by Tony Chang.
XCode (and hence GYP) can't handle circular dependencies between
files (and projects). Accordingly, although the binaries in
WebKit.gyp depend on webkit_support and webkit_support depends
on webkit, we don't mention the latter dependency in the file.
To fix this, this change moves the binaries like DRT into a new
GYP file, and modifies gyp_webkit to build from that file
instead of WebKit.gyp.
* WebKit.gyp:
* All.gyp:
* WebKitUnitTests.gyp:
* gyp_webkit:
Tools: binaries in webkit.gyp should be split into a new file to break circular dependencies on webkit_support
https://bugs.webkit.org/show_bug.cgi?id=73382
Reviewed by Tony Chang.
XCode (and hence GYP) can't handle circular dependencies between
files (and projects). Accordingly, although the binaries in
WebKit.gyp depend on webkit_support and webkit_support depends
on webkit, we don't mention the latter dependency in the file.
To fix this, this change moves the binaries like DRT into a new
GYP file, and modifies gyp_webkit to build from that file
instead of WebKit.gyp.
* Tools.gyp: Added.
Canonical link: https://commits.webkit.org/90636@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@102201 268f45cc-cd09-0410-ab3c-d52691b4dbfc