/*
 * 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_corestack: {
        kbuild_options: ["CONFIG_MALI_CORESTACK=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_MOCK_TEST={{.mali_mock_test}}",
    ],
    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"],
    },
    mali_mock_test: {
        srcs: ["tests/internal/src/mock/mali_kbase_pm_driver_mock.c"],
    },
    gpu_has_csf: {
        srcs: [
            "csf/*.c",
            "csf/*.h",
            "csf/Kbuild",
        ],
    },
    defaults: ["mali_kbase_shared_config_defaults"],
}
