This is an old revision of the document!
Versions of LLVM
There are many versions of llvm in the ports tree.
- It is painful for builders (especially the ones using qemu) to have so many versions.
- Some only exist to satisfy dependencies.
This page discusses the list of ports that we should try to update to reduce the dependencies.
Current versions in the tree
The usage column does not include ports that hardwire the version (except for the llvm35 entry). See HardcodedLLVMVersions for that list.
| port | usage | status | comments |
| llmv35 | lang/pure and dependents | obsolete | tracking bug for removal |
| llvm60 | fallback via USES=xyz for GCC-based archs | obsolete | defined in Uses/compiler.mk |
| llvm70 | USES=obj (mostly gnustep-derived ports) | obsolete | defined in Mk/Uses/objc.mk |
| llvm80 | tree-wide default | supported | defined in Mk/bsd.default-versions.mk |
| llvm90 | brand new | PR to test llvm90 as the new default in individual ports |
Dependency statistics
Processing INDEX-12 20190805 (and deleting self-references) produces:
13 /tmp/llvm3 0 /tmp/llvm4 0 /tmp/llvm5 31 /tmp/llvm6 127 /tmp/llvm7 250 /tmp/llvm8 0 /tmp/llvm9
Default version
For architectures that support llvm in base, the default version is determined by whatever is installed in base.
For other architectures, if a port sets USES=compiler, clang60 will be set if:
- COMPILER_ARGS:Mc++17-lang
- COMPILER_ARGS:Mc++14-lang
- COMPILER_ARGS:Mc++11-lang
- COMPILER_ARGS:Mc++0x
- COMPILER_ARGS:Mc11
See Uses/compiler.mk for the code.
Table of obsolescence (tier-1)
TODO add more 20190807
Table of obsolescence (tier-2)
These data are stale.
Here are the data from powerpc64 INDEX-13 built 20181214. As of this date, the base compiler is still gcc4.2.1.
| llvm35 | 15 | same as above |
| llvm40 | 5 | |
| llvm60 | 169 | |
| llvm70 | 13 |