Problems with USE_SYSTEM_LLVM

I was trying to build julia on master for Fedora x86_64 with USE_SYSTEM_LLVM=1 toggled in Make.inc (nothing else modified). When I use make, the outputs stop until the line below and don’t progress for some time so I ctrl-ced.

PERL base/version_git.jl.phony
^Cmake[1]: *** [Makefile:258: /home/wheehee/julia/usr/lib/julia/libLLVM.so] Interrupt
make: *** [/home/wheehee/julia/Makefile:67: julia-base] Interrupt

/home/wheehee/julia/usr/lib/julia/libLLVM.so doesn’t exist and I’m not sure why make is trying to find it. Without touching this option, the build succeeds. What would I need to change for the build to succeed with this option?

Just don’t use the system LLVM version. It will never work well with Julia. Why do you want to use it in the first place?

Note that even if the build succeeds, many Julia packages probably won’t work well, and they will refuse to accommodate USE_SYSTEM_LLVM=1 should you find and report errors.

I say this from the side of a package developer not interested in supporting it (although I’d gladly accept PRs fixing problems).

I say this to discourage you, unless it is something you really want and are willing to put in the work for.

If all you want is a newer LLVM, checkout this PR.

2 Likes

To add a bit to this, LLVM really cannot be viewed as “just some library” that Julia happens to use—it’s a deep and integral part of Julia’s implementation. The usage is far too deep and the LLVM API changes constantly. It’s rare for an unpatched LLVM release to not be somewhat broken with Julia. The only reason clang doesn’t have the same issue is because LLVM doesn’t get released until clang works.

5 Likes

Ah, ok, I guess I’m a little out of my depth here. For context, I was just playing around with make/Make.inc a little to see how it works and wondered if I misunderstood some of the build instructions provided. Thanks!