gcc-runtime-external.bb 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. GCC_VERSION := "${@oe.external.run(d, 'gcc', '-dumpversion').rstrip()}"
  2. PV = "${GCC_VERSION}"
  3. BINV = "${GCC_VERSION}"
  4. require recipes-devtools/gcc/gcc-runtime.inc
  5. inherit external-toolchain
  6. # GCC >4.2 is GPLv3
  7. LICENSE = "GPL-3.0-with-GCC-exception & GPLv3"
  8. DEPENDS = "libgcc"
  9. EXTRA_OECONF = ""
  10. python () {
  11. gccs = d.expand('gcc-source-${PV}')
  12. lic_deps = d.getVarFlag('do_populate_lic', 'depends', True).split()
  13. d.setVarFlag('do_populate_lic', 'depends', ' '.join(filter(lambda d: d != '{}:do_unpack'.format(gccs), lic_deps)))
  14. cfg_deps = d.getVarFlag('do_configure', 'depends', True).split()
  15. d.setVarFlag('do_configure', 'depends', ' '.join(filter(lambda d: d != '{}:do_preconfigure'.format(gccs), cfg_deps)))
  16. }
  17. target_libdir = "${libdir}"
  18. HEADERS_MULTILIB_SUFFIX ?= "${@oe.external.run(d, 'gcc', *(TARGET_CC_ARCH.split() + ['-print-sysroot-headers-suffix'])).rstrip()}"
  19. external_libroot = "${@os.path.realpath('${EXTERNAL_TOOLCHAIN_LIBROOT}').replace(os.path.realpath('${EXTERNAL_TOOLCHAIN}') + '/', '/')}"
  20. FILES_MIRRORS =. "\
  21. ${libdir}/gcc/${TARGET_SYS}/${GCC_VERSION}/|${external_libroot}/\n \
  22. ${includedir}/c\+\+/${GCC_VERSION}/${TARGET_SYS}/|${includedir}/c++/${GCC_VERSION}/${EXTERNAL_TARGET_SYS}${HEADERS_MULTILIB_SUFFIX}/\n \
  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. for path in ${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/*; do
  34. case ${path##*/} in
  35. ${multilib#/})
  36. mv -v "$path/"* "${D}${includedir}/c++/${GCC_VERSION}/${TARGET_SYS}/"
  37. ;;
  38. esac
  39. rm -rfv "$path"
  40. done
  41. }
  42. FILES_${PN}-dbg += "${datadir}/gdb/python/libstdcxx"
  43. FILES_libstdc++-dev = "\
  44. ${includedir}/c++ \
  45. ${libdir}/libstdc++.so \
  46. ${libdir}/libstdc++.la \
  47. ${libdir}/libsupc++.la \
  48. "
  49. BBCLASSEXTEND = ""