[llvm-dev] Bazel support

Mehdi AMINI via llvm-dev llvm-dev at lists.llvm.org
Thu Aug 8 16:24:00 PDT 2019


Hi,

On Thu, Aug 8, 2019 at 4:15 PM Wynand Pieterse via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi all, trust all is well!
>
> I was wondering if LLVM would have a Bazel integrated build in the future?
> I can imagine the benefits this could bring, especially with regards to
> remote builds and caching.
>

There was a round-table at EuroLLVM on this topic. I couldn't participate
fully (I was writing my slides...) but I remember some key elements that we
not playing in favor of Bazel:
1) It is written in Java, and not widely available by default on every
platform. This is not a nice property to base a key piece of the
requirement for getting started with LLVM.
2) It is memory heavy (maybe related to the previous point...): it consumes
multiple GB by itself when building LLVM.
3) There are other solutions to have remote build execution and caching,
for instance the Chrome Goma Client
<https://chromium.googlesource.com/infra/goma/client> implements the same
protocol for remote execution as Bazel and (in theory at least) can
integrate well with `CMake` and `ninja` to build a project like LLVM (I am
actually playing with this these days).
4) While sandboxing and the declarative approach that Bazel is using is
nice, it isn't clear to me that Bazel provides the same ability that CMake
has to detect the environment and configure the build. The "regular" LLVM
build is likely easy to mimic with Bazel, but can you plumb all the knob
and make it work on every platform that LLVM support?


> I'm thinking of dumping the LLVM source-tree into my code-base and
> experiment with building LLVM via Bazel. Will pull requests be accepted for
> this? I won't mind contributing my changes back into the upstream.
>

If you want to get started an play with it, the TensorFlow project builds
LLVM with Bazel. They maintain their own BUILD file for LLVM
<https://github.com/tensorflow/tensorflow/blob/master/third_party/llvm/llvm.autogenerated.BUILD>
(it is probably not complete, but maybe a good way to get started).

Best,

-- 
Mehdi
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20190808/e3ee4437/attachment.html>


More information about the llvm-dev mailing list