When you refer to "build time warnings" - do you mean the traditional
compiler warnings we have[0] - or is this something different?  I
guess I'm confused about how unified builds would negatively impact
those?

-tom

[0] 
https://searchfox.org/mozilla-central/source/build/moz.configure/warnings.configure

On Fri, Sep 10, 2021 at 12:09 PM Andi-Bogdan Postelnicu
<[email protected]> wrote:
>
> TL;DR: We’ve added support for building Firefox outside of the unified 
> environment
>
> More than 6 years ago we added support to build Firefox in an unified 
> environment by bundling together more translation units into a single one and 
> feeding it to our build pipeline. This approach proved to be very useful from 
> two perspectives: it significantly decreased the building time and also we 
> were providing the compiler, aka Clang, with more context that permitted a 
> broader range of optimizations resulting in better results for perf tests 
> like browsertime.
>
> Unfortunately this also came with a cost: we have stopped supporting the 
> non-unified building system, creating a large dependency between different 
> translation units.
>
> Our entire build system for C/C++ relies on the LLVM toolchain, leveraging at 
> the maximum potential the Clang tooling that is part of LLVM proved to be 
> very challenging with the unified build system. Build time warnings, 
> static-analysis (based on clang-tidy), IntelliSense (based on clangd) all are 
> more difficult or suboptimal in a unified build context.
>
> Not being able to leverage the Clang tooling toolsuite at its full potential 
> was undesirable, so we’ve begun the task of adding support for building 
> outside of the unified system.
>
> We’ve designed a hybrid build system that attempts to perform a build with as 
> many files compiled individually as possible.
>
> Due to the implicit dependency problem, not all modules are currently able to 
> be compiled in a non-unified environment. To designate these for the hybrid 
> build, the `REQUIRES_UNIFIED_BUILD` option can be set in their corresponding 
> moz.build file.
>
> To build in the hybrid mode, set the following flag in your mozconfig:
> ```
> ac_add_options --disable-unified-build
> ```
>
> If you want to benefit from better build time warnings, increased static 
> analysis reliability and improved support for C++ language-specific 
> IntelliSense for your modules, please help by making them buildable outside 
> of the unified environment.
>
> In order to prevent future regressions we also added 3 build tasks, targeting 
> linux64, macos64 and win64, that run on autoland and build Firefox with the 
> hybrid build method.
>
> If you have any questions, concerns or you would like to know more about 
> this, please feel free to reach out to us.
>
> Thank you,
> Compiler and Development Tools Team
>
> --
> You received this message because you are subscribed to the Google Groups 
> "[email protected]" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/AD041F24-F11F-4670-A8FC-36219B304F53%40mozilla.com.

-- 
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/mozilla.org/d/msgid/dev-platform/CADua4_uJ0jkorGG3T5a5U2wHNR5_SOd56jcQGEti0RiF-GM%3D-Q%40mail.gmail.com.

Reply via email to