Certain ports hardcode which LLVM version they want. There are several cases: two common cases, and the uncommon cases.
these data are almost certainly incomplete.
By default, the Makevar LLVM_DEFAULT is globally defined by the ports infrastructure via Mk/bsd.default-versions.mk. Therefore, it should be under control of the user. MarkLinimon believes that this global Makevar should not be overridden in port Makefiles.
Some ports use the LLVM_DEFAULT Makevar, but some use their own, or, worse, hardcode a version number.
This is a common case – but see ObsoleteLLVMVersions for the maintenance hassles it causes.
In general these are symbolic definitions via LLVM_VER or similar.
Example:
LLVM_VER= 90
BUILD_DEPENDS+= clang${LLVM_VER}:devel/llvm${LLVM_VER}
We should standardize on a variable name. In use: LLVM_VER LLVM_VERSION LLVMVER VBOX_LLVM_VER.
| portname | hardcoding | maintainer |
| devel/flang | 70 | jmd@FreeBSD.org |
| devel/flang-clang | 70 | jmd@FreeBSD.org |
| lang/ponyc | 70 | greg@unrelenting.technology |
| math/libpgmath | 70 | jmd@FreeBSD.org |
| benchmarks/libcelero | 80 | yuri@FreeBSD.org |
| devel/qtcreator | 80 | kde@FreeBSD.org |
| devel/creduce | 80 | swills@FreeBSD.org |
| devel/oclgrind | 80 | jmd@FreeBSD.org |
| devel/f18 | 80 | jmd@FreeBSD.org |
| devel/include-what-you-use | 80 | koobs@FreeBSD.org |
| misc/opennn | 80 | yuri@FreeBSD.org |
| security/afl | 80 | ports@FreeBSD.org |
| devel/youcompleteme | 90 | ultima@FreeBSD.org |
| graphics/blender | 90 | FreeBSD@Shaneware.biz |
| graphics/openshadinglanguage | 90 | FreeBSD@Shaneware.biz |
| devel/cpp2py | 10 | yuri@FreeBSD.org |
| lang/crystal | 10 | greg@unrelenting.technology |
This is a common case – but should be folded into the above by factoring out the number into one definition as above.
Suboptimal:
BUILD_DEPENDS+= clang90:devel/llvm90
Preferred (as above):
LLVM_VER= 90
BUILD_DEPENDS+= clang${LLVM_VER}:devel/llvm${LLVM_VER}
| portname | hardcoding | PR |
(these are believed to be fixed as of 20191204)
Some ports hardcode which version they want by redefining the CC and/or CPP and/or CXX Makevars. Please see HardcodedCCVersions.
In PR 229626 MarkLinimon claims that this is a bad implementation, and that the values instead should be passed via environment variables. However, that PR as yet has not received any attention.
MarkLinimon believes that this global Makevar should not be overridden in port Makefiles (see above).
Preferred usage:
.if <conditions>
LLVM_VER= 90
.else
LLVM_VER ${LLVM_DEFAULT}
.endif
BUILD_DEPENDS+= clang${LLVM_VER}:devel/llvm${LLVM_VER}
The following list has some overlap with the above.
| portname | redefinition | maintainer |
| devel/oclgrind | 80 | jmd@FreeBSD.org |
| security/afl | 80 | ports@FreeBSD.org |
| graphics/mesa-dri/Makefile.common | 10 | x11@FreeBSD.org |
| lang/pocl | ${MESA_LLVM_VER:U11} | ohartmann@walstatt.org |
TODO document
textproc/castxml