cc_defaults {
    name: "crasher-defaults",

    cppflags: [
        "-std=gnu++14",
        "-W",
        "-Wall",
        "-Wextra",
        "-Wunused",
        "-Werror",
        "-O0",
        "-fstack-protector-all",
        "-Wno-free-nonheap-object",
        "-Wno-date-time",
    ],
    srcs: ["crasher.cpp"],
    arch: {
        arm: {
            srcs: ["arm/crashglue.S"],

            armv7_a_neon: {
                asflags: ["-DHAS_VFP_D32"],
            },
        },
        arm64: {
            srcs: ["arm64/crashglue.S"],
        },
        mips: {
            srcs: ["mips/crashglue.S"],
        },
        mips64: {
            srcs: ["mips64/crashglue.S"],
        },
        x86: {
            srcs: ["x86/crashglue.S"],
        },
        x86_64: {
            srcs: ["x86_64/crashglue.S"],
        },
    },
    compile_multilib: "both",
}

cc_binary {
    name: "crasher",

    defaults: ["crasher-defaults"],
    shared_libs: [
        "libbase",
        "liblog",
        "libseccomp_policy",
    ],
    multilib: {
        lib32: {
            stem: "crasher",
        },
        lib64: {
            stem: "crasher64",
        },
    },
}

cc_binary {
    name: "static_crasher",

    defaults: ["crasher-defaults"],
    cppflags: ["-DSTATIC_CRASHER"],
    static_executable: true,
    static_libs: [
        "libdebuggerd_handler",
        "libbase",
        "liblog",
        "libseccomp_policy",
    ],
    multilib: {
        lib32: {
            stem: "static_crasher",
        },
        lib64: {
            stem: "static_crasher64",
        },
    },
}
