gcc-runtime-external.bb 3.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
  17. FILES_MIRRORS =. "\
  18. ${libdir}/gcc/${TARGET_SYS}/${BINV}/|${external_libroot}/\n \
  19. ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/|/lib/gcc/${EXTERNAL_TARGET_SYS}/${BINV}/include/ \n \
  20. ${libdir}/gcc/${TARGET_SYS}/|${libdir}/gcc/${EXTERNAL_TARGET_SYS}/\n \
  21. ${@'${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}${EXTERNAL_HEADERS_MULTILIB_SUFFIX}/\n' if d.getVar('EXTERNAL_HEADERS_MULTILIB_SUFFIX') != 'UNKNOWN' else ''} \
  22. ${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}/\n \
  23. "
  24. # The do_install:append in gcc-runtime.inc doesn't do well if the links
  25. # already exist, as it causes a recursion that breaks traversal.
  26. python () {
  27. adjusted = d.getVar('do_install_added', expand=False).replace('ln -s', 'link_if_no_dest')
  28. adjusted = adjusted.replace('mkdir', 'mkdir_if_no_dest')
  29. d.setVar('do_install_added', adjusted)
  30. }
  31. link_if_no_dest () {
  32. if ! [ -e "$2" ] && ! [ -L "$2" ]; then
  33. ln -s "$1" "$2"
  34. fi
  35. }
  36. mkdir_if_no_dest () {
  37. if ! [ -e "$1" ] && ! [ -L "$1" ]; then
  38. mkdir "$1"
  39. fi
  40. }
  41. do_install_extra () {
  42. if [ "${TARGET_SYS}" != "${EXTERNAL_TARGET_SYS}" ] && [ -z "${MLPREFIX}" ]; then
  43. if [ -e "${D}${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}" ]; then
  44. if ! [ -e "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}" ]; then
  45. ln -s ${EXTERNAL_TARGET_SYS} ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}
  46. fi
  47. fi
  48. fi
  49. # Clear out the unused c++ header multilibs
  50. multilib="${EXTERNAL_HEADERS_MULTILIB_SUFFIX}"
  51. if [ "$multilib" != "UNKNOWN" ]; then
  52. for path in ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/*; do
  53. case ${path##*/} in
  54. ${multilib#/})
  55. mv -v "$path/"* "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
  56. ;;
  57. esac
  58. rm -rfv "$path"
  59. done
  60. fi
  61. }
  62. FILES:${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
  63. FILES:libstdc++-dev = "\
  64. ${includedir}/c++ \
  65. ${libdir}/libstdc++.so \
  66. ${libdir}/libstdc++.la \
  67. ${libdir}/libsupc++.la \
  68. "
  69. FILES:libgomp-dev += "\
  70. ${libdir}/gcc/${TARGET_SYS}/${BINV}/include/openacc.h \
  71. "
  72. BBCLASSEXTEND = ""
  73. # gcc-runtime needs libc, but glibc's utilities need libssp in some cases, so
  74. # short-circuit the interdependency here by manually specifying it rather than
  75. # depending on the libc packagedata.
  76. libc_rdep = "${@'${PREFERRED_PROVIDER_virtual/libc}' if '${PREFERRED_PROVIDER_virtual/libc}' else '${TCLIBC}'}"
  77. RDEPENDS:libgomp += "${libc_rdep}"
  78. RDEPENDS:libssp += "${libc_rdep}"
  79. RDEPENDS:libstdc++ += "${libc_rdep}"
  80. RDEPENDS:libatomic += "${libc_rdep}"
  81. RDEPENDS:libquadmath += "${libc_rdep}"
  82. RDEPENDS:libmpx += "${libc_rdep}"
  83. do_package_write_ipk[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
  84. do_package_write_deb[depends] += "virtual/${MLPREFIX}libc:do_packagedata"
  85. do_package_write_rpm[depends] += "virtual/${MLPREFIX}libc:do_packagedata"