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/

Reply via email to