Home | History | Annotate | Download | only in spirv-tools
      1 import("../third_party.gni")
      2 
      3 template("spirv_core_tables") {
      4   version = invoker.version
      5   action("spirv_core_tables_" + target_name) {
      6     script = "../externals/spirv-tools/utils/generate_grammar_tables.py"
      7     sources = [
      8       "../externals/spirv-headers/include/spirv/$version/spirv.core.grammar.json",
      9     ]
     10     outputs = [
     11       "$root_out_dir/spirv-tools/core.insts-$version.inc",
     12       "$root_out_dir/spirv-tools/operand.kinds-$version.inc",
     13     ]
     14     args = [
     15       "--spirv-core-grammar=" + rebase_path(
     16               "../externals/spirv-headers/include/spirv/$version/spirv.core.grammar.json",
     17               root_build_dir),
     18       "--core-insts-output=" +
     19           rebase_path("$root_out_dir/spirv-tools/core.insts-$version.inc",
     20                       root_build_dir),
     21       "--operand-kinds-output=" +
     22           rebase_path("$root_out_dir/spirv-tools/operand.kinds-$version.inc",
     23                       root_build_dir),
     24     ]
     25   }
     26 }
     27 
     28 spirv_core_tables("1.0") {
     29   version = "1.0"
     30 }
     31 spirv_core_tables("1.1") {
     32   version = "1.1"
     33 }
     34 
     35 action("spirv_glsl_tables") {
     36   script = "../externals/spirv-tools/utils/generate_grammar_tables.py"
     37   sources = [
     38     "../externals/spirv-headers/include/spirv/1.0/extinst.glsl.std.450.grammar.json",
     39     "../externals/spirv-headers/include/spirv/1.0/spirv.core.grammar.json",
     40   ]
     41   outputs = [
     42     "$root_out_dir/spirv-tools/glsl.std.450.insts-1.0.inc",
     43   ]
     44   args = [
     45     "--spirv-core-grammar=" + rebase_path(
     46             "../externals/spirv-headers/include/spirv/1.0/spirv.core.grammar.json",
     47             root_build_dir),
     48     "--extinst-glsl-grammar=" +
     49         rebase_path("../externals/spirv-headers/include/spirv/1.0/" +
     50                         "extinst.glsl.std.450.grammar.json",
     51                     root_build_dir),
     52     "--glsl-insts-output=" +
     53         rebase_path("$root_out_dir/spirv-tools/glsl.std.450.insts-1.0.inc",
     54                     root_build_dir),
     55   ]
     56 }
     57 
     58 action("spirv_opencl_tables") {
     59   script = "../externals/spirv-tools/utils/generate_grammar_tables.py"
     60   sources = [
     61     "../externals/spirv-headers/include/spirv/1.0/extinst.opencl.std.100.grammar.json",
     62     "../externals/spirv-headers/include/spirv/1.0/spirv.core.grammar.json",
     63   ]
     64   outputs = [
     65     "$root_out_dir/spirv-tools/opencl.std.insts-1.0.inc",
     66   ]
     67   args = [
     68     "--spirv-core-grammar=" + rebase_path(
     69             "../externals/spirv-headers/include/spirv/1.0/spirv.core.grammar.json",
     70             root_build_dir),
     71     "--extinst-opencl-grammar=" +
     72         rebase_path("../externals/spirv-headers/include/spirv/1.0/" +
     73                         "extinst.glsl.std.450.grammar.json",
     74                     root_build_dir),
     75     "--opencl-insts-output=" +
     76         rebase_path("$root_out_dir/spirv-tools/opencl.std.insts-1.0.inc",
     77                     root_build_dir),
     78   ]
     79 }
     80 
     81 action("spirv_build_version") {
     82   script = "../externals/spirv-tools/utils/update_build_version.py"
     83   sources = [
     84     "../externals/spirv-tools/CHANGES",
     85   ]
     86   outputs = [
     87     "$root_out_dir/spirv-tools/build.inc",
     88   ]
     89   args = [
     90     rebase_path("../externals/spirv-tools", root_build_dir),
     91     rebase_path("$root_out_dir/spirv-tools/build-version.inc", root_build_dir),
     92   ]
     93 }
     94 
     95 action("spirv_generators") {
     96   script = "../externals/spirv-tools/utils/generate_registry_tables.py"
     97   sources = [
     98     "../externals/spirv-headers/include/spirv/spir-v.xml",
     99   ]
    100   outputs = [
    101     "$root_out_dir/spirv-tools/generators.inc",
    102   ]
    103   args = [
    104     "--xml=" +
    105         rebase_path("../externals/spirv-headers/include/spirv/spir-v.xml",
    106                     root_build_dir),
    107     "--generator-output=" +
    108         rebase_path("$root_out_dir/spirv-tools/generators.inc",
    109                     root_build_dir,
    110                     root_build_dir),
    111   ]
    112 }
    113 
    114 third_party("spirv-tools") {
    115   public_include_dirs = [
    116     "../externals/spirv-tools/include",
    117     "../externals/spirv-tools/source",
    118     "$root_out_dir/spirv-tools",
    119   ]
    120   deps = [
    121     ":spirv_build_version",
    122     ":spirv_core_tables_1.0",
    123     ":spirv_core_tables_1.1",
    124     ":spirv_generators",
    125     ":spirv_glsl_tables",
    126     ":spirv_opencl_tables",
    127     "//third_party/spirv-headers",
    128   ]
    129   sources = [
    130     "../externals/spirv-tools/source/assembly_grammar.cpp",
    131     "../externals/spirv-tools/source/binary.cpp",
    132     "../externals/spirv-tools/source/diagnostic.cpp",
    133     "../externals/spirv-tools/source/disassemble.cpp",
    134     "../externals/spirv-tools/source/ext_inst.cpp",
    135     "../externals/spirv-tools/source/extensions.cpp",
    136     "../externals/spirv-tools/source/libspirv.cpp",
    137     "../externals/spirv-tools/source/message.cpp",
    138     "../externals/spirv-tools/source/name_mapper.cpp",
    139     "../externals/spirv-tools/source/opcode.cpp",
    140     "../externals/spirv-tools/source/operand.cpp",
    141     "../externals/spirv-tools/source/opt/build_module.cpp",
    142     "../externals/spirv-tools/source/opt/def_use_manager.cpp",
    143     "../externals/spirv-tools/source/opt/eliminate_dead_constant_pass.cpp",
    144     "../externals/spirv-tools/source/opt/fold_spec_constant_op_and_composite_pass.cpp",
    145     "../externals/spirv-tools/source/opt/freeze_spec_constant_value_pass.cpp",
    146     "../externals/spirv-tools/source/opt/function.cpp",
    147     "../externals/spirv-tools/source/opt/instruction.cpp",
    148     "../externals/spirv-tools/source/opt/ir_loader.cpp",
    149     "../externals/spirv-tools/source/opt/module.cpp",
    150     "../externals/spirv-tools/source/opt/optimizer.cpp",
    151     "../externals/spirv-tools/source/opt/pass_manager.cpp",
    152     "../externals/spirv-tools/source/opt/set_spec_constant_default_value_pass.cpp",
    153     "../externals/spirv-tools/source/opt/strip_debug_info_pass.cpp",
    154     "../externals/spirv-tools/source/opt/type_manager.cpp",
    155     "../externals/spirv-tools/source/opt/types.cpp",
    156     "../externals/spirv-tools/source/opt/unify_const_pass.cpp",
    157     "../externals/spirv-tools/source/parsed_operand.cpp",
    158     "../externals/spirv-tools/source/print.cpp",
    159     "../externals/spirv-tools/source/software_version.cpp",
    160     "../externals/spirv-tools/source/spirv_endian.cpp",
    161     "../externals/spirv-tools/source/spirv_target_env.cpp",
    162     "../externals/spirv-tools/source/spirv_validator_options.cpp",
    163     "../externals/spirv-tools/source/table.cpp",
    164     "../externals/spirv-tools/source/text.cpp",
    165     "../externals/spirv-tools/source/text_handler.cpp",
    166     "../externals/spirv-tools/source/util/parse_number.cpp",
    167     "../externals/spirv-tools/source/val/basic_block.cpp",
    168     "../externals/spirv-tools/source/val/construct.cpp",
    169     "../externals/spirv-tools/source/val/function.cpp",
    170     "../externals/spirv-tools/source/val/instruction.cpp",
    171     "../externals/spirv-tools/source/val/validation_state.cpp",
    172     "../externals/spirv-tools/source/validate.cpp",
    173     "../externals/spirv-tools/source/validate_cfg.cpp",
    174     "../externals/spirv-tools/source/validate_datarules.cpp",
    175     "../externals/spirv-tools/source/validate_decorations.cpp",
    176     "../externals/spirv-tools/source/validate_id.cpp",
    177     "../externals/spirv-tools/source/validate_instruction.cpp",
    178     "../externals/spirv-tools/source/validate_layout.cpp",
    179     "../externals/spirv-tools/source/validate_type_unique.cpp",
    180   ]
    181 }
    182