gcc-runtime-external.bb 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. PV = "${GCC_VERSION}"
  2. BINV = "${GCC_VERSION}"
  3. require recipes-devtools/gcc/gcc-runtime.inc
  4. inherit external-toolchain
  5. # GCC >4.2 is GPLv3
  6. DEPENDS = "libgcc"
  7. EXTRA_OECONF = ""
  8. COMPILERDEP = ""
  9. python () {
  10. lic_deps = d.getVarFlag('do_populate_lic', 'depends', False)
  11. d.setVarFlag('do_populate_lic', 'depends', lic_deps.replace('gcc-source-${PV}:do_unpack', ''))
  12. cfg_deps = d.getVarFlag('do_configure', 'depends', False)
  13. d.setVarFlag('do_configure', 'depends', cfg_deps.replace('gcc-source-${PV}:do_preconfigure', ''))
  14. }
  15. target_libdir = "${libdir}"
  16. HEADERS_MULTILIB_SUFFIX ?= "${@external_run(d, 'gcc', *('${TARGET_CC_ARCH}'.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
  17. external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
  18. FILES_MIRRORS =. "\
  19. ${libdir}/gcc/${TARGET_SYS}/${BINV}/|${external_libroot}/\n \
  20. ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/|/lib/gcc/${EXTERNAL_TARGET_SYS}/${BINV}/include/ \n \
  21. ${libdir}/gcc/${TARGET_SYS}/|${libdir}/gcc/${EXTERNAL_TARGET_SYS}/\n \
  22. ${@'${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}${HEADERS_MULTILIB_SUFFIX}/\n' if d.getVar('HEADERS_MULTILIB_SUFFIX') != 'UNKNOWN' else ''} \
  23. ${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/\n \
  24. "
  25. do_install_extra () {
  26. if [ "${TARGET_SYS}" != "${EXTERNAL_TARGET_SYS}" ]; then
  27. if [ -d "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}" ]; then
  28. mv -v "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/." "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
  29. fi
  30. fi
  31. # Clear out the unused c++ header multilibs
  32. multilib="${HEADERS_MULTILIB_SUFFIX}"
  33. if [ "$multilib" != "UNKNOWN" ]; then
  34. for path in ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/*; do
  35. case ${path##*/} in
  36. ${multilib#/})
  37. mv -v "$path/"* "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
  38. ;;
  39. esac
  40. rm -rfv "$path"
  41. done
  42. fi
  43. }
  44. FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
  45. FILES_libstdc++-dev = "\
  46. ${includedir}/c++ \
  47. ${libdir}/libstdc++.so \
  48. ${libdir}/libstdc++.la \
  49. ${libdir}/libsupc++.la \
  50. "
  51. FILES_libgomp-dev += "\
  52. ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
  53. "
  54. BBCLASSEXTEND = ""
  55. # gcc-runtime needs libc, but glibc's utilities need libssp in some cases, so
  56. # short-circuit the interdependency here by manually specifying it rather than
  57. # depending on the libc packagedata.
  58. libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
  59. RDEPENDS_libgomp += "${libc_rdep}"
  60. RDEPENDS_libssp += "${libc_rdep}"
  61. RDEPENDS_libstdc++ += "${libc_rdep}"
  62. RDEPENDS_libatomic += "${libc_rdep}"
  63. RDEPENDS_libquadmath += "${libc_rdep}"
  64. RDEPENDS_libmpx += "${libc_rdep}"
  65. do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
  66. do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
  67. do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"