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