[webkit-dev] Moving WebCore to unified source builds and style changes.
keith_miller at apple.com
Thu Oct 12 14:53:09 PDT 2017
As discussed previously, I’m preparing to start migrating WebCore to unified-source builds. I was originally going to move over in one step but I have since realized that is going to be super hard to rebase fast enough. Instead I’ll move WebCore over incrementally. I have a full build of webkit working locally with both CMake and Xcode. The debug build time on my MBP went from ~25min to ~9min. There are still a bunch of files that don’t work with unified sources (mostly .mm files) that I will try to fix later.
I had to make a bunch of source changes in order to get things to work (see: https://bugs.webkit.org/show_bug.cgi?id=178229 <https://bugs.webkit.org/show_bug.cgi?id=178229>):
1) Move all “using namespace <name>;” inside the WebCore namespace (they used to be in the global namespace) and change to "using WebCore::<type-name>;” in .mm files.
2) Move a bunch of the soft linking library/framework macros out of the .mm files since those caused name collision problems.
3) Fix minor other naming collisions.
It seems like we are already moving away from 2 with PAL so I’m hoping that’s not contentious.
The problem with 1 in a unified source world is generic names often collide with system header names. For example, WebCore has a Rect class and that collided with a system header type elsewhere. Thus, I propose that we change our style rules to forbid "using namespace” in the global scope and only allow them inside namespaces. We already have a stricter rule in headers so it doesn’t seem like a big change to apply this rule to .cpp files. Interestingly, it looks like JSC never followed the global namespace “using namespace" rule we currently have. Obviously, we’d need to update https://webkit.org/code-style-guidelines/ <https://webkit.org/code-style-guidelines/>, regardless of our final style choice.
What does everyone else think about this style change?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the webkit-dev