eclass/llvm: Sync with Gentoo

It's from Gentoo commit 8599d81ad63fc46bf04061c99292f1814e022333.
This commit is contained in:
Flatcar Buildbot 2022-12-12 07:14:38 +00:00
parent f598342f7f
commit d72742215e

View File

@ -87,11 +87,11 @@ DEPEND="!!sys-devel/llvm:0"
# Correct values of LLVM slots, newest first. # Correct values of LLVM slots, newest first.
declare -g -r _LLVM_KNOWN_SLOTS=( {16..8} ) declare -g -r _LLVM_KNOWN_SLOTS=( {16..8} )
# @FUNCTION: get_llvm_prefix # @FUNCTION: get_llvm_slot
# @USAGE: [-b|-d] [<max_slot>] # @USAGE: [-b|-d] [<max_slot>]
# @DESCRIPTION: # @DESCRIPTION:
# Find the newest LLVM install that is acceptable for the package, # 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, # If -b is specified, the checks are performed relative to BROOT,
# and BROOT-path is returned. This is appropriate when your package # 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, # is acceptable, false otherwise. If llvm_check_deps() is not defined,
# the function defaults to checking whether sys-devel/llvm:${LLVM_SLOT} # the function defaults to checking whether sys-devel/llvm:${LLVM_SLOT}
# is installed. # is installed.
get_llvm_prefix() { get_llvm_slot() {
debug-print-function ${FUNCNAME} "${@}" debug-print-function ${FUNCNAME} "${@}"
local hv_switch=-d local hv_switch=-d
@ -126,23 +126,12 @@ get_llvm_prefix() {
shift shift
done done
local prefix= if [[ ${EAPI} == 6 ]]; then
if [[ ${EAPI} != 6 ]]; then
case ${hv_switch} in
-b)
prefix=${BROOT}
;;
-d)
prefix=${ESYSROOT}
;;
esac
else
case ${hv_switch} in case ${hv_switch} in
-b) -b)
die "${FUNCNAME} -b is not supported in EAPI ${EAPI}" die "${FUNCNAME} -b is not supported in EAPI ${EAPI}"
;; ;;
-d) -d)
prefix=${EPREFIX}
hv_switch= hv_switch=
;; ;;
esac esac
@ -168,7 +157,7 @@ get_llvm_prefix() {
has_version ${hv_switch} "sys-devel/llvm:${slot}" || continue has_version ${hv_switch} "sys-devel/llvm:${slot}" || continue
fi fi
echo "${prefix}/usr/lib/llvm/${slot}" echo "${slot}"
return return
done done
@ -180,6 +169,31 @@ get_llvm_prefix() {
die "No LLVM slot${1:+ <= ${1}} satisfying the package's dependencies found installed!" 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 # @FUNCTION: llvm_fix_clang_version
# @USAGE: <variable-name>... # @USAGE: <variable-name>...
# @DESCRIPTION: # @DESCRIPTION:
@ -256,12 +270,16 @@ llvm_pkg_setup() {
debug-print-function ${FUNCNAME} "${@}" debug-print-function ${FUNCNAME} "${@}"
if [[ ${MERGE_TYPE} != binary ]]; then if [[ ${MERGE_TYPE} != binary ]]; then
LLVM_SLOT=$(get_llvm_slot "${LLVM_MAX_SLOT}")
llvm_fix_clang_version CC CPP CXX llvm_fix_clang_version CC CPP CXX
# keep in sync with profiles/features/llvm/make.defaults! # 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 ADDR2LINE AR AS LD NM OBJCOPY OBJDUMP RANLIB
llvm_fix_tool_path READELF STRINGS STRIP 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 IFS=:
local split_path=( ${PATH} ) local split_path=( ${PATH} )
local new_path=() local new_path=()