// This step is only required for ARM. MIPS uses intrinsics exclusively and x86
// requires 'yasm' to pre-process its assembly files.
// The ARM assembly sources must be converted from ADS to GAS compatible format.
gensrcs {
    name: "libvpx_arm_neon_asm_srcs_converted",
    srcs: libvpx_arm_neon_asm_srcs,
    tool_files: [
        "libvpx/build/make/ads2gas.pl",
        "libvpx/build/make/thumb.pm",
    ],
    output_extension: "asm.S",
    cmd: "cat $(in) | perl $(location libvpx/build/make/ads2gas.pl) > $(out)",
    export_include_dirs: ["libvpx"],
}

cc_library_static {
    name: "libvpx",
    vendor_available: true,

    arch: {
        arm: {
            // Clang arm assembler cannot compile libvpx .S files yet.
            clang_asflags: ["-no-integrated-as"],

            // Want arm, not thumb, optimized
            instruction_set: "arm",

            srcs: libvpx_arm_c_srcs,
            local_include_dirs: ["config/arm"],

            neon: {
                exclude_srcs: libvpx_arm_neon_exclude_c_srcs,
                srcs: libvpx_arm_neon_c_srcs,
                generated_sources: ["libvpx_arm_neon_asm_srcs_converted"],
                local_include_dirs: ["config/arm-neon"],
            },
        },

        arm64: {
            srcs: libvpx_arm64_c_srcs,
            local_include_dirs: ["config/arm64"],
        },

        mips: {
            srcs: libvpx_mips32_c_srcs,
            local_include_dirs: ["config/mips32"],

            dspr2: {
                exclude_srcs: libvpx_mips32_dspr2_exclude_c_srcs,
                srcs: libvpx_mips32_dspr2_c_srcs,
                local_include_dirs: ["config/mips32-dspr2"],
            },

            msa: {
                exclude_srcs: libvpx_mips32_msa_exclude_c_srcs,
                srcs: libvpx_mips32_msa_c_srcs,
                local_include_dirs: ["config/mips32-msa"],
            },
        },

        mips64: {
            srcs: libvpx_mips64_c_srcs,
            local_include_dirs: ["config/mips64"],

            msa: {
                exclude_srcs: libvpx_mips64_msa_exclude_c_srcs,
                srcs: libvpx_mips64_msa_c_srcs,
                local_include_dirs: ["config/mips64-msa"],
            },
        },

        x86: {
            srcs: libvpx_x86_c_srcs + libvpx_x86_asm_srcs,
            local_include_dirs: ["config/x86"],
        },

        x86_64: {
            //srcs: libvpx_x86_64_c_srcs + libvpx_x86_64_asm_srcs,
            //local_include_dirs: ["config/x86_64"],
            srcs: libvpx_generic_c_srcs,
            local_include_dirs: ["config/generic"],
        },
    },

    cflags: [
        "-O3",
        "-Wno-unused-parameter",
    ],

    export_include_dirs: ["libvpx"],

    sanitize: {
        cfi: true,
        diag: {
            cfi: true,
        },
        blacklist: "cfi_blacklist.txt",
    },
}

subdirs = [
    "libwebm",
]
