Openembedded Core Discussions
 help / color / mirror / Atom feed
* [PATCH v3 0/1] Fix glibc fortran header conflict for arm
@ 2024-06-25  2:02 kai.kang
  2024-06-25  2:02 ` [PATCH v3 1/1] glibc: fix fortran header file " kai.kang
  0 siblings, 1 reply; 2+ messages in thread
From: kai.kang @ 2024-06-25  2:02 UTC (permalink / raw)
  To: openembedded-core

From: Kai Kang <kai.kang@windriver.com>

Tested for qemuarm64 with multilib enabled:

1. set machine and enable multilib

	require conf/multilib.conf
	MULTILIBS = "multilib:lib32"
	MACHINE = "qemuarm64"
	DEFAULTTUNE:virtclass-multilib-lib32 = "armv7vethf-neon"

2. enable fortran and install to image

	FORTRAN:forcevariable = ",fortran"
	IMAGE_INSTALL:append = " gfortran lib32-gfortran"

3. build image and boot, run gfortran with option '-v' to verify
   math-vector-fortran.h has been pre-included

   for aarch64:

	/usr/libexec/gcc/aarch64-poky-linux/14.1.0/f951 hello.f95 -quiet
	-dumpdir a- -dumpbase hello.f95 -dumpbase-ext .f95 -mlittle-endian
	-mabi=lp64 -version -fintrinsic-modules-path /usr/lib/gcc/aarch64-poky-linux/14.1.0/finclude
	-fpre-include=/usr/lib/gcc/aarch64-poky-linux/14.1.0/finclude/math-vector-fortran.h
	-o /tmp/ccuPIzQY.s

   for arm:

	/usr/libexec/gcc/arm-pokymllib32-linux-gnueabi/14.1.0/f951 hello.f95
	-quiet -dumpdir a- -dumpbase hello.f95 -dumpbase-ext .f95
	-mfloat-abi=hard -mtls-dialect=gnu -marm -mlibarch=armv7ve+fp
	-march=armv7ve+fp -version -fintrinsic-modules-path /usr/lib/gcc/arm-pokymllib32-linux-gnueabi/14.1.0/finclude
	-fpre-include=/usr/lib/gcc/arm-pokymllib32-linux-gnueabi/14.1.0/finclude/math-vector-fortran.h
	-o /tmp/cc5pikK8.s


Kai Kang (1):
  glibc: fix fortran header file conflict for arm

 meta/recipes-core/glibc/glibc-package.inc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

--
2.34.1



^ permalink raw reply	[flat|nested] 2+ messages in thread

* [PATCH v3 1/1] glibc: fix fortran header file conflict for arm
  2024-06-25  2:02 [PATCH v3 0/1] Fix glibc fortran header conflict for arm kai.kang
@ 2024-06-25  2:02 ` kai.kang
  0 siblings, 0 replies; 2+ messages in thread
From: kai.kang @ 2024-06-25  2:02 UTC (permalink / raw)
  To: openembedded-core

From: Kai Kang <kai.kang@windriver.com>

There is a file conflict for arm when multilib enabled:

| Error: Transaction test error:
|   file /usr/include/finclude/math-vector-fortran.h conflicts between attempted installs of
    lib32-libc6-dev-2.39+git0+312e159626-r0.armv7at2hf_neon and libc6-dev-2.39+git0+312e159626-r0.cortexa72

Install math-vector-fortran.h to the gfortran default search directory
which is arch specific to avoid the conflict.

Signed-off-by: Kai Kang <kai.kang@windriver.com>
---
 meta/recipes-core/glibc/glibc-package.inc | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/glibc/glibc-package.inc b/meta/recipes-core/glibc/glibc-package.inc
index 0c5e3b4c3d..3352f3e2f5 100644
--- a/meta/recipes-core/glibc/glibc-package.inc
+++ b/meta/recipes-core/glibc/glibc-package.inc
@@ -39,7 +39,7 @@ FILES:sln = "${base_sbindir}/sln"
 FILES:${PN}-pic = "${libdir}/*_pic.a ${libdir}/*_pic.map ${libdir}/libc_pic/*.o"
 FILES:libsotruss = "${libdir}/audit/sotruss-lib.so"
 FILES_SOLIBSDEV = "${libdir}/lib*${SOLIBSDEV}"
-FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal"
+FILES:${PN}-dev += "${libdir}/libpthread.a ${libdir}/libdl.a ${libdir}/libutil.a ${libdir}/libanl.a ${libdir}/*_nonshared.a ${base_libdir}/*_nonshared.a ${base_libdir}/*.o ${datadir}/aclocal ${libdir}/gcc/${TARGET_SYS}/*/finclude"
 RDEPENDS:${PN}-dev = "linux-libc-headers-dev"
 FILES:${PN}-staticdev += "${libdir}/*.a ${base_libdir}/*.a"
 FILES:nscd = "${sbindir}/nscd* ${sysconfdir}/init.d/nscd ${systemd_system_unitdir}/nscd* ${nonarch_libdir}/tmpfiles.d/nscd.conf \
@@ -169,6 +169,12 @@ do_install_armmultilib () {
 	oe_multilib_header sys/elf.h sys/procfs.h sys/ptrace.h sys/ucontext.h sys/user.h
 }
 
+do_install_armmultilib:append:class-target() {
+    gcc_version=$($CC -dumpversion)
+    mkdir -p ${D}${libdir}/gcc/${TARGET_SYS}/${gcc_version}/finclude
+    mv ${D}${includedir}/finclude/math-vector-fortran.h ${D}${libdir}/gcc/${TARGET_SYS}/${gcc_version}/finclude/
+    rmdir --ignore-fail-on-non-empty ${D}${includedir}/finclude
+}
 
 LOCALESTASH = "${WORKDIR}/stashed-locale"
 bashscripts = "mtrace sotruss xtrace"
-- 
2.34.1



^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-06-25  2:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-25  2:02 [PATCH v3 0/1] Fix glibc fortran header conflict for arm kai.kang
2024-06-25  2:02 ` [PATCH v3 1/1] glibc: fix fortran header file " kai.kang

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox