> On Jan 14, 2017, at 12:39 PM, Myles C. Maxfield <[email protected]> wrote:
> 
> Here’s a quick rundown of where we stand. Please correct me if any of this is 
> inaccurate.
> 
> There are a few separate issues:
> Path on disk of PAL folder: Sounds like everyone more-or-less agrees that 
> this should belong in Source/, not in Source/WebCore/. However, I believe 
> this is currently incompatible with Apple’s internal build infrastructure. If 
> that’s true, then this issue is decided.

While there are extra steps required, we can resolve this for PAL the same as 
was done for WTF. Or at least, I don't know of any issues that apply to PAL 
which did not apply to WTF at the time we moved it out. If you think you know 
of a reason and it's stuff we shouldn't talk about here, I'd be glad to discuss 
off-list.

> Namespace of PAL symbols: Sounds like everyone agrees there should just be a 
> top-level namespace PAL (and not WebCore::PAL).
> #include style of PAL headers: Sounds like everyone agrees this should be the 
> <pal/Foo.h> style. There are two ways to achieve this:
> Add WebCore/ to the search path, and put PAL files in WebCore/pal/. This has 
> a problem where it is easy to include other files inside WebCore but outside 
> of PAL, since they are in the search path. This is the approach Don and I 
> took in our patch, and solved this problem by using the Python script to 
> check the #include lines.
> Put PAL files in WebCore/PAL/pal/, and add WebCore/PAL/ to the search path. 
> This has the same problem WTF has where there is a nested folder with the 
> same name.

Don't we have these same two choices if the include style is <PAL/Foo.h>? 
However, this concern is moot if PAL becomes a top-level item under Source, or 
at least is planned to go there even if not immediately.

> Presence of an Xcode project: Sounds like this is possible and the best way 
> forward. Does this work back to the earliest OS we build on?
> Static library or shared library: I was under the impression that using a 
> shared library could potentially have performance problems, which would not 
> occur with a static library. However, a shared library would enforce layering 
> naturally, whereas a static library would need either
> An application to link to it and not to WebCore, such as a unit test suite, or
> Some out-of-band layering enforcement, like a Python script.
>               I’m a little hesitant to rely on a testing application to 
> enforce layering in shipping code because some ports may choose not to build 
> those tests.

WTF works fine as a static library that's layered under JavaScriptCore, and it 
doesn't have any kind of out-of-band enforcement tool. As far as I know, this 
works fine and has never led to a layering violation or other problem. The only 
enforcement is that WTF builds as a separate static library in a separate 
project, and doesn't include JavaScriptCore headers.

Once again I would suggest that "do what WTF does" is likely to be a good 
solution.

> 
> 
> 
> 
> So, here are the items which need to be solved:
> Do Xcode cross-project references work going back to the oldest Xcode we 
> build on?
> Regarding issue #2 above, should I put source files in WebCore/pal or 
> WebCore/PAL/pal?

I prefer the latter because: (a) it's more forward-looking if we eventually 
move PAL out to its own top level; and (b) it won't accidentally allow includes 
of other WebCore headers through an overly-broad include path.

> How do people feel about relying on a non-shipping application to enforce 
> laying in shipping code?

It seems unnecessary. Being a separate module under source (or setting 
everything up as if it were that way already until we can move it) is 
sufficient for this kind of thing, as demonstrated by WTF.

> 
> 
> Also (note to self): I need to figure out the ForwardingHeaders story.
> 
> —Myles
> 
>> On Jan 14, 2017, at 10:47 AM, Konstantin Tokarev <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> 
>> 
>> 14.01.2017, 17:16, "Fujii Hironori" <[email protected] 
>> <mailto:[email protected]>>:
>>> On Sat, Jan 14, 2017 at 1:34 AM, Konstantin Tokarev <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>>>  Static library is just an (indexed) archive of object files, symbol 
>>>> dependencies are not resolved when it is created. Instead this happens 
>>>> when static library is linked into shared library or executable.
>>>> 
>>>>  If PAL is static and uses symbol from WebCore, link failure may happen 
>>>> only[*] if that symbol is not used anywhere in WebCore itself (provided 
>>>> that PAL stays after WebCore in linker command line and options like 
>>>> --start-group/--end-group are not used).
>>>> 
>>>>  [*] Assuming linker behavior similar to ELF linkers
>>> 
>>> You can check unresolved symbols of the static library by creating a
>>> unit test executable of PAL.
>> 
>> Actually, it enough just to avoid adding WebCore to include directories of 
>> PAL, and code with layering violation won't compile.
>> 
>>> _______________________________________________
>>> webkit-dev mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.webkit.org/mailman/listinfo/webkit-dev
>> 
>> -- 
>> Regards,
>> Konstantin
>> _______________________________________________
>> webkit-dev mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.webkit.org/mailman/listinfo/webkit-dev
> 
> _______________________________________________
> webkit-dev mailing list
> [email protected]
> https://lists.webkit.org/mailman/listinfo/webkit-dev

_______________________________________________
webkit-dev mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-dev

Reply via email to