[webkit-dev] unified sources build + forwarding headers that are copies

Salisbury, Mark mark.salisbury at hp.com
Tue Nov 14 03:54:15 PST 2017


I'm building on Windows (WPE platform, perhaps I'm the first to try this!) and I'm seeing some compile errors that I believe are arising from previously untested combinations of source files.

If I understand unified sources build correctly, it uses a large list of files and then arranges them into groups, 8 files at a time.  If I have a slightly different set of files than is standard, or if someone adds a new source file, the combinations of files can change.  If the same header file is included twice (and forwarding header file is a copy of the original), this causes duplicate definitions / compile errors.

My question is - is there a right / ideal way to fix these conflicts?

d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h is included twice, the first time, via the real path, the second time, via a JavaScriptCore forwarding header.  Note that this forwarding header is a copy of the header file, not a pointer/alias to the real header path.

The code that creates the forwarding header version comes from D:\git\webkit-org\Source\JavaScriptCore\PlatformWin.cmake (see xcopy around line 40).

Do non-windows ports use a more intelligent method (a pointer, not a file copy) for creating forwarding headers for JavaScriptCore includes?

Is the windows build the only one to use unified sources currently?

Source/WebKit/Scripts/generate-forwarding-headers.pl scans .c|.cpp files for forwarding headers that need to be created and creates a header 'pointer' to the real path, so both paths could be included (forwarding header vs. real) and there would be no conflict, because ultimately, only the real header is included.

So I guess I'm suggesting to use a forwarding header 'pointer' instead of header file xcopy, which would mean running a script that recurses directories in javascriptcore and creates forwarding headers.  That would mean no duplicate header file name would be allowed in JavaScriptCore - I don't think that's a problem though.  (I don't really like the idea of grep'ing all webcore to create forwarding headers where needed, grep'ing webcore gets expensive) .  Just wondering if there are other suggestions.


(Personally I don't like forwarding headers but that's another topic...  not sure if the benefits outweigh associated problems)


Turned on 'show includes', you can see the two ways I get to the same header file:

First source file including ArrayBufferSharingMode.h:

1>Note: including file: D:\git\webkit-org\Source\WebCore\css/DOMMatrix.cpp
1>Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
1>Note: including file:  d:\git\webkit-org\source\webcore\css\DOMMatrix.h
1>Note: including file:   d:\git\webkit-org\source\webcore\css\DOMMatrixReadOnly.h
1>Note: including file:    d:\git\webkit-org\source\webcore\css\DOMMatrixInit.h
1>Note: including file:     d:\git\webkit-org\source\webcore\css\DOMMatrix2DInit.h
1>Note: including file:    D:\git\webkit-org\Source\WebCore\bindings\js\ScriptWrappable.h
1>Note: including file:     D:\git\webkit-org\Source\JavaScriptCore\heap/Weak.h
1>Note: including file:    D:\git\webkit-org\Source\WebCore\platform\graphics\transforms\TransformationMatrix.h
1>Note: including file:     D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint.h
1>Note: including file:      d:\git\webkit-org\source\webcore\platform\graphics\FloatSize.h
1>Note: including file:       d:\git\webkit-org\source\webcore\platform\graphics\IntPoint.h
1>Note: including file:        d:\git\webkit-org\source\webcore\platform\graphics\IntSize.h
1>Note: including file:     D:\git\webkit-org\Source\WebCore\platform\graphics\FloatPoint3D.h
1>Note: including file:    D:\git\webkit-org\Source\JavaScriptCore\runtime/Float32Array.h
1>Note: including file:     d:\git\webkit-org\source\javascriptcore\runtime\TypedArrays.h
1>Note: including file:      d:\git\webkit-org\source\javascriptcore\runtime\GenericTypedArrayView.h
1>Note: including file:       d:\git\webkit-org\source\javascriptcore\runtime\ArrayBuffer.h
1>Note: including file:        d:\git\webkit-org\source\javascriptcore\runtime\ArrayBufferSharingMode.h

Second source file including ArrayBufferSharingMode.h:

1>Note: including file: D:\git\webkit-org\Source\WebCore\css/DOMMatrixReadOnly.cpp
1>Note: including file:  D:\git\webkit-org\Source\WebCore\config.h
1>Note: including file:  d:\git\webkit-org\source\webcore\css\CSSToLengthConversionData.h
1>Note: including file:  D:\git\webkit-org\Source\WebCore\dom\DOMPoint.h
1>Note: including file:   d:\git\webkit-org\source\webcore\dom\DOMPointReadOnly.h
1>Note: including file:    d:\git\webkit-org\source\webcore\dom\DOMPointInit.h
1>Note: including file:  d:\git\webkit-org\source\webcore\css\TransformFunctions.h
1>Note: including file:   D:\git\webkit-org\Source\WebCore\platform\graphics\transforms\TransformOperations.h
1>Note: including file:    D:\git\webkit-org\Source\WebCore\platform\graphics\LayoutSize.h
1>Note: including file:    d:\git\webkit-org\source\webcore\platform\graphics\transforms\TransformOperation.h
1>Note: including file:  D:\git\webkit-org\WebKitBuild\Debug\DerivedSources\ForwardingHeaders\JavaScriptCore/GenericTypedArrayViewInlines.h
1>Note: including file:   d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\GenericTypedArrayView.h
1>Note: including file:    d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBuffer.h
1>Note: including file:     d:\git\webkit-org\webkitbuild\debug\derivedsources\forwardingheaders\javascriptcore\ArrayBufferSharingMode.h

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-dev/attachments/20171114/1e6f3d61/attachment.html>

More information about the webkit-dev mailing list