filegroup {
    name: "deqp_spirv.debuginfo.grammar.json",
    srcs: ["source/extinst.debuginfo.grammar.json"],
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_1.0",
    out: [
        "core.insts-1.0.inc",
        "operand.kinds-1.0.inc",
        "glsl.std.450.insts.inc",
        "opencl.std.insts.inc",
    ],
    srcs: [
        ":deqp_spirv.core.grammar.json-1.0",
        ":deqp_spirv.glsl.grammar.json",
        ":deqp_spirv.opencl.grammar.json",
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --spirv-core-grammar=$(location :deqp_spirv.core.grammar.json-1.0) "+
         "--extinst-glsl-grammar=$(location :deqp_spirv.glsl.grammar.json) "+
         "--extinst-opencl-grammar=$(location :deqp_spirv.opencl.grammar.json) "+
         "--extinst-debuginfo-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--core-insts-output=$(location core.insts-1.0.inc) "+
         "--glsl-insts-output=$(location glsl.std.450.insts.inc) "+
         "--opencl-insts-output=$(location opencl.std.insts.inc) "+
         "--operand-kinds-output=$(location operand.kinds-1.0.inc)",
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_1.1",
    out: [
        "core.insts-1.1.inc",
        "operand.kinds-1.1.inc",
    ],
    srcs: [
        ":deqp_spirv.core.grammar.json-1.1",
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --spirv-core-grammar=$(location :deqp_spirv.core.grammar.json-1.1) "+
         "--extinst-debuginfo-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--core-insts-output=$(location core.insts-1.1.inc) "+
         "--operand-kinds-output=$(location operand.kinds-1.1.inc)",
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_1.2",
    out: [
        "core.insts-1.2.inc",
        "operand.kinds-1.2.inc",
    ],
    srcs: [
        ":deqp_spirv.core.grammar.json-1.2",
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --spirv-core-grammar=$(location :deqp_spirv.core.grammar.json-1.2) "+
         "--extinst-debuginfo-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--core-insts-output=$(location core.insts-1.2.inc) "+
         "--operand-kinds-output=$(location operand.kinds-1.2.inc)",
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_unified1",
    out: [
        "core.insts-unified1.inc",
        "operand.kinds-unified1.inc",
    ],
    srcs: [
        ":deqp_spirv.core.grammar.json-unified1",
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --spirv-core-grammar=$(location :deqp_spirv.core.grammar.json-unified1) "+
         "--extinst-debuginfo-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--core-insts-output=$(location core.insts-unified1.inc) "+
         "--operand-kinds-output=$(location operand.kinds-unified1.inc)",
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_debuginfo",
    out: [
        "debuginfo.insts.inc",
    ],
    srcs: [
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
         "--vendor-insts-output=$(out)"
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_amd-gcn-shader",
    out: [
        "spv-amd-gcn-shader.insts.inc",
    ],
    srcs: [
        "source/extinst.spv-amd-gcn-shader.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
         "--vendor-insts-output=$(out)"
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_amd-shader-ballot",
    out: [
        "spv-amd-shader-ballot.insts.inc",
    ],
    srcs: [
        "source/extinst.spv-amd-shader-ballot.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
         "--vendor-insts-output=$(out)"
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
    out: [
        "spv-amd-shader-explicit-vertex-parameter.insts.inc",
    ],
    srcs: [
        "source/extinst.spv-amd-shader-explicit-vertex-parameter.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
         "--vendor-insts-output=$(out)"
}

genrule {
    name: "deqp_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
    out: [
        "spv-amd-shader-trinary-minmax.insts.inc",
    ],
    srcs: [
        "source/extinst.spv-amd-shader-trinary-minmax.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --extinst-vendor-grammar=$(in) "+
         "--vendor-insts-output=$(out)"
}

genrule {
    name: "deqp_gen_spvtools_lang_headers",
    out: [
        "DebugInfo.h",
    ],
    srcs: [
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_language_headers.py"],
    cmd: "$(location) --extinst-name=DebugInfo "+
         "--extinst-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--extinst-output-base=$$(dirname $(location DebugInfo.h))/DebugInfo",
}

genrule {
    name: "deqp_gen_spvtools_enum_string_mapping",
    out: [
        "extension_enum.inc",
        "enum_string_mapping.inc",
    ],
    srcs: [
        ":deqp_spirv.core.grammar.json-unified1",
        ":deqp_spirv.debuginfo.grammar.json",
    ],
    tool_files: ["utils/generate_grammar_tables.py"],
    cmd: "$(location) --spirv-core-grammar=$(location :deqp_spirv.core.grammar.json-unified1) "+
         "--extinst-debuginfo-grammar=$(location :deqp_spirv.debuginfo.grammar.json) "+
         "--extension-enum-output=$(location extension_enum.inc) "+
         "--enum-string-mapping-output=$(location enum_string_mapping.inc) "
}

genrule {
    name: "deqp_gen_spvtools_generators_inc",
    out: [
        "generators.inc"
    ],
    srcs: [
        ":deqp_spirv.registry.xml"
    ],
    tool_files: ["utils/generate_registry_tables.py"],
    cmd: "$(location) --xml=$(location :deqp_spirv.registry.xml) --generator-output=$(location generators.inc)",
}

genrule { // FIXME this relies on `git` which is no good on build machines
    name: "deqp_gen_spvtools_build_version_inc",
    out: ["build-version.inc"],
    srcs: ["CHANGES"],
    tool_files: ["utils/update_build_version.py"],
    cmd: "$(location) $$(dirname $(location CHANGES)) " +
         "$(location build-version.inc)",
}

cc_library {
    name: "deqp_spirv-tools",
    sdk_version: "27",
    srcs: [
        "source/*.cpp",
        "source/util/*.cpp",
        "source/val/*.cpp",
        "source/opt/*.cpp",
    ],
    local_include_dirs: [
        "source",
    ],
    export_include_dirs: [
        "include",
    ],
    include_dirs: [
        "external/deqp-deps/SPIRV-Headers/include"
    ],
    generated_headers: [
        "deqp_gen_spvtools_grammar_tables_1.0",
        "deqp_gen_spvtools_grammar_tables_1.1",
        "deqp_gen_spvtools_grammar_tables_1.2",
        "deqp_gen_spvtools_grammar_tables_unified1",
        "deqp_gen_spvtools_grammar_tables_debuginfo",
        "deqp_gen_spvtools_grammar_tables_amd-gcn-shader",
        "deqp_gen_spvtools_grammar_tables_amd-shader-ballot",
        "deqp_gen_spvtools_grammar_tables_amd-shader-explicit-vertex-parameter",
        "deqp_gen_spvtools_grammar_tables_amd-shader-trinary-minmax",
        "deqp_gen_spvtools_enum_string_mapping",
        "deqp_gen_spvtools_generators_inc",
        "deqp_gen_spvtools_build_version_inc",
        "deqp_gen_spvtools_lang_headers",
    ],
    stl: "libc++_static",
    cppflags: [
        "-Wno-implicit-fallthrough"
    ],
}
