summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-11-30 12:49:09 +0000
committerSam James <sam@gentoo.org>2024-11-30 13:09:02 +0000
commit52a39b64a029c40995c6490a307f0c51e9897f2b (patch)
treea7edd725685b222a4425da847b5bc4fb3590962a /eclass
parentdev-python/peewee: Stabilize 3.17.8 amd64, #945444 (diff)
downloadgentoo-52a39b64a029c40995c6490a307f0c51e9897f2b.tar.gz
gentoo-52a39b64a029c40995c6490a307f0c51e9897f2b.tar.bz2
gentoo-52a39b64a029c40995c6490a307f0c51e9897f2b.zip
toolchain.eclass: move nvptx files to accel/ subdir
This is what Fedora does and it seems to have fixed the issue I was having with needing to manually move libgomp.{a,spec} and then after that, getting undefined references to gomp_nvptx_main (which I assume is because the plugin wasn't being loaded). Bug: https://bugs.gentoo.org/945296 Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/toolchain.eclass18
1 files changed, 18 insertions, 0 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index eac300438da5..d41d7c3737a1 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -2698,6 +2698,24 @@ gcc_movelibs() {
fix_libtool_libdir_paths "${LIBPATH}/${MULTIDIR}"
done
+ # Without this, we end up either unable to find the libgomp spec/archive, or
+ # we underlink and can't find gomp_nvptx_main (presumably because we can't find the plugin)
+ # https://src.fedoraproject.org/rpms/gcc/blob/02c34dfa3627ef05d676d30e152a66e77b58529b/f/gcc.spec#_1445
+ if [[ ${CTARGET} == nvptx* ]] && has_version ${CATEGORY}/${PN} ; then
+ rm -rf "${ED}"/usr/libexec/gcc/nvptx-none/${GCCMAJOR}/install-tools
+ rm -rf "${ED}"/usr/libexec/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951}
+ rm -rf "${ED}"/usr/lib/gcc/nvptx-none/${GCCMAJOR}/{install-tools,plugin}
+ rm -rf "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/{install-tools,plugin,include-fixed}
+ mv "${ED}"/usr/nvptx-none/lib/*.{a,spec} "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/
+ mv "${ED}"/usr/nvptx-none/lib/mgomp/*.{a,spec} "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mgomp/
+ mv "${ED}"/usr/nvptx-none/lib/mptx-3.1/*.{a,spec} "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mptx-3.1/
+ mv "${ED}"/usr/nvptx-none/lib/mgomp/mptx-3.1/*.{a,spec} "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mgomp/mptx-3.1/
+ mv "${ED}"/usr/lib/gcc/nvptx-none/${GCCMAJOR}/*.a "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/ || die
+ mv "${ED}"/usr/lib/gcc/nvptx-none/${GCCMAJOR}/mgomp/*.a "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mgomp/ || die
+ mv "${ED}"/usr/lib/gcc/nvptx-none/${GCCMAJOR}/mptx-3.1/*.a "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mptx-3.1/ || die
+ mv "${ED}"/usr/lib/gcc/nvptx-none/${GCCMAJOR}/mgomp/mptx-3.1/*.a "${ED}"/usr/lib/gcc/${CHOST}/${GCCMAJOR}/accel/nvptx-none/mgomp/mptx-3.1/ || die
+ fi
+
# We remove directories separately to avoid this case:
# mv SRC/lib/../lib/*.o DEST
# rmdir SRC/lib/../lib/