commit: 52a39b64a029c40995c6490a307f0c51e9897f2b
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sat Nov 30 12:49:09 2024 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sat Nov 30 13:09:02 2024 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=52a39b64
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 <AT> gentoo.org>
eclass/toolchain.eclass | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
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/