[webkit-changes] [WebKit/WebKit] adb961: Avoid using __TIMESTAMP__ when building for a comp...

Elliott Williams noreply at github.com
Thu Nov 17 17:46:46 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: adb96155be5e75707c6d831c3329b72b0afcc2b1
      https://github.com/WebKit/WebKit/commit/adb96155be5e75707c6d831c3329b72b0afcc2b1
  Author: Elliott Williams <emw at apple.com>
  Date:   2022-11-17 (Thu, 17 Nov 2022)

  Changed paths:
    M Source/JavaScriptCore/CMakeLists.txt
    M Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
    M Source/JavaScriptCore/Sources.txt
    M Source/JavaScriptCore/runtime/CachedTypes.cpp
    A Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp.in
    A Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.h
    M Source/ThirdParty/libwebrtc/Source/third_party/yasm/frontends/yasm/yasm.c

  Log Message:
  -----------
  Avoid using __TIMESTAMP__ when building for a compilation cache
https://bugs.webkit.org/show_bug.cgi?id=247622
rdar://102056857

Reviewed by Mark Lam.

For Xcode-based ports, add a build rule to generate a
"JSCBytecodeCacheVersion.cpp" source file, which contains a SHA1 hash of
CachedTypes.o and JSCBuiltins.o, plus a production source version string
if specified. This is a belt-and-suspenders approach to try and ensure
that the version hash changes any time the JSC sources change, while
still being reproducible.

Because of its input and output dependencies, XCBuild runs the build
rule after CachedTypes.cpp and JSCBuiltins.cpp are compiled, then
subsequently compiles the source file the build rule generates.

For CMake + Ninja, it doesn't seem to be easily possible to do achieve
the same build ordering without splitting CachedTypes and JSCBuiltins
out to a separate target. For now, continue to use __TIMESTAMP__.

* Source/JavaScriptCore/CMakeLists.txt:
* Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj: Add
  build rule and source references.
* Source/JavaScriptCore/Sources.txt: Remove CachedTypes.cpp and
  JSCBuiltins.cpp from the unified source set, so that they get their
  own object files.
* Source/JavaScriptCore/runtime/CachedTypes.cpp:
(JSC::GenericCacheEntry::isUpToDate const):
(JSC::jscBytecodeCacheVersion): Deleted.
* Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.cpp.in: Added.
  Template file, contains a CACHED_TYPES_CKSUM token which is replaces
  with the actual checksum by the build rule.
* Source/JavaScriptCore/runtime/JSCBytecodeCacheVersion.h: Added.
* Source/ThirdParty/libwebrtc/Source/third_party/yasm/frontends/yasm/yasm.c:
  Remove __DATE__ macro used in assembler output.

Canonical link: https://commits.webkit.org/256816@main




More information about the webkit-changes mailing list