[webkit-dev] unified sources build + forwarding headers that are copies
Salisbury, Mark
mark.salisbury at hp.com
Fri Nov 17 04:22:22 PST 2017
"Huh, this seems to be a consequence of our conversion to #pragma once"
Absolutely.
#ifndef _MY_SPECIAL_HEADER_FILE_H
#define _MY_SPECIAL_HEADER_FILE_H
...
#endif
You could then include this MySpecialHeaderFile.h from all sorts of places and the definitions would only appear to the compiler once.
#pragma once says "Include this header file (at this location)" one time only.
-Mark
-----Original Message-----
From: Konstantin Tokarev [mailto:annulen at yandex.ru]
Sent: Friday, November 17, 2017 9:16 PM
To: Salisbury, Mark <mark.salisbury at hp.com>; webkit-dev at lists.webkit.org
Subject: Re: [webkit-dev] unified sources build + forwarding headers that are copies
14.11.2017, 14:54, "Salisbury, Mark" <mark.salisbury at hp.com>:
> Hello,
>
> 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.
Huh, this seems to be a consequence of our conversion to #pragma once
>
> 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.
>
> Thanks,
>
> Mark
>
> (Personally I don’t like forwarding headers but that’s another topic… not sure if the benefits outweigh associated problems)
>
> D:\git\webkit-org\WebKitBuild\Debug\DerivedSources\WebCore\unified-sources\UnifiedSource180.cpp
>
> 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
>
> ,
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev at lists.webkit.org
> https://lists.webkit.org/mailman/listinfo/webkit-dev
--
Regards,
Konstantin
More information about the webkit-dev
mailing list