wlan_platform_modules.bzl 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. load("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir")
  2. load("//build/kernel/kleaf:kernel.bzl", "ddk_module")
  3. load("//msm-kernel:target_variants.bzl", "get_all_variants")
  4. _module_enablement_map = {
  5. # "ALL" will enable for all target/variant combos
  6. "cnss2": ["ALL"],
  7. # Empty list disables the module build
  8. "icnss2": [],
  9. "cnss_nl": ["ALL"],
  10. "cnss_prealloc": ["ALL"],
  11. "cnss_utils": ["ALL"],
  12. "wlan_firmware_service": ["ALL"],
  13. "cnss_plat_ipc_qmi_svc": ["ALL"],
  14. }
  15. def _get_module_list(target, variant):
  16. tv = "{}_{}".format(target, variant)
  17. ret = []
  18. for (mod, enabled_platforms) in _module_enablement_map.items():
  19. if "ALL" in enabled_platforms or tv in enabled_platforms:
  20. ret.append(mod)
  21. continue
  22. return [":{}_{}".format(tv, mod) for mod in ret]
  23. def _define_modules_for_target_variant(target, variant):
  24. tv = "{}_{}".format(target, variant)
  25. ddk_module(
  26. name = "{}_cnss2".format(tv),
  27. srcs = native.glob([
  28. "cnss2/main.c",
  29. "cnss2/bus.c",
  30. "cnss2/debug.c",
  31. "cnss2/pci.c",
  32. "cnss2/pci_platform.h",
  33. "cnss2/power.c",
  34. "cnss2/genl.c",
  35. "cnss2/*.h",
  36. "cnss_utils/*.h",
  37. ]),
  38. includes = ["cnss", "cnss_utils"],
  39. kconfig = "cnss2/Kconfig",
  40. defconfig = "cnss2/{}_defconfig".format(tv),
  41. conditional_srcs = {
  42. "CONFIG_CNSS2_QMI": {
  43. True: [
  44. "cnss2/qmi.c",
  45. "cnss2/coexistence_service_v01.c",
  46. "cnss2/ip_multimedia_subsystem_private_service_v01.c",
  47. ]
  48. },
  49. "CONFIG_PCI_MSM": {
  50. True: [
  51. "cnss2/pci_qcom.c",
  52. ],
  53. },
  54. },
  55. out = "cnss2.ko",
  56. kernel_build = "//msm-kernel:{}".format(tv),
  57. deps = [
  58. "//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv),
  59. ":{}_cnss_utils".format(tv),
  60. ":{}_cnss_prealloc".format(tv),
  61. ":{}_wlan_firmware_service".format(tv),
  62. ":{}_cnss_plat_ipc_qmi_svc".format(tv),
  63. "//msm-kernel:all_headers",
  64. ":wlan-platform-headers",
  65. ],
  66. )
  67. ddk_module(
  68. name = "{}_icnss2".format(tv),
  69. srcs = native.glob([
  70. "icnss2/main.c",
  71. "icnss2/debug.c",
  72. "icnss2/power.c",
  73. "icnss2/genl.c",
  74. "icnss2/*.h",
  75. "cnss_utils/*.h",
  76. ]),
  77. includes = ["icnss2", "cnss_utils"],
  78. kconfig = "icnss2/Kconfig",
  79. defconfig = "icnss2/{}_defconfig".format(tv),
  80. conditional_srcs = {
  81. "CONFIG_ICNSS2_QMI": {
  82. True: [
  83. "icnss2/qmi.c",
  84. ],
  85. },
  86. },
  87. out = "icnss2.ko",
  88. kernel_build = "//msm-kernel:{}".format(tv),
  89. deps = [
  90. ":{}_cnss_utils".format(tv),
  91. ":{}_cnss_prealloc".format(tv),
  92. ":{}_wlan_firmware_service".format(tv),
  93. "//msm-kernel:all_headers",
  94. ":wlan-platform-headers",
  95. ],
  96. )
  97. ddk_module(
  98. name = "{}_cnss_nl".format(tv),
  99. srcs = [
  100. "cnss_genl/cnss_nl.c",
  101. ],
  102. kconfig = "cnss_genl/Kconfig",
  103. defconfig = "cnss_genl/{}_defconfig".format(tv),
  104. out = "cnss_nl.ko",
  105. kernel_build = "//msm-kernel:{}".format(tv),
  106. deps = [
  107. "//msm-kernel:all_headers",
  108. ":wlan-platform-headers",
  109. ],
  110. )
  111. ddk_module(
  112. name = "{}_cnss_prealloc".format(tv),
  113. srcs = native.glob([
  114. "cnss_prealloc/cnss_prealloc.c",
  115. "cnss_utils/*.h",
  116. ]),
  117. includes = ["cnss_utils"],
  118. kconfig = "cnss_prealloc/Kconfig",
  119. defconfig = "cnss_prealloc/{}_defconfig".format(tv),
  120. out = "cnss_prealloc.ko",
  121. kernel_build = "//msm-kernel:{}".format(tv),
  122. deps = [
  123. "//msm-kernel:all_headers",
  124. ":wlan-platform-headers",
  125. ],
  126. )
  127. ddk_module(
  128. name = "{}_cnss_utils".format(tv),
  129. srcs = native.glob([
  130. "cnss_utils/cnss_utils.c",
  131. "cnss_utils/*.h"
  132. ]),
  133. kconfig = "cnss_utils/Kconfig",
  134. defconfig = "cnss_utils/{}_defconfig".format(tv),
  135. out = "cnss_utils.ko",
  136. kernel_build = "//msm-kernel:{}".format(tv),
  137. deps = [
  138. "//msm-kernel:all_headers",
  139. ":wlan-platform-headers",
  140. ],
  141. )
  142. ddk_module(
  143. name = "{}_wlan_firmware_service".format(tv),
  144. srcs = native.glob([
  145. "cnss_utils/wlan_firmware_service_v01.c",
  146. "cnss_utils/device_management_service_v01.c",
  147. "cnss_utils/*.h"
  148. ]),
  149. kconfig = "cnss_utils/Kconfig",
  150. defconfig = "cnss_utils/{}_defconfig".format(tv),
  151. out = "wlan_firmware_service.ko",
  152. kernel_build = "//msm-kernel:{}".format(tv),
  153. deps = ["//msm-kernel:all_headers"],
  154. )
  155. ddk_module(
  156. name = "{}_cnss_plat_ipc_qmi_svc".format(tv),
  157. srcs = native.glob([
  158. "cnss_utils/cnss_plat_ipc_qmi.c",
  159. "cnss_utils/cnss_plat_ipc_service_v01.c",
  160. "cnss_utils/*.h"
  161. ]),
  162. kconfig = "cnss_utils/Kconfig",
  163. defconfig = "cnss_utils/{}_defconfig".format(tv),
  164. out = "cnss_plat_ipc_qmi_svc.ko",
  165. kernel_build = "//msm-kernel:{}".format(tv),
  166. deps = ["//msm-kernel:all_headers"],
  167. )
  168. copy_to_dist_dir(
  169. name = "{}_modules_dist".format(tv),
  170. data = _get_module_list(target, variant),
  171. dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target),
  172. flat = True,
  173. wipe_dist_dir = False,
  174. allow_duplicate_filenames = False,
  175. mode_overrides = {"**/*": "644"},
  176. log = "info"
  177. )
  178. def define_modules():
  179. for (t, v) in get_all_variants():
  180. _define_modules_for_target_variant(t, v)