wlan_platform_modules.bzl 6.0 KB

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