Search code examples
bazel

Bazel Clang cross platform



I'm trying to get bazel to use clang as the compiler on both Windows and Linux. (Debian 10 if that matters)
On Windows I managed to get it working by adding a windows-clang platform and registering the toolchain as described here.
Is there a similarly easy way to get switch to using clang on Linux?


Solution

  • I've dug around a but and as far as I can tell, you have two (or three options):

    1. You can configure your won cc_toolchain. This may be arguably the "correct" solution.

    2. You can try to tweak cc_configure() from @bazel_tools//tools/cpp:cc_configure.bzl and use it in your WORKSPACE. But that is both challenging and not necessarily pretty.

    Neither of the two ways are likely to qualify as "easy". For that, the quickest would appear to be:

    1. Automagic toolchain resolution considers environmental variable CC (only, not CXX) and if set its value is used for toolchain configuration. Hence, for instance this would do:

      CC=/usr/bin/clang bazel build //:some_tgt
      

    I hope I haven't missed anything, but I have not spotted a way to choose compiler through platforms (without having your own toolchain definition in place) as of today.