nativesdk.bbclass 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. # SDK packages are built either explicitly by the user,
  2. # or indirectly via dependency. No need to be in 'world'.
  3. EXCLUDE_FROM_WORLD = "1"
  4. STAGING_BINDIR_TOOLCHAIN = "${STAGING_DIR_NATIVE}${bindir_native}/${SDK_ARCH}${SDK_VENDOR}-${SDK_OS}"
  5. # libc for the SDK can be different to that of the target
  6. NATIVESDKLIBC ?= "libc-glibc"
  7. LIBCOVERRIDE = ":${NATIVESDKLIBC}"
  8. CLASSOVERRIDE = "class-nativesdk"
  9. MACHINEOVERRIDES = ""
  10. MACHINE_FEATURES = ""
  11. MULTILIBS = ""
  12. # we need consistent staging dir whether or not multilib is enabled
  13. STAGING_DIR_HOST = "${WORKDIR}/recipe-sysroot"
  14. STAGING_DIR_TARGET = "${WORKDIR}/recipe-sysroot"
  15. RECIPE_SYSROOT = "${WORKDIR}/recipe-sysroot"
  16. #
  17. # Update PACKAGE_ARCH and PACKAGE_ARCHS
  18. #
  19. PACKAGE_ARCH = "${SDK_ARCH}-${SDKPKGSUFFIX}"
  20. PACKAGE_ARCHS = "${SDK_PACKAGE_ARCHS}"
  21. #
  22. # We need chrpath >= 0.14 to ensure we can deal with 32 and 64 bit
  23. # binaries
  24. #
  25. DEPENDS:append = " chrpath-replacement-native"
  26. EXTRANATIVEPATH += "chrpath-native"
  27. PKGDATA_DIR = "${PKGDATA_DIR_SDK}"
  28. HOST_ARCH = "${SDK_ARCH}"
  29. HOST_VENDOR = "${SDK_VENDOR}"
  30. HOST_OS = "${SDK_OS}"
  31. HOST_PREFIX = "${SDK_PREFIX}"
  32. HOST_CC_ARCH = "${SDK_CC_ARCH}"
  33. HOST_LD_ARCH = "${SDK_LD_ARCH}"
  34. HOST_AS_ARCH = "${SDK_AS_ARCH}"
  35. #HOST_SYS = "${HOST_ARCH}${TARGET_VENDOR}-${HOST_OS}"
  36. TARGET_ARCH = "${SDK_ARCH}"
  37. TARGET_VENDOR = "${SDK_VENDOR}"
  38. TARGET_OS = "${SDK_OS}"
  39. TARGET_PREFIX = "${SDK_PREFIX}"
  40. TARGET_CC_ARCH = "${SDK_CC_ARCH}"
  41. TARGET_LD_ARCH = "${SDK_LD_ARCH}"
  42. TARGET_AS_ARCH = "${SDK_AS_ARCH}"
  43. TARGET_CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
  44. TARGET_CFLAGS = "${BUILDSDK_CFLAGS}"
  45. TARGET_CXXFLAGS = "${BUILDSDK_CXXFLAGS}"
  46. TARGET_LDFLAGS = "${BUILDSDK_LDFLAGS}"
  47. TARGET_FPU = ""
  48. EXTRA_OECONF_GCC_FLOAT = ""
  49. CPPFLAGS = "${BUILDSDK_CPPFLAGS}"
  50. CFLAGS = "${BUILDSDK_CFLAGS}"
  51. CXXFLAGS = "${BUILDSDK_CXXFLAGS}"
  52. LDFLAGS = "${BUILDSDK_LDFLAGS}"
  53. # Change to place files in SDKPATH
  54. base_prefix = "${SDKPATHNATIVE}"
  55. prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
  56. exec_prefix = "${SDKPATHNATIVE}${prefix_nativesdk}"
  57. baselib = "lib"
  58. sbindir = "${bindir}"
  59. export PKG_CONFIG_DIR = "${STAGING_DIR_HOST}${libdir}/pkgconfig"
  60. export PKG_CONFIG_SYSROOT_DIR = "${STAGING_DIR_HOST}"
  61. python nativesdk_virtclass_handler () {
  62. pn = e.data.getVar("PN")
  63. if not (pn.endswith("-nativesdk") or pn.startswith("nativesdk-")):
  64. return
  65. # Set features here to prevent appends and distro features backfill
  66. # from modifying nativesdk distro features
  67. features = set(d.getVar("DISTRO_FEATURES_NATIVESDK").split())
  68. filtered = set(bb.utils.filter("DISTRO_FEATURES", d.getVar("DISTRO_FEATURES_FILTER_NATIVESDK"), d).split())
  69. d.setVar("DISTRO_FEATURES", " ".join(sorted(features | filtered)))
  70. e.data.setVar("MLPREFIX", "nativesdk-")
  71. e.data.setVar("PN", "nativesdk-" + e.data.getVar("PN").replace("-nativesdk", "").replace("nativesdk-", ""))
  72. }
  73. python () {
  74. pn = d.getVar("PN")
  75. if not pn.startswith("nativesdk-"):
  76. return
  77. import oe.classextend
  78. clsextend = oe.classextend.NativesdkClassExtender("nativesdk", d)
  79. clsextend.rename_packages()
  80. clsextend.rename_package_variables((d.getVar("PACKAGEVARS") or "").split())
  81. clsextend.map_depends_variable("DEPENDS")
  82. clsextend.map_packagevars()
  83. clsextend.map_variable("PROVIDES")
  84. clsextend.map_regexp_variable("PACKAGES_DYNAMIC")
  85. d.setVar("LIBCEXTENSION", "")
  86. d.setVar("ABIEXTENSION", "")
  87. }
  88. addhandler nativesdk_virtclass_handler
  89. nativesdk_virtclass_handler[eventmask] = "bb.event.RecipePreFinalise"
  90. do_packagedata[stamp-extra-info] = ""
  91. USE_NLS = "${SDKUSE_NLS}"
  92. OLDEST_KERNEL = "${SDK_OLDEST_KERNEL}"
  93. PATH:prepend = "${COREBASE}/scripts/nativesdk-intercept:"