Hi, I've recently found two non-trivial issues with unified builds. They are not missing #include but instead conflicts between C++ files: - Two C++ files including the same header but with a #define directive set to different values [1]. - One C++ file including a header with implicit template instantiation in an inline function before an explicit template specialization in a second C++ file. [2] I guess there could be more examples like this (e.g. functions with conflicting names in two C++ files...). Should we allow to prevent some files to be included in unified build? This is possible in Mozilla's build system for example [3]. Or should we always try to re-write the code to fix the conflicts between files? This might go against our usual practice: For example the current solution I have for [2] is to move the function from the header to its implementation C++ file, losing potential performance benefit of inlining... [1] https://bugs.webkit.org/show_bug.cgi?id=189579 [2] https://bugs.webkit.org/show_bug.cgi?id=189541 [3] https://dxr.mozilla.org/mozilla-central/source/dom/canvas/moz.build#70 On 02/09/2018 02:14, Simon Fraser wrote:
Unified sources allow you to get away without #including all the files you need in a .cpp file, because some earlier file in the group has probably already included them for you.
This means that when you add a new file to the build, and the unified sources get shuffled around, you end up with a long list of build breakages, some platform-specific, that you can only fix by repeating EWS trials. Here's an example: https://bugs.webkit.org/show_bug.cgi?id=189223. That patch added on new file in Source/WebCore/rendering, which required unrelated #include changes in at least:
rendering/RenderBlockFlow.cpp: rendering/RenderFrame.cpp: rendering/RenderImage.cpp:
How can we solve this? Should we have an EWS that builds non-unified? Can we somehow have the style checker do #include enforcement?
Simon
_______________________________________________ webkit-dev mailing list webkit-dev@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-dev
-- Frédéric Wang - frederic-wang.fr