summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
Diffstat (limited to 'eclass')
-rw-r--r--eclass/Manifest.gzbin40358 -> 40341 bytes
-rw-r--r--eclass/llvm.org.eclass12
-rw-r--r--eclass/toolchain-funcs.eclass142
3 files changed, 9 insertions, 145 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz
index 18c3e5c0aefc..68b3459306f4 100644
--- a/eclass/Manifest.gz
+++ b/eclass/Manifest.gz
Binary files differ
diff --git a/eclass/llvm.org.eclass b/eclass/llvm.org.eclass
index 16802e37cd66..a1e22f3203f6 100644
--- a/eclass/llvm.org.eclass
+++ b/eclass/llvm.org.eclass
@@ -72,18 +72,12 @@ if [[ -z ${_LLVM_SOURCE_TYPE+1} ]]; then
_LLVM_SOURCE_TYPE=snapshot
case ${PV} in
+ 21.0.0_pre20250412)
+ EGIT_COMMIT=fa4ac19f0fc937e30fd7711dad98d0fcdb34f8ba
+ ;;
21.0.0_pre20250405)
EGIT_COMMIT=f3e6473df46fd920e09e06e57a5549eb8e3a8bd3
;;
- 21.0.0_pre20250329)
- EGIT_COMMIT=21eeca3db0341fef4ab4a6464ffe38b2eba5810c
- ;;
- 21.0.0_pre20250322)
- EGIT_COMMIT=1d133420dc512487e2be0e9d86755f2a7c3497a7
- ;;
- 21.0.0_pre20250317)
- EGIT_COMMIT=1c3a9a853ce68c3c539e7cab21380b9d8b18f426
- ;;
*)
die "Unknown snapshot: ${PV}"
;;
diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass
index 754d23f91c06..baf032bbd4ec 100644
--- a/eclass/toolchain-funcs.eclass
+++ b/eclass/toolchain-funcs.eclass
@@ -21,8 +21,6 @@ case ${EAPI} in
*) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
esac
-inherit multilib
-
# tc-getPROG <VAR [search vars]> <default> [tuple]
_tc-getPROG() {
local tuple=$1
@@ -1147,139 +1145,6 @@ tc-enables-ssp-all() {
tc-cpp-is-true "defined(__SSP_ALL__)" ${CPPFLAGS} ${CFLAGS} ${CXXFLAGS}
}
-
-# @FUNCTION: gen_usr_ldscript
-# @USAGE: [-a] <list of libs to create linker scripts for>
-# @DESCRIPTION:
-# This function is deprecated. Use the version from
-# usr-ldscript.eclass instead.
-gen_usr_ldscript() {
- ewarn "${FUNCNAME}: Please migrate to usr-ldscript.eclass"
-
- local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname)
-
- tc-is-static-only && return
- use prefix && return
-
- # We only care about stuffing / for the native ABI, bug #479448
- if [[ $(type -t multilib_is_native_abi) == "function" ]] ; then
- multilib_is_native_abi || return 0
- fi
-
- # Eventually we'd like to get rid of this func completely, bug #417451
- case ${CTARGET:-${CHOST}} in
- *-darwin*) ;;
- *-android*) return 0 ;;
- *linux*) use prefix && return 0 ;;
- *) return 0 ;;
- esac
-
- # Just make sure it exists
- dodir /usr/${libdir}
-
- if [[ $1 == "-a" ]] ; then
- auto=true
- shift
- dodir /${libdir}
- fi
-
- # OUTPUT_FORMAT gives hints to the linker as to what binary format
- # is referenced ... makes multilib saner
- local flags=( ${CFLAGS} ${LDFLAGS} -Wl,--verbose )
- if $(tc-getLD) --version | grep -q 'GNU gold' ; then
- # If they're using gold, manually invoke the old bfd, bug #487696
- local d="${T}/bfd-linker"
- mkdir -p "${d}"
- ln -sf $(type -P ${CHOST}-ld.bfd) "${d}"/ld
- flags+=( -B"${d}" )
- fi
- output_format=$($(tc-getCC) "${flags[@]}" 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
- [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
-
- for lib in "$@" ; do
- local tlib
- if ${auto} ; then
- lib="lib${lib}${suffix}"
- else
- # Ensure /lib/${lib} exists to avoid dangling scripts/symlinks.
- # This especially is for AIX where $(get_libname) can return ".a",
- # so /lib/${lib} might be moved to /usr/lib/${lib} (by accident).
- [[ -r ${ED}/${libdir}/${lib} ]] || continue
- #TODO: better die here?
- fi
-
- case ${CTARGET:-${CHOST}} in
- *-darwin*)
- if ${auto} ; then
- tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib})
- else
- tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib})
- fi
- [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}"
- tlib=${tlib##*/}
-
- if ${auto} ; then
- mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die
- # some install_names are funky: they encode a version
- if [[ ${tlib} != ${lib%${suffix}}.*${suffix#.} ]] ; then
- mv "${ED}"/usr/${libdir}/${tlib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die
- fi
- rm -f "${ED}"/${libdir}/${lib}
- fi
-
- # Mach-O files have an id, which is like a soname, it tells how
- # another object linking against this lib should reference it.
- # Since we moved the lib from usr/lib into lib this reference is
- # wrong. Hence, we update it here. We don't configure with
- # libdir=/lib because that messes up libtool files.
- # Make sure we don't lose the specific version, so just modify the
- # existing install_name
- if [[ ! -w "${ED}/${libdir}/${tlib}" ]] ; then
- chmod u+w "${ED}${libdir}/${tlib}" # needed to write to it
- local nowrite=yes
- fi
- install_name_tool \
- -id "${EPREFIX}"/${libdir}/${tlib} \
- "${ED}"/${libdir}/${tlib} || die "install_name_tool failed"
- [[ -n ${nowrite} ]] && chmod u-w "${ED}${libdir}/${tlib}"
- # Now as we don't use GNU binutils and our linker doesn't
- # understand linker scripts, just create a symlink.
- pushd "${ED}/usr/${libdir}" > /dev/null
- ln -snf "../../${libdir}/${tlib}" "${lib}"
- popd > /dev/null
- ;;
- *)
- if ${auto} ; then
- tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib})
- [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}"
- mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die
- # some SONAMEs are funky: they encode a version before the .so
- if [[ ${tlib} != ${lib}* ]] ; then
- mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die
- fi
- rm -f "${ED}"/${libdir}/${lib}
- else
- tlib=${lib}
- fi
- cat > "${ED}/usr/${libdir}/${lib}" <<-END_LDSCRIPT
- /* GNU ld script
- Since Gentoo has critical dynamic libraries in /lib, and the static versions
- in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
- run into linking problems. This "fake" dynamic lib is a linker script that
- redirects the linker to the real lib. And yes, this works in the cross-
- compiling scenario as the sysroot-ed linker will prepend the real path.
-
- See bug https://bugs.gentoo.org/4411 for more info.
- */
- ${output_format}
- GROUP ( ${EPREFIX}/${libdir}/${tlib} )
- END_LDSCRIPT
- ;;
- esac
- fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}"
- done
-}
-
# @FUNCTION: tc-get-cxx-stdlib
# @DESCRIPTION:
# Attempt to identify the C++ standard library used by the compiler.
@@ -1291,7 +1156,12 @@ gen_usr_ldscript() {
#
# If the library is not recognized, the function returns 1.
tc-get-cxx-stdlib() {
- local code='#include <ciso646>
+ local code='
+#if __cplusplus >= 202002L
+ #include <version>
+#else
+ #include <ciso646>
+#endif
#if defined(_LIBCPP_VERSION)
HAVE_LIBCXX