/*
 * 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"],
    },
    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"],
}

optional_subdirs = ["tests"]
