[OE-core] [PATCH V2] gcc-runtime: Move content from gcclibdir into libdir

Khem Raj raj.khem at gmail.com
Fri Aug 16 15:08:18 UTC 2019


On Fri, Aug 16, 2019 at 5:00 AM Martin Jansa <martin.jansa at gmail.com> wrote:
>
> Hi,
>
> I have an app which includes omp.h from gomp, it used to find it without adding any -I for that (with just -fopenmp to enable openmp).
>
> Now the header file is included in RSS:
> lib32-recipe-sysroot/usr/lib/arm-oemllib32-linux-gnueabi/9.2.0/include/omp.h
> but no longer found in default search dirs.
>
> Is this expected or should gcc be adjusted to search for it automatically?
>

It should have adjusted automatically but these headers are searhed
relative to its own install and not sysroot reelative
so it might have to be addressed. Does it work with normal (
non-multilib ) case ?

> Looking at the default search paths I see:
>
> ignoring nonexistent directory "BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/../../../../../arm-oemllib32-linux-gnueabi/include"
> ignoring nonexistent directory "/not/exist/usr/include/c++/9.2.0"
> ignoring nonexistent directory "/not/exist/usr/include/c++/9.2.0/arm-oemllib32-linux-gnueabi"
> ignoring nonexistent directory "/not/exist/usr/include/c++/9.2.0/backward"
> ignoring duplicate directory "BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/../../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/include"
> ignoring nonexistent directory "/not/exist/usr/lib/gcc/arm-oemllib32-linux-gnueabi/9.2.0/include"
> ignoring nonexistent directory "/not/exist/usr/local/include"
> ignoring duplicate directory "BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/../../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/include-fixed"
> ignoring nonexistent directory "BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/../../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/../../../../../arm-oemllib32-linux-gnueabi/include"
> ignoring nonexistent directory "/not/exist/usr/include"
> #include "..." search starts here:
> #include <...> search starts here:
>  BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/include
>  BUILD/work/machine-oemllib32-linux-gnueabi/lib32-component/2.0.0-76-r7/recipe-sysroot-native/usr/bin/arm-oemllib32-linux-gnueabi/../../lib/arm-oemllib32-linux-gnueabi/gcc/arm-oemllib32-linux-gnueabi/9.2.0/include-fixed
> End of search list.
>
> On Tue, Aug 13, 2019 at 5:29 PM Khem Raj <raj.khem at gmail.com> wrote:
>>
>> OE does not use the traditional /usr/lib/gcc prefix to store gcc-runtime
>> it basically is moved into libdir, however some newer files were
>> installed by newer versions of gcc especially libgomp ( omp.h openacc.h )
>> into gcclibdir, so we have content in both directories, this confuses
>> other tools which are trying to guess the gcc installation and its
>> runtime location, since now we have two directories, the tools either
>> choose one or other and we get inconsistent behavior, e.g. clang for
>> aarch64 uses /usr/lib but same clang for riscv64 chose /usr/lib/gcc
>>
>> This change ensures that OE ends up with single valid location for gcc
>> runtime files
>>
>> Move more common bits into common inc file
>>
>> Signed-off-by: Khem Raj <raj.khem at gmail.com>
>> ---
>> v2: Divert packaging to use new path in whole recipe
>>
>>  meta/recipes-devtools/gcc/gcc-runtime.inc    | 18 +++++++++++++++---
>>  meta/recipes-devtools/gcc/gcc-runtime_8.3.bb | 10 ----------
>>  meta/recipes-devtools/gcc/gcc-runtime_9.1.bb | 10 ----------
>>  3 files changed, 15 insertions(+), 23 deletions(-)
>>
>> diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
>> index a5c2600d7f..22c1d78dd1 100644
>> --- a/meta/recipes-devtools/gcc/gcc-runtime.inc
>> +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
>> @@ -17,6 +17,12 @@ EXTRA_OECONF_PATHS = "\
>>  EXTRA_OECONF_append_linuxstdbase = " --enable-clocale=gnu"
>>  EXTRA_OECONF_append = " --cache-file=${B}/config.cache"
>>
>> +# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
>> +EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
>> +
>> +# Building with thumb enabled on armv6t fails
>> +ARM_INSTRUCTION_SET_armv6 = "arm"
>> +
>>  RUNTIMELIBITM = "libitm"
>>  RUNTIMELIBITM_arc = ""
>>  RUNTIMELIBITM_mipsarch = ""
>> @@ -77,6 +83,11 @@ do_install () {
>>                 cd ${B}/${TARGET_SYS}/$d/
>>                 oe_runmake 'DESTDIR=${D}' MULTIBUILDTOP=${B}/${TARGET_SYS}/$d/ install
>>         done
>> +       if [ -d ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include ]; then
>> +               install -d ${D}${libdir}/${TARGET_SYS}/${BINV}/include
>> +               mv ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include/* ${D}${libdir}/${TARGET_SYS}/${BINV}/include
>> +               rmdir --ignore-fail-on-non-empty -p ${D}${libdir}/gcc/${TARGET_SYS}/${BINV}/include
>> +       fi
>>         rm -rf ${D}${infodir}/libgomp.info ${D}${infodir}/dir
>>         rm -rf ${D}${infodir}/libitm.info ${D}${infodir}/dir
>>         rm -rf ${D}${infodir}/libquadmath.info ${D}${infodir}/dir
>> @@ -205,7 +216,7 @@ FILES_libssp-dev = "\
>>      ${libdir}/libssp*.so \
>>      ${libdir}/libssp*_nonshared.a \
>>      ${libdir}/libssp*.la \
>> -    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/ssp \
>> +    ${libdir}/${TARGET_SYS}/${BINV}/include/ssp \
>>  "
>>  SUMMARY_libssp-dev = "GNU stack smashing protection library - development files"
>>  FILES_libssp-staticdev = "${libdir}/libssp*.a"
>> @@ -214,7 +225,7 @@ SUMMARY_libssp-staticdev = "GNU stack smashing protection library - static devel
>>  FILES_libquadmath = "${libdir}/libquadmath*.so.*"
>>  SUMMARY_libquadmath = "GNU quad-precision math library"
>>  FILES_libquadmath-dev = "\
>> -    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/quadmath* \
>> +    ${libdir}/${TARGET_SYS}/${BINV}/include/quadmath* \
>>      ${libdir}/libquadmath*.so \
>>      ${libdir}/libquadmath.la \
>>  "
>> @@ -239,7 +250,8 @@ FILES_libgomp-dev = "\
>>      ${libdir}/libgomp*${SOLIBSDEV} \
>>      ${libdir}/libgomp*.la \
>>      ${libdir}/libgomp.spec \
>> -    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/omp.h \
>> +    ${libdir}/${TARGET_SYS}/${BINV}/include/omp.h \
>> +    ${libdir}/${TARGET_SYS}/${BINV}/include/openacc.h \
>>  "
>>  SUMMARY_libgomp-dev = "GNU OpenMP parallel programming library - development files"
>>  FILES_libgomp-staticdev = "${libdir}/libgomp*.a"
>> diff --git a/meta/recipes-devtools/gcc/gcc-runtime_8.3.bb b/meta/recipes-devtools/gcc/gcc-runtime_8.3.bb
>> index a1c7a76d0b..dd430b57eb 100644
>> --- a/meta/recipes-devtools/gcc/gcc-runtime_8.3.bb
>> +++ b/meta/recipes-devtools/gcc/gcc-runtime_8.3.bb
>> @@ -1,12 +1,2 @@
>>  require recipes-devtools/gcc/gcc-${PV}.inc
>>  require gcc-runtime.inc
>> -
>> -# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
>> -EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
>> -
>> -FILES_libgomp-dev += "\
>> -    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
>> -"
>> -
>> -# Building with thumb enabled on armv6t fails
>> -ARM_INSTRUCTION_SET_armv6 = "arm"
>> diff --git a/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb b/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
>> index a1c7a76d0b..dd430b57eb 100644
>> --- a/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
>> +++ b/meta/recipes-devtools/gcc/gcc-runtime_9.1.bb
>> @@ -1,12 +1,2 @@
>>  require recipes-devtools/gcc/gcc-${PV}.inc
>>  require gcc-runtime.inc
>> -
>> -# Disable ifuncs for libatomic on arm conflicts -march/-mcpu
>> -EXTRA_OECONF_append_arm = " libat_cv_have_ifunc=no "
>> -
>> -FILES_libgomp-dev += "\
>> -    ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
>> -"
>> -
>> -# Building with thumb enabled on armv6t fails
>> -ARM_INSTRUCTION_SET_armv6 = "arm"
>> --
>> 2.22.0
>>
>> --
>> _______________________________________________
>> Openembedded-core mailing list
>> Openembedded-core at lists.openembedded.org
>> http://lists.openembedded.org/mailman/listinfo/openembedded-core


More information about the Openembedded-core mailing list