Files
meta-external-toolchain/recipes-external/gcc/libgcc-external.bb
Christopher Larson 0b1992ea07 libgcc-external: don't package includes that gcc-runtime does
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
(cherry picked from commit 162c152822)
2021-11-02 04:27:52 +05:00

81 lines
3.1 KiB
BlitzBasic

SUMMARY = "The GNU Compiler Collection - libgcc"
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
DEPENDS += "virtual/${TARGET_PREFIX}binutils"
PROVIDES += "libgcc-initial"
PV = "${GCC_VERSION}"
inherit external-toolchain
LICENSE = "GPL-3.0-with-GCC-exception"
# libgcc needs libc, but glibc's utilities need libgcc, so short-circuit the
# interdependency here by manually specifying it rather than depending on the
# libc packagedata.
RDEPENDS_${PN} += "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
INSANE_SKIP_${PN} += "build-deps file-rdeps"
# The dynamically loadable files belong to libgcc, since we really don't need the static files
# on the target, moreover linker won't be able to find them there (see original libgcc.bb recipe).
BINV = "${GCC_VERSION}"
FILES_${PN} = "${base_libdir}/libgcc_s.so.*"
LIBROOT_RELATIVE_RESOLVED = "${@os.path.relpath(os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}'), os.path.realpath('${EXTERNAL_TOOLCHAIN_SYSROOT}'))}"
LIBROOT_RELATIVE = "${@os.path.relpath('${EXTERNAL_TOOLCHAIN_LIBROOT}', '${EXTERNAL_TOOLCHAIN_SYSROOT}')}"
FILES_${PN}-dev = "${base_libdir}/libgcc_s.so \
/${LIBROOT_RELATIVE_RESOLVED} \
/${LIBROOT_RELATIVE} \
"
INSANE_SKIP_${PN}-dev += "staticdev"
FILES_${PN}-dbg += "${base_libdir}/.debug/libgcc_s.so.*.debug"
# Follow any symlinks in the libroot (multilib build) to the main
# libroot and include any symlinks there that link to our libroot.
python add_ml_symlink () {
pass
}
python add_ml_symlink_tcmode-external () {
import pathlib
def get_links(p):
return (c for c in p.iterdir() if c.is_symlink())
if not d.getVar('EXTERNAL_TOOLCHAIN'):
return
libroot = d.getVar('EXTERNAL_TOOLCHAIN_LIBROOT')
if libroot != 'UNKNOWN':
sysroot = pathlib.Path(d.getVar('EXTERNAL_TOOLCHAIN_SYSROOT')).resolve()
libroot = pathlib.Path(libroot)
for child in get_links(libroot):
link_dest = child.resolve(strict=True)
for other_child in get_links(link_dest):
if other_child.resolve() == libroot.resolve():
other = other_child.parent.resolve() / other_child.name
relpath = other.relative_to(sysroot)
d.appendVar('SYSROOT_DIRS', ' /' + str(relpath.parent))
d.appendVar('FILES_${PN}-dev', ' /' + str(relpath))
}
add_ml_symlink[eventmask] = "bb.event.RecipePreFinalise"
addhandler add_ml_symlink
do_install_extra () {
if [ -e "${D}${libdir}/${EXTERNAL_TARGET_SYS}" ] && [ -z "${MLPREFIX}" ]; then
if ! [ -e "${D}${libdir}/${TARGET_SYS}" ]; then
ln -s "${EXTERNAL_TARGET_SYS}" "${D}${libdir}/${TARGET_SYS}"
fi
fi
# This belongs in gcc-runtime
rm -rf ${D}${libdir}/${TARGET_SYS}/${BINV}/include
}
do_package[prefuncs] += "add_sys_symlink"
python add_sys_symlink () {
import pathlib
target_sys = pathlib.Path(d.expand('${D}${libdir}/${TARGET_SYS}'))
if target_sys.exists():
pn = d.getVar('PN')
d.appendVar('FILES_%s-dev' % pn, ' ${libdir}/${TARGET_SYS}')
}