diff options
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/Manifest.gz | bin | 40358 -> 40341 bytes | |||
-rw-r--r-- | eclass/llvm.org.eclass | 12 | ||||
-rw-r--r-- | eclass/toolchain-funcs.eclass | 142 |
3 files changed, 9 insertions, 145 deletions
diff --git a/eclass/Manifest.gz b/eclass/Manifest.gz Binary files differindex 18c3e5c0aefc..68b3459306f4 100644 --- a/eclass/Manifest.gz +++ b/eclass/Manifest.gz 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 |