msm_dtc.bzl 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
  2. load(":msm_common.bzl", "get_out_dir")
  3. def define_dtc_dist(target, msm_target, variant):
  4. """Create distribution targets for device tree compiler and associated tools
  5. Args:
  6. target: name of main Bazel target (e.g. `kalama_gki`)
  7. """
  8. dtc_bin_targets = [
  9. "@dtc//:dtc",
  10. "@dtc//:fdtget",
  11. "@dtc//:fdtput",
  12. "@dtc//:fdtdump",
  13. "@dtc//:fdtoverlay",
  14. "@dtc//:fdtoverlaymerge",
  15. ]
  16. dtc_lib_targets = [
  17. "@dtc//:dtc_gen",
  18. "@dtc//:libfdt",
  19. ]
  20. dtc_inc_targets = [
  21. "@dtc//:libfdt/fdt.h",
  22. "@dtc//:libfdt/libfdt.h",
  23. "@dtc//:libfdt/libfdt_env.h",
  24. ]
  25. dtc_tar_cmd = "mkdir -p bin lib include\n"
  26. for label in dtc_bin_targets:
  27. dtc_tar_cmd += "cp $(locations {}) bin/\n".format(label)
  28. for label in dtc_lib_targets:
  29. dtc_tar_cmd += "cp $(locations {}) lib/\n".format(label)
  30. for label in dtc_inc_targets:
  31. dtc_tar_cmd += "cp $(locations {}) include/\n".format(label)
  32. dtc_tar_cmd += """
  33. chmod 755 bin/* lib/*
  34. chmod 644 include/*
  35. tar -czf "$@" bin lib include
  36. """
  37. native.genrule(
  38. name = "{}_dtc_tarball".format(target),
  39. srcs = dtc_bin_targets + dtc_lib_targets + dtc_inc_targets,
  40. outs = ["{}_dtc.tar.gz".format(target)],
  41. cmd = dtc_tar_cmd,
  42. )
  43. native.alias(
  44. name = "{}_dtc".format(target),
  45. actual = ":{}_dtc_tarball".format(target),
  46. )
  47. copy_to_dist_dir(
  48. name = "{}_dtc_dist".format(target),
  49. archives = [":{}_dtc_tarball".format(target)],
  50. dist_dir = "{}/host".format(get_out_dir(msm_target, variant)),
  51. flat = True,
  52. wipe_dist_dir = True,
  53. log = "info",
  54. )