<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>240297</bug_id>
          
          <creation_ts>2022-05-10 23:24:33 -0700</creation_ts>
          <short_desc>[CMake][VS] PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h is not updated in incremental build</short_desc>
          <delta_ts>2022-05-16 15:57:52 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CMake</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>annulen</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>pangle</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1868062</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-05-10 23:24:33 -0700</bug_when>
    <thetext>[CMake][VS] PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h is not updated in incremental build

1. Build WinCairo with CMake Visual Studio generator
   perl Tools\Scripts\build-webkit --wincairo --debug --no-ninja

2. Edit builtins_generate_internals_wrapper_header.py to append a blank line

diff --git a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py
index 8858460a0982..3faa59d20a70 100644
--- a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py
+++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_internals_wrapper_header.py
@@ -48,6 +48,7 @@ class BuiltinsInternalsWrapperHeaderGenerator(BuiltinsGenerator):
 
         sections = []
         sections.append(self.generate_license())
+        sections.append(&apos;&apos;)
         sections.append(Template(Templates.DoNotEditWarning).substitute(args))
         sections.append(Template(Templates.HeaderIncludeGuard).substitute(args))
         sections.append(self.generate_secondary_header_includes())

3. Incremental-build WinCairo
   perl Tools\Scripts\build-webkit --wincairo --debug --no-ninja

4. Check WebCoreJSBuiltinInternals.h files

$ ls -l WebKitBuild/Debug/WebCore/**/WebCoreJSBuiltinInternals.h
-rwxrwxrwx 1 fujii fujii 3541 May 11 15:12 WebKitBuild/Debug/WebCore/DerivedSources/WebCoreJSBuiltinInternals.h*
-rwxrwxrwx 1 fujii fujii 3537 May 11 14:30 WebKitBuild/Debug/WebCore/PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h*

PrivateHeaders/WebCore/WebCoreJSBuiltinInternals.h is not updated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868063</commentid>
    <comment_count>1</comment_count>
      <attachid>459144</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-05-10 23:28:05 -0700</bug_when>
    <thetext>Created attachment 459144
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868315</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-05-11 23:18:30 -0700</bug_when>
    <thetext>1.
${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h is generated by this add_custom_command.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/WebCore/CMakeLists.txt#L2375-L2383

2.
${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h is added to WebCore_SOURCES.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/WebCore/CMakeLists.txt#L2388

3.
${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h is added to WebCore_PRIVATE_FRAMEWORK_HEADERS.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/WebCore/Headers.cmake#L2116

4.
${WebCore_PRIVATE_FRAMEWORK_HEADERS} are copied to ${WebCore_PRIVATE_FRAMEWORK_HEADERS_DIR}/WebCore directory in WebCore_CopyPrivateHeaders target by this WEBKIT_COPY_FILES.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/WebCore/CMakeLists.txt#L2438-L2442

5.
WebCore_CopyPrivateHeaders target has a dependency to WebCore target.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/WebCore/CMakeLists.txt#L2449

6.
WEBKIT_COPY_FILES uses add_custom_command to copy files. It specifies the file as MAIN_DEPENDENCY.
https://github.com/WebKit/WebKit/blob/992f5b028f19101857ea6590c3f75bb41f543a65/Source/cmake/WebKitMacros.cmake#L473

7.
MAIN_DEPENDENCY suggests to Visual Studio generators where to hang the custom command.
https://cmake.org/cmake/help/latest/command/add_custom_command.html

8.
In this case, copying command of ${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h is attached to the file itself.

9.
${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h is included into both WebCore.vcxproj and WebCore_CopyPrivateHeaders.vcxproj due to (2) and (3).

10.
If a source file attached with a custom command is belong to multiple vcxproj, CMake VS generator generates the build rule only in the least-dependent vcxproj.
https://gitlab.kitware.com/cmake/cmake/-/commit/f59c33a763ba1483129f0e721bc2394bb7442876

11.
In this case, WebCore.vcxproj is the least-dependent target due to (5).
So, the copying command is in WebCore.vcxproj.

12.
If both generate-js-builtins.py command and the copying command are in WebCore.vcxproj, they don&apos;t work as expected.
I don&apos;t know the reason.

In the WIP patch, ${WebCore_DERIVED_SOURCES_DIR}/WebCoreJSBuiltinInternals.h isn&apos;t added to WebCore_SOURCES.
Then, the copying command is generated in WebCore_CopyPrivateHeaders.vcxproj. It works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1868623</commentid>
    <comment_count>3</comment_count>
      <attachid>459271</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-05-12 19:27:53 -0700</bug_when>
    <thetext>Created attachment 459271
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1869475</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-16 15:57:46 -0700</bug_when>
    <thetext>Committed r294273 (250619@main): &lt;https://commits.webkit.org/250619@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 459271.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459144</attachid>
            <date>2022-05-10 23:28:05 -0700</date>
            <delta_ts>2022-05-12 19:27:41 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>608</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZmEwNGI3ZWNlYmJlLi44MzdlZTdjMTEzODQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CkBAIC0yMzk1LDggKzIzOTUsNyBAQCBhZGRfY3VzdG9tX2NvbW1hbmQo
CiBsaXN0KEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VS
Q0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRpbnMuY3BwCiAgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L1dlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuY3BwCi0gICAgJHtXZWJDb3JlX0RF
UklWRURfU09VUkNFU19ESVJ9L1dlYkNvcmVKU0J1aWx0aW5zLmgKLSAgICAke1dlYkNvcmVfREVS
SVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oKQorKQogCiBBRERf
U09VUkNFX1dFQkNPUkVfREVSSVZFRF9ERVBFTkRFTkNJRVMoJHtXRUJDT1JFX0RJUn0vaHRtbC9I
VE1MVHJlZUJ1aWxkZXIuY3BwIE1hdGhNTE5hbWVzLmNwcCkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>459271</attachid>
            <date>2022-05-12 19:27:53 -0700</date>
            <delta_ts>2022-05-16 15:57:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-240297-20220513112752.patch</filename>
            <type>text/plain</type>
            <size>2814</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjk0MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGU4OTU4NTlhM2E2OTU0
NTY3NjZjNzg0YThlMmFhOTg2N2FlYjBmOS4uYzljZDIyMWIwYzVlYTEyMjNjNGExMGEyMjQ3NTM1
ZGY5YzdmYTI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA1LTEyICBGdWpp
aSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgorCisgICAgICAgIFtDTWFrZV1b
VlNdIFByaXZhdGVIZWFkZXJzL1dlYkNvcmUvV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oIGlz
IG5vdCB1cGRhdGVkIGluIGluY3JlbWVudGFsIGJ1aWxkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAyOTcKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbiBDTWFrZSBWaXN1YWwgU3R1ZGlvIGdlbmVyYXRv
ciBidWlsZHMsCisgICAgICAgIFdlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCB3YXMgbm90IGNv
cGllZCB0byB0aGUgcHJpdmF0ZSBoZWFkZXJzCisgICAgICAgIGRpcmVjdG9yeSBhcyBleHBlY3Rl
ZCBpbiBpbmNyZW1lbnRhbCBidWlsZHMuCisKKyAgICAgICAgJHtXZWJDb3JlX0RFUklWRURfU09V
UkNFU19ESVJ9L1dlYkNvcmVKU0J1aWx0aW5JbnRlcm5hbHMuaCB3YXMKKyAgICAgICAgYWRkZWQg
dG8gYm90aCBXZWJDb3JlX1NPVVJDRVMgYW5kIFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUy4KKyAgICAgICAgVGhpcyBjYXVzZWQgdGhlIGluY3JlbWVudGFsIGJ1aWxkIHByb2JsZW0u
IERvbid0IGFkZCB0aGUgaGVhZGVycworICAgICAgICB0byBXZWJDb3JlX1NPVVJDRVMuCisKKyAg
ICAgICAgVGhlcmUgd2FzIGFub3RoZXIgbWlub3IgcHJvYmxlbS4gJHtXZWJDb3JlX0JVSUxUSU5T
X1NPVVJDRVN9IHdhcworICAgICAgICBwYXNzZWQgdG8gdGhlIE1BSU5fREVQRU5ERU5DWSBhcmd1
bWVudCBvZiBhZGRfY3VzdG9tX2NvbW1hbmQuCisgICAgICAgIEhvd2V2ZXIsIE1BSU5fREVQRU5E
RU5DWSBhcmd1bWVudCBzaG91bGQgdGFrZSBhIHNpbmdsZSBmaWxlLiBJdAorICAgICAgICBzaG91
bGQgYmUgcGFzc2VkIHRvIERFUEVORFMgYXJndW1lbnQuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKwogMjAyMi0wNS0xMSAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAK
ICAgICAgICAgV2ViIEluc3BlY3RvcjogUGFyc2UgSW5qZWN0ZWRTY3JpcHRTb3VyY2UgYXMgYSBi
dWlsdC1pbiB0byBnZXQgZ3VhcmFudGVlZCBub24tdXNlci1vdmVycmlkZW4gSlNDIGJ1aWx0LWlu
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA3OTJhNjcwMTYyN2MxZWEzYzg5YmRlYTVjOGNmM2Iy
MmNmY2RkZWY0Li41YmY0N2JkOGZiZjJlNzRjZTNjZGNmYmE0MzNmNjYzZjFjZDljMzk3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dApAQCAtMjM3NywxNSArMjM3NywxMiBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgICAgICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElSfS9XZWJDb3JlSlNC
dWlsdGluSW50ZXJuYWxzLmNwcAogICAgICAgICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VT
X0RJUn0vV2ViQ29yZUpTQnVpbHRpbnMuaAogICAgICAgICAgICAke1dlYkNvcmVfREVSSVZFRF9T
T1VSQ0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRpbkludGVybmFscy5oCi0gICAgTUFJTl9ERVBFTkRF
TkNZICR7V2ViQ29yZV9CVUlMVElOU19TT1VSQ0VTfQotICAgIERFUEVORFMgJHtCVUlMVElOU19H
RU5FUkFUT1JfU0NSSVBUU30gJHtXZWJDb3JlX0RFUklWRURfQlVJTFRJTl9IRUFERVJTfQorICAg
IERFUEVORFMgJHtCVUlMVElOU19HRU5FUkFUT1JfU0NSSVBUU30gJHtXZWJDb3JlX0RFUklWRURf
QlVJTFRJTl9IRUFERVJTfSAke1dlYkNvcmVfQlVJTFRJTlNfU09VUkNFU30KICAgICBDT01NQU5E
ICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7SmF2YVNjcmlwdENvcmVfU0NSSVBUU19ESVJ9L2dlbmVy
YXRlLWpzLWJ1aWx0aW5zLnB5IC0td3JhcHBlcnMtb25seSAtLWZyYW1ld29yayBXZWJDb3JlIC0t
b3V0cHV0LWRpcmVjdG9yeSAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0gJHtXZWJDb3Jl
X0JVSUxUSU5TX1NPVVJDRVN9CiAgICAgVkVSQkFUSU0pCiBsaXN0KEFQUEVORCBXZWJDb3JlX1NP
VVJDRVMKICAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29yZUpTQnVpbHRp
bnMuY3BwCi0gICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1dlYkNvcmVKU0J1aWx0
aW5JbnRlcm5hbHMuY3BwCi0gICAgJHtXZWJDb3JlX0RFUklWRURfU09VUkNFU19ESVJ9L1dlYkNv
cmVKU0J1aWx0aW5zLmgKLSAgICAke1dlYkNvcmVfREVSSVZFRF9TT1VSQ0VTX0RJUn0vV2ViQ29y
ZUpTQnVpbHRpbkludGVybmFscy5oKQorICAgICR7V2ViQ29yZV9ERVJJVkVEX1NPVVJDRVNfRElS
fS9XZWJDb3JlSlNCdWlsdGluSW50ZXJuYWxzLmNwcCkKIAogQUREX1NPVVJDRV9XRUJDT1JFX0RF
UklWRURfREVQRU5ERU5DSUVTKCR7V0VCQ09SRV9ESVJ9L2h0bWwvSFRNTFRyZWVCdWlsZGVyLmNw
cCBNYXRoTUxOYW1lcy5jcHApCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>