/*
 * Copyright:
 * ----------------------------------------------------------------------------
 * This confidential and proprietary software may be used only as authorized
 * by a licensing agreement from ARM Limited.
 *      (C) COPYRIGHT 2017-2018 ARM Limited, ALL RIGHTS RESERVED
 * The entire notice above must be reproduced on all authorized copies and
 * copies may only be made to the extent permitted by a licensing agreement
 * from ARM Limited.
 * ----------------------------------------------------------------------------
 */

/* Kernel-side tests may include mali_kbase's headers. Therefore any config
 * options which affect the sizes of any structs (e.g. adding extra members)
 * must be included in these defaults, so that the structs are consistent in
 * both mali_kbase and the test modules. */
bob_defaults {
    name: "mali_kbase_shared_config_defaults",
    no_mali: {
        kbuild_options: ["CONFIG_MALI_NO_MALI=y"],
    },
    mali_devfreq: {
        kbuild_options: ["CONFIG_MALI_DEVFREQ=y"],
    },
    mali_midgard_dvfs: {
        kbuild_options: ["CONFIG_MALI_MIDGARD_DVFS=y"],
    },
    mali_debug: {
        kbuild_options: ["CONFIG_MALI_DEBUG=y"],
    },
    mali_fpga_bus_logger: {
        kbuild_options: ["CONFIG_MALI_FPGA_BUS_LOGGER=y"],
    },
    cinstr_job_dump: {
        kbuild_options: ["CONFIG_MALI_JOB_DUMP=y"],
    },
    cinstr_vector_dump: {
        kbuild_options: ["CONFIG_MALI_VECTOR_DUMP=y"],
    },
    cinstr_gwt: {
        kbuild_options: ["CONFIG_MALI_CINSTR_GWT=y"],
    },
    mali_gator_support: {
        kbuild_options: ["CONFIG_MALI_GATOR_SUPPORT=y"],
    },
    mali_system_trace: {
        kbuild_options: ["CONFIG_MALI_SYSTEM_TRACE=y"],
    },
    mali_pwrsoft_765: {
        kbuild_options: ["CONFIG_MALI_PWRSOFT_765=y"],
    },
    kbuild_options: [
        "MALI_UNIT_TEST={{.unit_test_code}}",
        "MALI_CUSTOMER_RELEASE={{.release}}",
        "MALI_USE_CSF={{.gpu_has_csf}}",
        "MALI_KERNEL_TEST_API={{.debug}}",
    ],
    defaults: ["kernel_defaults"],
}

bob_kernel_module {
    name: "mali_kbase",
    srcs: [
        "*.c",
        "*.h",
        "Kbuild",
        "backend/gpu/*.c",
        "backend/gpu/*.h",
        "backend/gpu/Kbuild",
        "ipa/*.c",
        "ipa/*.h",
        "ipa/Kbuild",
        "platform/*.h",
        "platform/*/*.c",
        "platform/*/*.h",
        "platform/*/Kbuild",
        "thirdparty/*.c",
    ],
    kbuild_options: [
        "CONFIG_MALI_KUTF=n",
        "CONFIG_MALI_MIDGARD=m",
        "CONFIG_MALI_NO_MALI_DEFAULT_GPU={{.gpu}}",
        "CONFIG_MALI_PLATFORM_NAME={{.mali_platform_name}}",
    ],
    mali_fpga_bus_logger: {
        extra_symbols: [
            "bus_logger",
        ],
    },
    mali_corestack: {
        kbuild_options: ["CONFIG_MALI_CORESTACK=y"],
    },
    mali_error_inject: {
        kbuild_options: ["CONFIG_MALI_ERROR_INJECT=y"],
    },
    mali_error_inject_random: {
        kbuild_options: ["CONFIG_MALI_ERROR_INJECT_RANDOM=y"],
    },
    cinstr_secondary_hwc: {
        kbuild_options: ["CONFIG_MALI_PRFCNT_SET_SECONDARY=y"],
    },
    mali_2mb_alloc: {
        kbuild_options: ["CONFIG_MALI_2MB_ALLOC=y"],
    },
    gpu_has_csf: {
        srcs: [
            "csf/*.c",
            "csf/*.h",
            "csf/Kbuild",
        ],
    },
    defaults: ["mali_kbase_shared_config_defaults"],
}
