diff --git a/Android.mk b/Android.mk index 49a88afa51..a81dc1228c 100644 --- a/Android.mk +++ b/Android.mk @@ -36,6 +36,10 @@ LOCAL_MODULE_TAGS := optional LOCAL_MODULE_DEBUG_ENABLE := true LOCAL_MODULE_PATH := $(KERNEL_MODULES_OUT) LOCAL_MODULE_DDK_BUILD := true +LOCAL_MODULE_DDK_SUBTARGET_REGEX := "video.*" +ifeq ($(TARGET_BOARD_PLATFORM), volcano) + LOCAL_MODULE_DDK_SUBTARGET_REGEX := "$(TARGET_BOARD_PLATFORM)_video.*" +endif LOCAL_MODULE_KO_DIRS := msm_video/msm_video.ko LOCAL_REQUIRED_MODULES := mmrm-module-symvers diff --git a/BUILD.bazel b/BUILD.bazel index 473cb80f43..d5d674cbfd 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -69,8 +69,5 @@ ddk_headers( hdrs = [":uapi_headers", "pineapple_headers", "cliffs_headers", "iris33_headers", "volcano_headers", "iris2_headers", "vidc_headers"] ) -load(":target.bzl", "define_pineapple") -define_pineapple() - -load(":target.bzl", "define_volcano") -define_volcano() +load(":target.bzl", "define_target_modules") +define_target_modules() diff --git a/target.bzl b/target.bzl index b6d5562d11..f242e13424 100644 --- a/target.bzl +++ b/target.bzl @@ -1,27 +1,28 @@ load(":video_modules.bzl", "video_driver_modules") -load(":video_driver_build.bzl", "define_consolidate_gki_modules") +load(":video_driver_build.bzl", "define_lunch_target_variant_modules") +load("//msm-kernel:target_variants.bzl", "get_all_la_variants") +load("//msm-kernel:target_variants.bzl", "get_all_lunch_target_base_target_variants") -def define_pineapple(): - define_consolidate_gki_modules( - target = "pineapple", - registry = video_driver_modules, - modules = [ - "msm_video", - "video", - ], - config_options = [ - "CONFIG_MSM_VIDC_PINEAPPLE", - ], - ) +def define_target_modules(): + for (target, variant) in get_all_la_variants(): + define_lunch_target_variant_modules( + target = target, + variant = variant, + registry = video_driver_modules, + modules = [ + "msm_video", + "video", + ], + ) -def define_volcano(): - define_consolidate_gki_modules( - target = "volcano", - registry = video_driver_modules, - modules = [ - "msm_video", - ], - config_options = [ - "CONFIG_MSM_VIDC_VOLCANO", - ], - ) \ No newline at end of file + for (lt, bt, v) in get_all_lunch_target_base_target_variants(): + define_lunch_target_variant_modules( + target = bt, + variant = v, + registry = video_driver_modules, + modules = [ + "msm_video", + "video", + ], + lunch_target = lt, + ) diff --git a/video_driver_build.bzl b/video_driver_build.bzl index 7ad7dcd7b8..d14b7df41e 100644 --- a/video_driver_build.bzl +++ b/video_driver_build.bzl @@ -97,6 +97,79 @@ def define_target_variant_modules(target, variant, registry, modules, config_opt log = "info", ) +def define_lunch_target_variant_modules(target, variant, registry, modules, lunch_target=None): + print(lunch_target) + + kernel_build = "{}_{}".format(target, variant) + print("kernel_build: "+ kernel_build) + + kernel_build_label = "//msm-kernel:{}".format(kernel_build) + print(kernel_build_label) + + if lunch_target != None: + kernel_build = "{}_{}_{}".format(target, variant, lunch_target) + print("kernel_build: "+ kernel_build) + ddk_mod_name = "{}_video_driver_modules".format(kernel_build) + print("ddk_mod_name : " + ddk_mod_name) + dist_target_name = "{}_video_driver_modules_dist".format(kernel_build) + data = [":{}_video_driver_modules".format(kernel_build)] + config_options = ["CONFIG_MSM_VIDC_{}".format(lunch_target.upper())] + else: + ddk_mod_name = "{}_video_driver_modules".format(kernel_build) + print("ddk_mod_name: " + ddk_mod_name) + dist_target_name = "{}_video_driver_modules_dist".format(kernel_build) + print("dist_target_name: " + dist_target_name) + data = [":{}_video_driver_modules".format(kernel_build)] + config_options = ["CONFIG_MSM_VIDC_{}".format(target.upper())] + + + modules = [registry.get(module_name) for module_name in modules] + + options = _get_kernel_build_options(modules, config_options) + + build_print = lambda message : print("{}: {}".format(kernel_build, message)) + + formatter = lambda s : s.replace("%b", kernel_build).replace("%t", target) + + headers = ["//msm-kernel:all_headers"] + registry.hdrs + [":{}_headers".format(target)] + print(headers) + + all_module_rules = [] + + for module in modules: + print("Module name: "+ module.name) + rule_name = "{}_{}".format(kernel_build, module.name) + module_srcs = _get_kernel_build_module_srcs(module, options, formatter) + + if not module_srcs: + continue + + ddk_submodule( + name = rule_name, + srcs = module_srcs, + out = "{}.ko".format(module.name), + deps = headers + _get_kernel_build_module_deps(module, options, formatter), + local_defines = options.keys(), + ) + all_module_rules.append(rule_name) + + ddk_module( + name = ddk_mod_name, + kernel_build = kernel_build_label, + deps = all_module_rules, + ) + + copy_to_dist_dir( + name = dist_target_name, + data = data, + dist_dir = "out/target/product/{}/dlkm/lib/modules/".format(target), + flat = True, + wipe_dist_dir = False, + allow_duplicate_filenames = False, + mode_overrides = {"**/*": "644"}, + log = "info", + ) + def define_consolidate_gki_modules(target, registry, modules, config_options = []): define_target_variant_modules(target, "consolidate", registry, modules, config_options) define_target_variant_modules(target, "gki", registry, modules, config_options) \ No newline at end of file