• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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