1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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}'), '${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
- }
- 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}')
- }
|