-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
framework: Add new USES=llvm to more easily depend on one an llvm port
USES=llvm supports two kinds of arguments: * mode <none>: defaults to build build: add a BUILD_DEPENDS on chosen llvm-port run: add a RUN_DEPENDS on chosen llvm-port lib: add a LIB_DEPENDS on chosen llvm-port * version <none>: defaults to ${LLVM_DEFAULT} number: use explicitly the specified version min=number: use specified min if ${LLVM_DEFAULT} is lower max=number: use specified max if ${LLVM_DEFAULT} is higher An example usage might be: USES= llvm or USES= llvm:13,build or USES= llvm:min=14,lib The following variables are exposed to be used in the ports tree at the moment: * LLVM_VERSION version chosen from the arguments to llvm.mk * LLVM_PORT chosen llvm port * LLVM_CONFIG llvm-config of the chosen port * LLVM_LIBLLVM libLLVM.so of the chosen port * LLVM_PREFIX installation prefix of the chosen port Reviewed by: manu, bapt Differential Revision: https://reviews.freebsd.org/D37728
- Loading branch information
Showing
2 changed files
with
131 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
# Provides support to depend on LLVM | ||
# | ||
# It chooses the llvm port to be used based on the following constraint: | ||
# 1) no constraints given => ${LLVM_DEFAULT} | ||
# 2) exact constraint given => ${exact} | ||
# 2) max constraint given && ${max} < ${LLVM_DEFAULT} => ${max} | ||
# 3) min constraint given && ${LLVM_DEFAULT} < ${LLVM_DEFAULT} => ${LLVM_DEFAULT} | ||
|
||
# Usage: | ||
# USES= llvm - default version chosen | ||
# USES= llvm:15 - exact constraint | ||
# USES= llvm:min=9 - min constraint: max(min,default) | ||
# USES= llvm:max=10 - max constraint: min(max,default) | ||
# USES= llvm:min=10,max=11 - all constraint: max(min(max,default),default) | ||
|
||
.if !defined(_INCLUDE_USES_LLVM_MK) | ||
_INCLUDE_USES_LLVM_MK= YES | ||
|
||
_LLVM_MK_VALID_VERSIONS= 7 8 9 10 11 12 13 14 15 | ||
_LLVM_MK_VALID_CONSTRAINTS= min max | ||
_LLVM_MK_VALID_MODES= build run lib | ||
|
||
# === parse mode arguments === | ||
_LLVM_MK_MODES= # empty | ||
. for _mode in ${_LLVM_MK_VALID_MODES} | ||
. if ${llvm_ARGS:M${_mode}} | ||
_LLVM_MK_MODES+= ${_mode} | ||
. endif | ||
. endfor | ||
. if empty(_LLVM_MK_MODES) | ||
_LLVM_MK_MODES= build | ||
. endif | ||
|
||
# === parse version arguments === | ||
_LLVM_MK_VERSION= # empty | ||
. for _ver in ${_LLVM_MK_VALID_VERSIONS} | ||
. if ${llvm_ARGS:M${_ver}} | ||
. if !empty(_LLVM_MK_VERSION) | ||
BROKEN= USES=llvm:${llvm_ARGS} contains multiple version definitions | ||
. else | ||
_LLVM_MK_VERSION= ${_ver} | ||
. endif | ||
. endif | ||
. endfor | ||
. if empty(_LLVM_MK_VERSION) | ||
_LLVM_MK_VERSION= ${LLVM_DEFAULT} | ||
. endif | ||
|
||
# === handle constraints === | ||
. for _constraint in ${_LLVM_MK_VALID_CONSTRAINTS} | ||
_version= ${llvm_ARGS:M${_constraint}=[0-9]*:S/${_constraint}=//} | ||
. if !empty(_version) | ||
_LLVM_MK_CONSTRAINT_${_constraint}= ${_version} | ||
. endif | ||
. endfor | ||
|
||
. if !empty(_LLVM_MK_CONSTRAINT_min) | ||
. if ${_LLVM_MK_CONSTRAINT_min} > ${_LLVM_MK_VERSION} | ||
_LLVM_MK_VERSION= ${_LLVM_MK_CONSTRAINT_min} | ||
. endif | ||
. endif | ||
|
||
. if !empty(_LLVM_MK_CONSTRAINT_max) | ||
. if ${_LLVM_MK_CONSTRAINT_max} < ${_LLVM_MK_VERSION} | ||
_LLVM_MK_VERSION= ${_LLVM_MK_CONSTRAINT_max} | ||
. endif | ||
. endif | ||
|
||
# === define helpers for the dependencies === | ||
. for _ver in ${_LLVM_MK_VALID_VERSIONS:N1[0-9]} | ||
_LLVM_MK_SUFFIX_${_ver}= ${_ver}0 | ||
. endfor | ||
|
||
. for _ver in ${_LLVM_MK_VALID_VERSIONS} | ||
_LLVM_MK_SUFFIX_${_ver}?= ${_ver} | ||
. endfor | ||
|
||
# === define variables to depend on and export === | ||
_LLVM_MK_PORT= devel/llvm${_LLVM_MK_SUFFIX_${_LLVM_MK_VERSION}} | ||
_LLVM_MK_LIBLLVM= libLLVM-${_LLVM_MK_VERSION}.so | ||
_LLVM_MK_PATH= llvm-config${_LLVM_MK_SUFFIX_${_LLVM_MK_VERSION}} | ||
_LLVM_MK_PREFIX= ${PREFIX}/llvm${_LLVM_MK_SUFFIX_${_LLVM_MK_VERSION}} | ||
|
||
# == add actual dependencies === | ||
_LLVM_MK_PATH_lib= ${_LLVM_MK_LIBLLVM} | ||
. for _mode in ${_LLVM_MK_MODES} | ||
_LLVM_MK_PATH_${_mode}?= ${_LLVM_MK_PATH} | ||
${_mode:tu}_DEPENDS+= ${_LLVM_MK_PATH_${_mode}}:${_LLVM_MK_PORT} | ||
. endfor | ||
|
||
# == export config === | ||
LLVM_PORT= ${_LLVM_MK_PORT} | ||
LLVM_CONFIG= ${_LLVM_MK_PATH} | ||
LLVM_LIBLLVM= ${_LLVM_MK_LIBLLVM} | ||
LLVM_VERSION= ${_LLVM_MK_VERSION} | ||
LLVM_PREFIX= ${_LLVM_MK_PREFIX} | ||
|
||
.endif |