summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2022-12-05 13:22:08 +0100
committerMichał Górny <mgorny@gentoo.org>2022-12-08 17:56:20 +0100
commit8599d81ad63fc46bf04061c99292f1814e022333 (patch)
tree48d38b8b1413eaae39ea85d48719addc4378f464 /eclass/llvm.eclass
parentdev-python/packaging: Bump to 22.0 (diff)
downloadgentoo-8599d81ad63fc46bf04061c99292f1814e022333.tar.gz
gentoo-8599d81ad63fc46bf04061c99292f1814e022333.tar.bz2
gentoo-8599d81ad63fc46bf04061c99292f1814e022333.zip
llvm.eclass: Set LLVM_SLOT in pkg_setup()
Set LLVM_SLOT in pkg_setup() to the selected LLVM slot, for inspection from the package. For example, it can be used to easily compare the version number. Split get_llvm_slot() out of get_llvm_prefix() to factor out the common code. Signed-off-by: Michał Górny <mgorny@gentoo.org>
Diffstat (limited to 'eclass/llvm.eclass')
-rw-r--r--eclass/llvm.eclass52
1 files changed, 35 insertions, 17 deletions
diff --git a/eclass/llvm.eclass b/eclass/llvm.eclass
index 16596ec2ea66..7657de4bc5a2 100644
--- a/eclass/llvm.eclass
+++ b/eclass/llvm.eclass
@@ -87,11 +87,11 @@ DEPEND="!!sys-devel/llvm:0"
# Correct values of LLVM slots, newest first.
declare -g -r _LLVM_KNOWN_SLOTS=( {16..8} )
-# @FUNCTION: get_llvm_prefix
+# @FUNCTION: get_llvm_slot
# @USAGE: [-b|-d] [<max_slot>]
# @DESCRIPTION:
# Find the newest LLVM install that is acceptable for the package,
-# and print an absolute path to it.
+# and print its major version number (i.e. slot).
#
# If -b is specified, the checks are performed relative to BROOT,
# and BROOT-path is returned. This is appropriate when your package
@@ -114,7 +114,7 @@ declare -g -r _LLVM_KNOWN_SLOTS=( {16..8} )
# is acceptable, false otherwise. If llvm_check_deps() is not defined,
# the function defaults to checking whether sys-devel/llvm:${LLVM_SLOT}
# is installed.
-get_llvm_prefix() {
+get_llvm_slot() {
debug-print-function ${FUNCNAME} "${@}"
local hv_switch=-d
@@ -126,23 +126,12 @@ get_llvm_prefix() {
shift
done
- local prefix=
- if [[ ${EAPI} != 6 ]]; then
- case ${hv_switch} in
- -b)
- prefix=${BROOT}
- ;;
- -d)
- prefix=${ESYSROOT}
- ;;
- esac
- else
+ if [[ ${EAPI} == 6 ]]; then
case ${hv_switch} in
-b)
die "${FUNCNAME} -b is not supported in EAPI ${EAPI}"
;;
-d)
- prefix=${EPREFIX}
hv_switch=
;;
esac
@@ -168,7 +157,7 @@ get_llvm_prefix() {
has_version ${hv_switch} "sys-devel/llvm:${slot}" || continue
fi
- echo "${prefix}/usr/lib/llvm/${slot}"
+ echo "${slot}"
return
done
@@ -180,6 +169,31 @@ get_llvm_prefix() {
die "No LLVM slot${1:+ <= ${1}} satisfying the package's dependencies found installed!"
}
+# @FUNCTION: get_llvm_prefix
+# @USAGE: [-b|-d] [<max_slot>]
+# @DESCRIPTION:
+# Find the newest LLVM install that is acceptable for the package,
+# and print an absolute path to it.
+#
+# The options and behavior is the same as for get_llvm_slot.
+get_llvm_prefix() {
+ debug-print-function ${FUNCNAME} "${@}"
+
+ local prefix=${EPREFIX}
+ if [[ ${EAPI} != 6 ]]; then
+ case ${1} in
+ -b)
+ prefix=${BROOT}
+ ;;
+ *)
+ prefix=${ESYSROOT}
+ ;;
+ esac
+ fi
+
+ echo "${prefix}/usr/lib/llvm/$(get_llvm_slot "${@}")"
+}
+
# @FUNCTION: llvm_fix_clang_version
# @USAGE: <variable-name>...
# @DESCRIPTION:
@@ -256,12 +270,16 @@ llvm_pkg_setup() {
debug-print-function ${FUNCNAME} "${@}"
if [[ ${MERGE_TYPE} != binary ]]; then
+ LLVM_SLOT=$(get_llvm_slot "${LLVM_MAX_SLOT}")
+
llvm_fix_clang_version CC CPP CXX
# keep in sync with profiles/features/llvm/make.defaults!
llvm_fix_tool_path ADDR2LINE AR AS LD NM OBJCOPY OBJDUMP RANLIB
llvm_fix_tool_path READELF STRINGS STRIP
- local llvm_path=$(get_llvm_prefix "${LLVM_MAX_SLOT}")/bin
+ local prefix=${EPREFIX}
+ [[ ${EAPI} != 6 ]] && prefix=${ESYSROOT}
+ local llvm_path=${prefix}/usr/lib/llvm/${LLVM_SLOT}/bin
local IFS=:
local split_path=( ${PATH} )
local new_path=()