Why does compiling ROOT causes compiling LLVM on default?

When compiling ROOT from source I noticed that most of the compile time is spend for building LLVM. Since I have my own compiled version of LLVM (from source; including clang) I was wondering whether this is necessary? Is it possible to point ROOT to my local compiled version of LLVM or will this disable certain ROOT features? (what features do I have to activate when compiling LLVM? What about Cling?) I guess this is related to setting the ‘builtin_llvm’ flag so I suppose there are reasons why this was set ‘ON’ on default?

If I can use my local LLVM 6: is it safe to activate ROOT’s cxx17 flag?

ROOT Version: Not Provided
Platform: Not Provided
Compiler: Not Provided


About LLVM, ROOT supports only LLVM 5.0. There are few options how you can use external LLVM, either installing it from OS package manager (for example for Ubuntu) or building by yourself (if you build it by yourself, then just add in your $PATH a location where llvm-config is and add -Dbuiltin_llvm=OFF).

About clang, you need have special ROOT patched version of clang from http://root.cern.ch/git/clang.git with special set of flags.

Ok, thanks a lot for your help. I tried this on a Ubuntu test instance and installed clang5.0 and symlinked the corresponding llvm-config. Unfortunately, the compilation time does not decrease with -Dbuiltin_llvm=OFF but this is because ROOT still builds its own clang, right? So this is nothing that I can speed up and my idea of using my custom LLVM compilation is more or less pointless …

ROOT needs a patched clang for the C++ interpreter to work. Even if you build with an external LLVM, unless you have a properly patched clang, you’ll have to build clang as part of ROOT for it to work.

ok. Thank you for the clarification.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.