14ae0fef4SJeff Johnsonload("//build/bazel_common_rules/dist:dist.bzl", "copy_to_dist_dir") 24ae0fef4SJeff Johnsonload("//build/kernel/kleaf:kernel.bzl", "ddk_module") 34ae0fef4SJeff Johnsonload("//msm-kernel:target_variants.bzl", "get_all_variants") 44ae0fef4SJeff Johnson 5dca762d8SSandeep Singh_default_module_enablement_list = [ 6dca762d8SSandeep Singh "cnss_nl", 7dca762d8SSandeep Singh "cnss_prealloc", 8dca762d8SSandeep Singh "cnss_utils", 9*8ac79820SVishal Miskin "wlan_firmware_service", 10dca762d8SSandeep Singh] 11dca762d8SSandeep Singh 12*8ac79820SVishal Miskin_cnss2_enabled_target = ["anorak", "niobe", "pineapple", "sun"] 1302e22639SSandeep Singh_icnss2_enabled_target = ["blair", "pineapple", "monaco", "pitti", "volcano"] 144ae0fef4SJeff Johnson 154ae0fef4SJeff Johnsondef _get_module_list(target, variant): 164ae0fef4SJeff Johnson tv = "{}_{}".format(target, variant) 174ae0fef4SJeff Johnson 184ae0fef4SJeff Johnson ret = [] 19dca762d8SSandeep Singh is_wlan_platform_enabled = False 20dca762d8SSandeep Singh 21dca762d8SSandeep Singh if target in _cnss2_enabled_target: 22dca762d8SSandeep Singh ret.extend(["cnss2", "cnss_plat_ipc_qmi_svc"]) 23dca762d8SSandeep Singh is_wlan_platform_enabled = True 24dca762d8SSandeep Singh 25dca762d8SSandeep Singh if target in _icnss2_enabled_target: 26dca762d8SSandeep Singh ret.extend(["icnss2"]) 27dca762d8SSandeep Singh is_wlan_platform_enabled = True 28dca762d8SSandeep Singh 29dca762d8SSandeep Singh if is_wlan_platform_enabled: 30dca762d8SSandeep Singh ret.extend(_default_module_enablement_list) 314ae0fef4SJeff Johnson 324ae0fef4SJeff Johnson return [":{}_{}".format(tv, mod) for mod in ret] 334ae0fef4SJeff Johnson 340a9f61aeSMohammed Ahmeddef _define_platform_config_rule(module, target, variant): 350a9f61aeSMohammed Ahmed tv = "{}_{}".format(target, variant) 360a9f61aeSMohammed Ahmed native.genrule( 370a9f61aeSMohammed Ahmed name = "{}/{}_defconfig_generate_perf".format(module, tv), 380a9f61aeSMohammed Ahmed outs = ["{}/{}_defconfig.generated_perf".format(module, tv)], 390a9f61aeSMohammed Ahmed srcs = [ 400a9f61aeSMohammed Ahmed "{}/{}_gki_defconfig".format(module, target), 410a9f61aeSMohammed Ahmed ], 420a9f61aeSMohammed Ahmed cmd = "cat $(SRCS) > $@", 430a9f61aeSMohammed Ahmed ) 440a9f61aeSMohammed Ahmed native.genrule( 450a9f61aeSMohammed Ahmed name = "{}/{}_defconfig_generate_gki".format(module, tv), 460a9f61aeSMohammed Ahmed outs = ["{}/{}_defconfig.generated_gki".format(module, tv)], 470a9f61aeSMohammed Ahmed srcs = [ 480a9f61aeSMohammed Ahmed "{}/{}_gki_defconfig".format(module, target), 490a9f61aeSMohammed Ahmed ], 500a9f61aeSMohammed Ahmed cmd = "cat $(SRCS) > $@", 510a9f61aeSMohammed Ahmed ) 520a9f61aeSMohammed Ahmed native.genrule( 530a9f61aeSMohammed Ahmed name = "{}/{}_defconfig_generate_consolidate".format(module, tv), 540a9f61aeSMohammed Ahmed outs = ["{}/{}_defconfig.generated_consolidate".format(module, tv)], 550a9f61aeSMohammed Ahmed srcs = [ 560a9f61aeSMohammed Ahmed "{}/{}_consolidate_defconfig".format(module, target), 570a9f61aeSMohammed Ahmed ], 580a9f61aeSMohammed Ahmed cmd = "cat $(SRCS) > $@", 590a9f61aeSMohammed Ahmed ) 604ae0fef4SJeff Johnson 614ae0fef4SJeff Johnsondef _define_modules_for_target_variant(target, variant): 624ae0fef4SJeff Johnson tv = "{}_{}".format(target, variant) 634ae0fef4SJeff Johnson 64dca762d8SSandeep Singh cnss2_enabled = 0 65dca762d8SSandeep Singh plat_ipc_qmi_svc_enabled = 0 66dca762d8SSandeep Singh icnss2_enabled = 0 67dca762d8SSandeep Singh 68dca762d8SSandeep Singh if target in _cnss2_enabled_target: 69dca762d8SSandeep Singh cnss2_enabled = 1 70dca762d8SSandeep Singh plat_ipc_qmi_svc_enabled = 1 71dca762d8SSandeep Singh 72dca762d8SSandeep Singh if target in _icnss2_enabled_target: 73dca762d8SSandeep Singh icnss2_enabled = 1 74dca762d8SSandeep Singh 750a9f61aeSMohammed Ahmed print("tv=", tv) 76dca762d8SSandeep Singh if cnss2_enabled: 770a9f61aeSMohammed Ahmed module = "cnss2" 780a9f61aeSMohammed Ahmed _define_platform_config_rule(module, target, variant) 790a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 80*8ac79820SVishal Miskin deps = [ 81*8ac79820SVishal Miskin ":{}_cnss_utils".format(tv), 82*8ac79820SVishal Miskin ":{}_cnss_prealloc".format(tv), 83*8ac79820SVishal Miskin ":{}_wlan_firmware_service".format(tv), 84*8ac79820SVishal Miskin ":{}_cnss_plat_ipc_qmi_svc".format(tv), 85*8ac79820SVishal Miskin "//msm-kernel:all_headers", 86*8ac79820SVishal Miskin ":wlan-platform-headers", 87*8ac79820SVishal Miskin ] 88*8ac79820SVishal Miskin if target != "anorak": 89*8ac79820SVishal Miskin deps.append("//vendor/qcom/opensource/securemsm-kernel:{}_smcinvoke_dlkm".format(tv)) 90*8ac79820SVishal Miskin 914ae0fef4SJeff Johnson ddk_module( 924ae0fef4SJeff Johnson name = "{}_cnss2".format(tv), 934ae0fef4SJeff Johnson srcs = native.glob([ 944ae0fef4SJeff Johnson "cnss2/main.c", 954ae0fef4SJeff Johnson "cnss2/bus.c", 964ae0fef4SJeff Johnson "cnss2/debug.c", 974ae0fef4SJeff Johnson "cnss2/pci.c", 984ae0fef4SJeff Johnson "cnss2/pci_platform.h", 994ae0fef4SJeff Johnson "cnss2/power.c", 1004ae0fef4SJeff Johnson "cnss2/genl.c", 1014ae0fef4SJeff Johnson "cnss2/*.h", 1024ae0fef4SJeff Johnson "cnss_utils/*.h", 1034ae0fef4SJeff Johnson ]), 1044ae0fef4SJeff Johnson includes = ["cnss", "cnss_utils"], 1054ae0fef4SJeff Johnson kconfig = "cnss2/Kconfig", 1060a9f61aeSMohammed Ahmed defconfig = defconfig, 1074ae0fef4SJeff Johnson conditional_srcs = { 1084ae0fef4SJeff Johnson "CONFIG_CNSS2_QMI": { 1094ae0fef4SJeff Johnson True: [ 1104ae0fef4SJeff Johnson "cnss2/qmi.c", 1114ae0fef4SJeff Johnson "cnss2/coexistence_service_v01.c", 112*8ac79820SVishal Miskin ], 1134ae0fef4SJeff Johnson }, 1144ae0fef4SJeff Johnson "CONFIG_PCI_MSM": { 1154ae0fef4SJeff Johnson True: [ 1164ae0fef4SJeff Johnson "cnss2/pci_qcom.c", 1174ae0fef4SJeff Johnson ], 1184ae0fef4SJeff Johnson }, 1194ae0fef4SJeff Johnson }, 1204ae0fef4SJeff Johnson out = "cnss2.ko", 1214ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 122*8ac79820SVishal Miskin deps = deps, 1234ae0fef4SJeff Johnson ) 1244ae0fef4SJeff Johnson 125dca762d8SSandeep Singh if icnss2_enabled: 1260a9f61aeSMohammed Ahmed module = "icnss2" 1270a9f61aeSMohammed Ahmed _define_platform_config_rule(module, target, variant) 1280a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 1294ae0fef4SJeff Johnson ddk_module( 1304ae0fef4SJeff Johnson name = "{}_icnss2".format(tv), 1314ae0fef4SJeff Johnson srcs = native.glob([ 1324ae0fef4SJeff Johnson "icnss2/main.c", 1334ae0fef4SJeff Johnson "icnss2/debug.c", 1344ae0fef4SJeff Johnson "icnss2/power.c", 1354ae0fef4SJeff Johnson "icnss2/genl.c", 1364ae0fef4SJeff Johnson "icnss2/*.h", 1374ae0fef4SJeff Johnson "cnss_utils/*.h", 1384ae0fef4SJeff Johnson ]), 1394ae0fef4SJeff Johnson includes = ["icnss2", "cnss_utils"], 1404ae0fef4SJeff Johnson kconfig = "icnss2/Kconfig", 1410a9f61aeSMohammed Ahmed copts = ["-Wno-format"], 1420a9f61aeSMohammed Ahmed defconfig = defconfig, 1434ae0fef4SJeff Johnson conditional_srcs = { 1444ae0fef4SJeff Johnson "CONFIG_ICNSS2_QMI": { 1454ae0fef4SJeff Johnson True: [ 1464ae0fef4SJeff Johnson "icnss2/qmi.c", 1474ae0fef4SJeff Johnson ], 1484ae0fef4SJeff Johnson }, 1494ae0fef4SJeff Johnson }, 1504ae0fef4SJeff Johnson out = "icnss2.ko", 1514ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 1524ae0fef4SJeff Johnson deps = [ 1536b432e8dSJeff Johnson ":{}_cnss_utils".format(tv), 1546b432e8dSJeff Johnson ":{}_cnss_prealloc".format(tv), 1556b432e8dSJeff Johnson ":{}_wlan_firmware_service".format(tv), 1564ae0fef4SJeff Johnson "//msm-kernel:all_headers", 1574ae0fef4SJeff Johnson ":wlan-platform-headers", 1584ae0fef4SJeff Johnson ], 1594ae0fef4SJeff Johnson ) 1600a9f61aeSMohammed Ahmed module = "cnss_genl" 1610a9f61aeSMohammed Ahmed _define_platform_config_rule(module, target, variant) 1620a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 1634ae0fef4SJeff Johnson ddk_module( 1644ae0fef4SJeff Johnson name = "{}_cnss_nl".format(tv), 1654ae0fef4SJeff Johnson srcs = [ 1664ae0fef4SJeff Johnson "cnss_genl/cnss_nl.c", 1674ae0fef4SJeff Johnson ], 1684ae0fef4SJeff Johnson kconfig = "cnss_genl/Kconfig", 1690a9f61aeSMohammed Ahmed defconfig = defconfig, 1704ae0fef4SJeff Johnson out = "cnss_nl.ko", 1714ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 1724ae0fef4SJeff Johnson deps = [ 1734ae0fef4SJeff Johnson "//msm-kernel:all_headers", 1744ae0fef4SJeff Johnson ":wlan-platform-headers", 1754ae0fef4SJeff Johnson ], 1764ae0fef4SJeff Johnson ) 1774ae0fef4SJeff Johnson 1780a9f61aeSMohammed Ahmed module = "cnss_prealloc" 1790a9f61aeSMohammed Ahmed _define_platform_config_rule(module, target, variant) 1800a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 1814ae0fef4SJeff Johnson ddk_module( 1824ae0fef4SJeff Johnson name = "{}_cnss_prealloc".format(tv), 1836b432e8dSJeff Johnson srcs = native.glob([ 1844ae0fef4SJeff Johnson "cnss_prealloc/cnss_prealloc.c", 1856b432e8dSJeff Johnson "cnss_utils/*.h", 1866b432e8dSJeff Johnson ]), 1876b432e8dSJeff Johnson includes = ["cnss_utils"], 1884ae0fef4SJeff Johnson kconfig = "cnss_prealloc/Kconfig", 1890a9f61aeSMohammed Ahmed defconfig = defconfig, 1904ae0fef4SJeff Johnson out = "cnss_prealloc.ko", 1914ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 1924ae0fef4SJeff Johnson deps = [ 1934ae0fef4SJeff Johnson "//msm-kernel:all_headers", 1944ae0fef4SJeff Johnson ":wlan-platform-headers", 1954ae0fef4SJeff Johnson ], 1964ae0fef4SJeff Johnson ) 1974ae0fef4SJeff Johnson 1980a9f61aeSMohammed Ahmed module = "cnss_utils" 1990a9f61aeSMohammed Ahmed _define_platform_config_rule(module, target, variant) 2000a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 2014ae0fef4SJeff Johnson ddk_module( 2024ae0fef4SJeff Johnson name = "{}_cnss_utils".format(tv), 2034ae0fef4SJeff Johnson srcs = native.glob([ 2044ae0fef4SJeff Johnson "cnss_utils/cnss_utils.c", 205*8ac79820SVishal Miskin "cnss_utils/*.h", 2064ae0fef4SJeff Johnson ]), 2074ae0fef4SJeff Johnson kconfig = "cnss_utils/Kconfig", 2080a9f61aeSMohammed Ahmed defconfig = defconfig, 2094ae0fef4SJeff Johnson out = "cnss_utils.ko", 2104ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 2114ae0fef4SJeff Johnson deps = [ 2124ae0fef4SJeff Johnson "//msm-kernel:all_headers", 2134ae0fef4SJeff Johnson ":wlan-platform-headers", 2144ae0fef4SJeff Johnson ], 2154ae0fef4SJeff Johnson ) 2164ae0fef4SJeff Johnson 2170a9f61aeSMohammed Ahmed module = "cnss_utils" 2180a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 2194ae0fef4SJeff Johnson ddk_module( 2204ae0fef4SJeff Johnson name = "{}_wlan_firmware_service".format(tv), 2214ae0fef4SJeff Johnson srcs = native.glob([ 2224ae0fef4SJeff Johnson "cnss_utils/wlan_firmware_service_v01.c", 2234ae0fef4SJeff Johnson "cnss_utils/device_management_service_v01.c", 22487ab436eSNaman Padhiar "cnss_utils/ip_multimedia_subsystem_private_service_v01.c", 225*8ac79820SVishal Miskin "cnss_utils/*.h", 2264ae0fef4SJeff Johnson ]), 2274ae0fef4SJeff Johnson kconfig = "cnss_utils/Kconfig", 2280a9f61aeSMohammed Ahmed defconfig = defconfig, 2294ae0fef4SJeff Johnson out = "wlan_firmware_service.ko", 2304ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 2314ae0fef4SJeff Johnson deps = ["//msm-kernel:all_headers"], 2324ae0fef4SJeff Johnson ) 2334ae0fef4SJeff Johnson 2340a9f61aeSMohammed Ahmed module = "cnss_utils" 2350a9f61aeSMohammed Ahmed defconfig = ":{}/{}_defconfig_generate_{}".format(module, tv, variant) 236dca762d8SSandeep Singh if plat_ipc_qmi_svc_enabled: 2374ae0fef4SJeff Johnson ddk_module( 2384ae0fef4SJeff Johnson name = "{}_cnss_plat_ipc_qmi_svc".format(tv), 2394ae0fef4SJeff Johnson srcs = native.glob([ 2404ae0fef4SJeff Johnson "cnss_utils/cnss_plat_ipc_qmi.c", 2414ae0fef4SJeff Johnson "cnss_utils/cnss_plat_ipc_service_v01.c", 242*8ac79820SVishal Miskin "cnss_utils/*.h", 2434ae0fef4SJeff Johnson ]), 2444ae0fef4SJeff Johnson kconfig = "cnss_utils/Kconfig", 2450a9f61aeSMohammed Ahmed defconfig = defconfig, 2464ae0fef4SJeff Johnson out = "cnss_plat_ipc_qmi_svc.ko", 2474ae0fef4SJeff Johnson kernel_build = "//msm-kernel:{}".format(tv), 2484ae0fef4SJeff Johnson deps = ["//msm-kernel:all_headers"], 2494ae0fef4SJeff Johnson ) 2500a9f61aeSMohammed Ahmed tv = "{}_{}".format(target, variant) 2514ae0fef4SJeff Johnson copy_to_dist_dir( 2524ae0fef4SJeff Johnson name = "{}_modules_dist".format(tv), 2534ae0fef4SJeff Johnson data = _get_module_list(target, variant), 2544ae0fef4SJeff Johnson dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target), 2554ae0fef4SJeff Johnson flat = True, 2564ae0fef4SJeff Johnson wipe_dist_dir = False, 2574ae0fef4SJeff Johnson allow_duplicate_filenames = False, 2584ae0fef4SJeff Johnson mode_overrides = {"**/*": "644"}, 259*8ac79820SVishal Miskin log = "info", 2604ae0fef4SJeff Johnson ) 2614ae0fef4SJeff Johnson 2624ae0fef4SJeff Johnsondef define_modules(): 2634ae0fef4SJeff Johnson for (t, v) in get_all_variants(): 2640a9f61aeSMohammed Ahmed print("v=", v) 2654ae0fef4SJeff Johnson _define_modules_for_target_variant(t, v) 266