blob: 78b3515d082ff491b4ef637bf443b989c10f1aba [file] [log] [blame]
Ryan Harrison29628882020-04-08 20:40:25 +00001# Copyright 2020 The Tint Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15import("//build_overrides/build.gni")
Ryan Harrison0a196c12020-04-17 13:18:20 +000016import("//testing/test.gni")
Ryan Harrisond1cf8a82020-04-15 20:35:38 +000017import("tint_overrides_with_defaults.gni")
Ryan Harrison29628882020-04-08 20:40:25 +000018
Ryan Harrison0a196c12020-04-17 13:18:20 +000019###############################################################################
20# Common - Configs, etc. shared across targets
21###############################################################################
22
Ryan Harrison29628882020-04-08 20:40:25 +000023config("tint_common_config") {
Ryan Harrisonb8f49302020-06-16 17:26:59 +000024 include_dirs = [
25 "${target_gen_dir}",
26 "${tint_root_dir}/",
27 "${tint_spirv_headers_dir}/include",
28 "${tint_spirv_tools_dir}/",
29 "${tint_spirv_tools_dir}/include",
30 ]
31}
32
33config("tint_public_config") {
Ryan Harrison29628882020-04-08 20:40:25 +000034 defines = []
Ryan Harrisond1cf8a82020-04-15 20:35:38 +000035 if (tint_build_spv_reader) {
36 defines += [ "TINT_BUILD_SPV_READER=1" ]
37 } else {
38 defines += [ "TINT_BUILD_SPV_READER=0" ]
39 }
Ryan Harrison2b45a522020-04-15 20:37:02 +000040
41 if (tint_build_spv_writer) {
42 defines += [ "TINT_BUILD_SPV_WRITER=1" ]
43 } else {
44 defines += [ "TINT_BUILD_SPV_WRITER=0" ]
45 }
Ryan Harrison0caab672020-04-15 20:47:55 +000046
47 if (tint_build_wgsl_reader) {
48 defines += [ "TINT_BUILD_WGSL_READER=1" ]
49 } else {
50 defines += [ "TINT_BUILD_WGSL_READER=0" ]
51 }
Ryan Harrison460345d2020-04-15 20:54:10 +000052
53 if (tint_build_wgsl_writer) {
54 defines += [ "TINT_BUILD_WGSL_WRITER=1" ]
55 } else {
56 defines += [ "TINT_BUILD_WGSL_WRITER=0" ]
57 }
Ryan Harrisond34b2102020-04-27 15:31:27 +000058
dan sinclair2a599012020-06-23 17:48:40 +000059 if (tint_build_msl_writer) {
60 defines += [ "TINT_BUILD_MSL_WRITER=1" ]
61 } else {
62 defines += [ "TINT_BUILD_MSL_WRITER=0" ]
63 }
64
Ryan Harrisond34b2102020-04-27 15:31:27 +000065 include_dirs = [
Ryan Harrisond34b2102020-04-27 15:31:27 +000066 "${tint_root_dir}/",
Ryan Harrisonb8f49302020-06-16 17:26:59 +000067 "${tint_root_dir}/include/",
Ryan Harrisond34b2102020-04-27 15:31:27 +000068 ]
69}
70
71###############################################################################
72# Generated - Generated source files
73###############################################################################
74# These are copies of rules from SPIRV-Tools with the names tweaked to be Tint
75# specific. They are needed here because referencing generated files in sibling
76# packages is difficult/impossible in Chromium. Parts of Tint's SPIRV handling
77# code depend on internal parts of SPIRV-Tools. This causes issues because when
78# Tint references the internal headers, since it causes a dependency on these
79# generated files, but they are not visible in the context building Tint. Thus
80# Tint generates its own copy of the generated files. Since they come from the
81# same source of truth, they should not vary.
82
83template("tint_core_tables") {
84 assert(defined(invoker.version), "Need version in $target_name generation.")
85
86 action("tint_core_tables_" + target_name) {
87 script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"
88
89 version = invoker.version
90
91 core_json_file = "${tint_spirv_headers_dir}/include/spirv/$version/spirv.core.grammar.json"
92 core_insts_file = "${target_gen_dir}/core.insts-$version.inc"
93 operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc"
94 debuginfo_insts_file =
95 "${tint_spirv_tools_dir}/source/extinst.debuginfo.grammar.json"
96 cldebuginfo100_insts_file = "${tint_spirv_tools_dir}/source/extinst.opencl.debuginfo.100.grammar.json"
97
98 sources = [
99 cldebuginfo100_insts_file,
100 core_json_file,
101 debuginfo_insts_file,
102 ]
103 outputs = [
104 core_insts_file,
105 operand_kinds_file,
106 ]
107 args = [
108 "--spirv-core-grammar",
109 rebase_path(core_json_file, root_build_dir),
110 "--core-insts-output",
111 rebase_path(core_insts_file, root_build_dir),
112 "--extinst-debuginfo-grammar",
113 rebase_path(debuginfo_insts_file, root_build_dir),
114 "--extinst-cldebuginfo100-grammar",
115 rebase_path(cldebuginfo100_insts_file, root_build_dir),
116 "--operand-kinds-output",
117 rebase_path(operand_kinds_file, root_build_dir),
118 ]
119 }
120}
121
122template("tint_core_enums") {
123 assert(defined(invoker.version), "Need version in $target_name generation.")
124
125 action("tint_core_enums_" + target_name) {
126 script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"
127
128 version = invoker.version
129
130 core_json_file = "${tint_spirv_headers_dir}/include/spirv/$version/spirv.core.grammar.json"
131 debuginfo_insts_file =
132 "${tint_spirv_tools_dir}/source/extinst.debuginfo.grammar.json"
133 cldebuginfo100_insts_file = "${tint_spirv_tools_dir}/source/extinst.opencl.debuginfo.100.grammar.json"
134
135 extension_enum_file = "${target_gen_dir}/extension_enum.inc"
136 extension_map_file = "${target_gen_dir}/enum_string_mapping.inc"
137
138 args = [
139 "--spirv-core-grammar",
140 rebase_path(core_json_file, root_build_dir),
141 "--extinst-debuginfo-grammar",
142 rebase_path(debuginfo_insts_file, root_build_dir),
143 "--extinst-cldebuginfo100-grammar",
144 rebase_path(cldebuginfo100_insts_file, root_build_dir),
145 "--extension-enum-output",
146 rebase_path(extension_enum_file, root_build_dir),
147 "--enum-string-mapping-output",
148 rebase_path(extension_map_file, root_build_dir),
149 ]
150 inputs = [
151 core_json_file,
152 debuginfo_insts_file,
153 cldebuginfo100_insts_file,
154 ]
155 outputs = [
156 extension_enum_file,
157 extension_map_file,
158 ]
159 }
160}
161
162template("tint_language_header") {
163 assert(defined(invoker.name), "Need name in $target_name generation.")
164
165 action("tint_language_header_" + target_name) {
166 script = "${tint_spirv_tools_dir}/utils/generate_language_headers.py"
167
168 name = invoker.name
169 extinst_output_path = "${target_gen_dir}/${name}.h"
170
171 args = [
172 "--extinst-grammar",
173 rebase_path(invoker.grammar_file, root_build_dir),
174 "--extinst-output-path",
175 rebase_path(extinst_output_path, root_build_dir),
176 ]
177 inputs = [ invoker.grammar_file ]
178 outputs = [ "${extinst_output_path}" ]
179 }
180}
181
182tint_core_tables("unified1") {
183 version = "unified1"
184}
185
186tint_core_enums("unified1") {
187 version = "unified1"
188}
189
190tint_language_header("debuginfo") {
191 name = "DebugInfo"
192 grammar_file = "${tint_spirv_tools_dir}/source/extinst.debuginfo.grammar.json"
193}
194
195tint_language_header("cldebuginfo100") {
196 name = "OpenCLDebugInfo100"
197 grammar_file =
198 "${tint_spirv_tools_dir}/source/extinst.opencl.debuginfo.100.grammar.json"
Ryan Harrison29628882020-04-08 20:40:25 +0000199}
200
Ryan Harrison0a196c12020-04-17 13:18:20 +0000201###############################################################################
202# Library - Tint core and optional modules of libtint
203###############################################################################
204# libtint source sets are divided into a non-optional core in :libtint_core_src
205# and optional :libtint_*_src subsets, because ninja does not like having
206# multiple source files with the same name, like function.cc, in the same
207# source set
208# target.
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000209#
Ryan Harrison0a196c12020-04-17 13:18:20 +0000210# Targets that want to use tint as a library should depend on ":libtint" and
211# use the build flags to control what is included, instead of trying to specify
212# the subsets that they want.
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000213
Ryan Harrison0a196c12020-04-17 13:18:20 +0000214source_set("libtint_core_src") {
Ryan Harrison29628882020-04-08 20:40:25 +0000215 sources = [
216 "src/ast/array_accessor_expression.cc",
217 "src/ast/array_accessor_expression.h",
218 "src/ast/as_expression.cc",
219 "src/ast/as_expression.h",
220 "src/ast/assignment_statement.cc",
221 "src/ast/assignment_statement.h",
222 "src/ast/binary_expression.cc",
223 "src/ast/binary_expression.h",
224 "src/ast/binding_decoration.cc",
225 "src/ast/binding_decoration.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000226 "src/ast/bool_literal.cc",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000227 "src/ast/bool_literal.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000228 "src/ast/break_statement.cc",
229 "src/ast/break_statement.h",
230 "src/ast/builtin.cc",
231 "src/ast/builtin.h",
232 "src/ast/builtin_decoration.cc",
233 "src/ast/builtin_decoration.h",
234 "src/ast/call_expression.cc",
235 "src/ast/call_expression.h",
236 "src/ast/case_statement.cc",
237 "src/ast/case_statement.h",
238 "src/ast/cast_expression.cc",
239 "src/ast/cast_expression.h",
240 "src/ast/constructor_expression.cc",
241 "src/ast/constructor_expression.h",
242 "src/ast/continue_statement.cc",
243 "src/ast/continue_statement.h",
244 "src/ast/decorated_variable.cc",
245 "src/ast/decorated_variable.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000246 "src/ast/else_statement.cc",
247 "src/ast/else_statement.h",
248 "src/ast/entry_point.cc",
249 "src/ast/entry_point.h",
250 "src/ast/expression.cc",
251 "src/ast/expression.h",
252 "src/ast/fallthrough_statement.cc",
253 "src/ast/fallthrough_statement.h",
254 "src/ast/float_literal.cc",
255 "src/ast/float_literal.h",
256 "src/ast/function.cc",
257 "src/ast/function.h",
258 "src/ast/identifier_expression.cc",
259 "src/ast/identifier_expression.h",
260 "src/ast/if_statement.cc",
261 "src/ast/if_statement.h",
262 "src/ast/import.cc",
263 "src/ast/import.h",
dan sinclaire009c202020-06-02 20:11:54 +0000264 "src/ast/int_literal.cc",
265 "src/ast/int_literal.h",
dan sinclair3e7dc822020-06-04 17:05:35 +0000266 "src/ast/intrinsic.cc",
267 "src/ast/intrinsic.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000268 "src/ast/kill_statement.cc",
269 "src/ast/kill_statement.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000270 "src/ast/literal.cc",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000271 "src/ast/literal.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000272 "src/ast/location_decoration.cc",
273 "src/ast/location_decoration.h",
274 "src/ast/loop_statement.cc",
275 "src/ast/loop_statement.h",
276 "src/ast/member_accessor_expression.cc",
277 "src/ast/member_accessor_expression.h",
278 "src/ast/module.cc",
279 "src/ast/module.h",
280 "src/ast/node.cc",
281 "src/ast/node.h",
dan sinclair2287f332020-05-05 14:21:19 +0000282 "src/ast/null_literal.cc",
283 "src/ast/null_literal.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000284 "src/ast/pipeline_stage.cc",
285 "src/ast/pipeline_stage.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000286 "src/ast/return_statement.cc",
287 "src/ast/return_statement.h",
288 "src/ast/scalar_constructor_expression.cc",
289 "src/ast/scalar_constructor_expression.h",
290 "src/ast/set_decoration.cc",
291 "src/ast/set_decoration.h",
dan sinclairc6f29472020-06-02 20:11:44 +0000292 "src/ast/sint_literal.cc",
293 "src/ast/sint_literal.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000294 "src/ast/statement.cc",
295 "src/ast/statement.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000296 "src/ast/storage_class.cc",
297 "src/ast/storage_class.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000298 "src/ast/struct.cc",
299 "src/ast/struct.h",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000300 "src/ast/struct_decoration.cc",
301 "src/ast/struct_decoration.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000302 "src/ast/struct_member.cc",
303 "src/ast/struct_member.h",
304 "src/ast/struct_member_decoration.cc",
305 "src/ast/struct_member_decoration.h",
306 "src/ast/struct_member_offset_decoration.cc",
307 "src/ast/struct_member_offset_decoration.h",
308 "src/ast/switch_statement.cc",
309 "src/ast/switch_statement.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000310 "src/ast/type/alias_type.cc",
311 "src/ast/type/alias_type.h",
312 "src/ast/type/array_type.cc",
313 "src/ast/type/array_type.h",
314 "src/ast/type/bool_type.cc",
315 "src/ast/type/bool_type.h",
316 "src/ast/type/f32_type.cc",
317 "src/ast/type/f32_type.h",
318 "src/ast/type/i32_type.cc",
319 "src/ast/type/i32_type.h",
320 "src/ast/type/matrix_type.cc",
321 "src/ast/type/matrix_type.h",
322 "src/ast/type/pointer_type.cc",
323 "src/ast/type/pointer_type.h",
324 "src/ast/type/struct_type.cc",
325 "src/ast/type/struct_type.h",
326 "src/ast/type/type.cc",
327 "src/ast/type/type.h",
328 "src/ast/type/u32_type.cc",
329 "src/ast/type/u32_type.h",
330 "src/ast/type/vector_type.cc",
331 "src/ast/type/vector_type.h",
332 "src/ast/type/void_type.cc",
333 "src/ast/type/void_type.h",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000334 "src/ast/type_constructor_expression.cc",
335 "src/ast/type_constructor_expression.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000336 "src/ast/uint_literal.cc",
337 "src/ast/uint_literal.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000338 "src/ast/unary_op.cc",
339 "src/ast/unary_op.h",
340 "src/ast/unary_op_expression.cc",
341 "src/ast/unary_op_expression.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000342 "src/ast/variable.cc",
343 "src/ast/variable.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000344 "src/ast/variable_decl_statement.cc",
345 "src/ast/variable_decl_statement.h",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000346 "src/ast/variable_decoration.cc",
347 "src/ast/variable_decoration.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000348 "src/context.cc",
Ryan Harrison4d32be42020-04-09 18:52:06 +0000349 "src/context.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000350 "src/reader/reader.cc",
351 "src/reader/reader.h",
352 "src/scope_stack.h",
353 "src/source.h",
354 "src/type_determiner.cc",
355 "src/type_determiner.h",
356 "src/type_manager.cc",
357 "src/type_manager.h",
358 "src/validator.cc",
359 "src/validator.h",
360 "src/validator_impl.cc",
361 "src/validator_impl.h",
dan sinclair2a599012020-06-23 17:48:40 +0000362 "src/writer/text.cc",
363 "src/writer/text.h",
364 "src/writer/text_generator.cc",
365 "src/writer/text_generator.h",
Ryan Harrison29628882020-04-08 20:40:25 +0000366 "src/writer/writer.cc",
367 "src/writer/writer.h",
368 ]
369
Ryan Harrisond34b2102020-04-27 15:31:27 +0000370 deps = [
371 ":tint_core_enums_unified1",
372 ":tint_core_tables_unified1",
373 ":tint_language_header_cldebuginfo100",
374 ":tint_language_header_debuginfo",
375 ]
376
Ryan Harrison4d32be42020-04-09 18:52:06 +0000377 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000378 public_configs = [ ":tint_public_config" ]
Ryan Harrison4d32be42020-04-09 18:52:06 +0000379
Ryan Harrison29628882020-04-08 20:40:25 +0000380 if (build_with_chromium) {
381 configs -= [ "//build/config/compiler:chromium_code" ]
382 configs += [ "//build/config/compiler:no_chromium_code" ]
383 }
Ryan Harrison29628882020-04-08 20:40:25 +0000384}
385
Ryan Harrison0a196c12020-04-17 13:18:20 +0000386source_set("libtint_spv_reader_src") {
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000387 sources = [
David Netoa92c1142020-04-27 20:14:08 +0000388 "src/reader/spirv/construct.cc",
Ryan Harrison4484fe12020-05-14 14:47:51 +0000389 "src/reader/spirv/construct.h",
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000390 "src/reader/spirv/enum_converter.cc",
391 "src/reader/spirv/enum_converter.h",
392 "src/reader/spirv/fail_stream.h",
393 "src/reader/spirv/function.cc",
394 "src/reader/spirv/function.h",
395 "src/reader/spirv/namer.cc",
396 "src/reader/spirv/namer.h",
397 "src/reader/spirv/parser.cc",
398 "src/reader/spirv/parser.h",
399 "src/reader/spirv/parser_impl.cc",
400 "src/reader/spirv/parser_impl.h",
401 ]
402
403 deps = [
Ryan Harrisond34b2102020-04-27 15:31:27 +0000404 ":tint_core_enums_unified1",
405 ":tint_core_tables_unified1",
406 ":tint_language_header_cldebuginfo100",
407 ":tint_language_header_debuginfo",
Ryan Harrison1f1f08f2020-05-07 17:17:15 +0000408 "${tint_spirv_tools_dir}/:spvtools",
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000409 "${tint_spirv_tools_dir}/:spvtools_opt",
410 "${tint_spirv_tools_dir}/:spvtools_val",
411 ]
412
Ryan Harrisond34b2102020-04-27 15:31:27 +0000413 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000414 public_configs = [ ":tint_public_config" ]
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000415
416 if (build_with_chromium) {
417 configs -= [ "//build/config/compiler:chromium_code" ]
418 configs += [ "//build/config/compiler:no_chromium_code" ]
419 }
420}
421
Ryan Harrison0a196c12020-04-17 13:18:20 +0000422source_set("libtint_spv_writer_src") {
Ryan Harrison2b45a522020-04-15 20:37:02 +0000423 sources = [
424 "src/writer/spirv/binary_writer.cc",
425 "src/writer/spirv/binary_writer.h",
426 "src/writer/spirv/builder.cc",
427 "src/writer/spirv/builder.h",
428 "src/writer/spirv/function.cc",
429 "src/writer/spirv/function.h",
430 "src/writer/spirv/generator.cc",
431 "src/writer/spirv/generator.h",
432 "src/writer/spirv/instruction.cc",
433 "src/writer/spirv/instruction.h",
434 "src/writer/spirv/operand.cc",
435 "src/writer/spirv/operand.h",
436 ]
437
Ryan Harrisond34b2102020-04-27 15:31:27 +0000438 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000439 public_configs = [ ":tint_public_config" ]
Ryan Harrison2b45a522020-04-15 20:37:02 +0000440
441 if (build_with_chromium) {
442 configs -= [ "//build/config/compiler:chromium_code" ]
443 configs += [ "//build/config/compiler:no_chromium_code" ]
444 }
445}
446
Ryan Harrison0a196c12020-04-17 13:18:20 +0000447source_set("libtint_wgsl_reader_src") {
Ryan Harrison0caab672020-04-15 20:47:55 +0000448 sources = [
449 "src/reader/wgsl/lexer.cc",
450 "src/reader/wgsl/lexer.h",
451 "src/reader/wgsl/parser.cc",
452 "src/reader/wgsl/parser.h",
453 "src/reader/wgsl/parser_impl.cc",
454 "src/reader/wgsl/parser_impl.h",
455 "src/reader/wgsl/token.cc",
456 "src/reader/wgsl/token.h",
457 ]
458
459 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000460 public_configs = [ ":tint_public_config" ]
Ryan Harrison0caab672020-04-15 20:47:55 +0000461
462 if (build_with_chromium) {
463 configs -= [ "//build/config/compiler:chromium_code" ]
464 configs += [ "//build/config/compiler:no_chromium_code" ]
465 }
466}
467
Ryan Harrison0a196c12020-04-17 13:18:20 +0000468source_set("libtint_wgsl_writer_src") {
Ryan Harrison460345d2020-04-15 20:54:10 +0000469 sources = [
470 "src/writer/wgsl/generator.cc",
471 "src/writer/wgsl/generator.h",
472 "src/writer/wgsl/generator_impl.cc",
473 "src/writer/wgsl/generator_impl.h",
474 ]
475
476 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000477 public_configs = [ ":tint_public_config" ]
Ryan Harrison460345d2020-04-15 20:54:10 +0000478
479 if (build_with_chromium) {
480 configs -= [ "//build/config/compiler:chromium_code" ]
481 configs += [ "//build/config/compiler:no_chromium_code" ]
482 }
483}
484
dan sinclair2a599012020-06-23 17:48:40 +0000485source_set("libtint_msl_writer_src") {
486 sources = [
487 "src/writer/msl/generator.cc",
488 "src/writer/msl/generator.h",
489 "src/writer/msl/generator_impl.cc",
490 "src/wrtier/msl/generator_impl.h",
491 ]
492
493 configs += [ ":tint_common_config" ]
494 public_configs += [ ":tint_public_config" ]
495
496 if (build_with_chromium) {
497 configs -= [ "//build/config/compiler:chromium_code" ]
498 configs += [ "//build/config/compiler:no_chromium_code" ]
499 }
500}
501
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000502source_set("libtint") {
Ryan Harrison0a196c12020-04-17 13:18:20 +0000503 deps = [ ":libtint_core_src" ]
Ryan Harrison0caab672020-04-15 20:47:55 +0000504
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000505 if (tint_build_spv_reader) {
Ryan Harrison0a196c12020-04-17 13:18:20 +0000506 deps += [ ":libtint_spv_reader_src" ]
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000507 }
508
Ryan Harrison2b45a522020-04-15 20:37:02 +0000509 if (tint_build_spv_writer) {
Ryan Harrison0a196c12020-04-17 13:18:20 +0000510 deps += [ ":libtint_spv_writer_src" ]
Ryan Harrison2b45a522020-04-15 20:37:02 +0000511 }
512
Ryan Harrison0caab672020-04-15 20:47:55 +0000513 if (tint_build_wgsl_reader) {
Ryan Harrison0a196c12020-04-17 13:18:20 +0000514 deps += [ ":libtint_wgsl_reader_src" ]
Ryan Harrison0caab672020-04-15 20:47:55 +0000515 }
516
Ryan Harrison460345d2020-04-15 20:54:10 +0000517 if (tint_build_wgsl_writer) {
Ryan Harrison0a196c12020-04-17 13:18:20 +0000518 deps += [ ":libtint_wgsl_writer_src" ]
Ryan Harrison460345d2020-04-15 20:54:10 +0000519 }
520
dan sinclair2a599012020-06-23 17:48:40 +0000521 if (tint_build_msl_writer) {
522 deps += [ ":libtint_msl_writer_src" ]
523 }
524
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000525 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000526 public_configs = [ ":tint_public_config" ]
Ryan Harrisond1cf8a82020-04-15 20:35:38 +0000527
528 if (build_with_chromium) {
529 configs -= [ "//build/config/compiler:chromium_code" ]
530 configs += [ "//build/config/compiler:no_chromium_code" ]
531 }
532}
533
Ryan Harrison0a196c12020-04-17 13:18:20 +0000534###############################################################################
535# Gtest Gmock - Handle building inside and outside of Chromium.
536###############################################################################
537# When building outside of Chromium we need to define our own targets for GTest
538# and GMock. However when compiling inside of Chromium we need to reuse the
539# existing targets, both because Chromium has a special harness for swarming
540# and because otherwise the "gn check" fails.
541
542if (!build_with_chromium) {
543 # When we aren't in Chromium we define out own targets based on the location
544 # of the googletest repo.
545 config("gtest_config") {
546 include_dirs = [
547 "${tint_googletest_dir}/googletest",
548 "${tint_googletest_dir}/googletest/include",
549 ]
550 }
551 static_library("gtest") {
552 testonly = true
553 sources = [ "${tint_googletest_dir}/googletest/src/gtest-all.cc" ]
554 public_configs = [ ":gtest_config" ]
555 }
556
557 config("gmock_config") {
558 include_dirs = [
559 "${tint_googletest_dir}/googlemock",
560 "${tint_googletest_dir}/googlemock/include",
561 "${tint_googletest_dir}/googletest/include",
562 ]
563 }
564
565 static_library("gmock") {
566 testonly = true
567 sources = [
568 "${tint_googletest_dir}/googlemock/src/gmock-all.cc",
569 "${tint_googletest_dir}/googlemock/src/gmock_main.cc",
570 ]
571 public_configs = [ ":gmock_config" ]
572 }
573
574 group("gmock_and_gtest") {
575 testonly = true
576 public_deps = [
577 ":gmock",
578 ":gtest",
579 ]
580 }
581} else {
582 # When we are in Chromium we reuse its targets, and also add some deps that
583 # are needed to launch the test in swarming mode.
584 group("gmock_and_gtest") {
585 testonly = true
586 public_deps = [
587 "//base",
588 "//base/test:test_support",
589 "//testing/gmock",
590 "//testing/gtest",
591 ]
592 }
593}
594
595###############################################################################
596# Tests - For libtint core and optional modules
597###############################################################################
598config("tint_unittests_config") {
599 include_dirs = [
600 "${tint_googletest_dir}/googlemock/include",
601 "${tint_googletest_dir}/googletest/include",
602 ]
603}
604
605source_set("tint_unittests_core_src") {
606 sources = [
607 "src/ast/array_accessor_expression_test.cc",
608 "src/ast/as_expression_test.cc",
609 "src/ast/assignment_statement_test.cc",
610 "src/ast/binary_expression_test.cc",
611 "src/ast/binding_decoration_test.cc",
612 "src/ast/bool_literal_test.cc",
613 "src/ast/break_statement_test.cc",
614 "src/ast/builtin_decoration_test.cc",
615 "src/ast/call_expression_test.cc",
616 "src/ast/case_statement_test.cc",
617 "src/ast/cast_expression_test.cc",
618 "src/ast/continue_statement_test.cc",
619 "src/ast/decorated_variable_test.cc",
620 "src/ast/else_statement_test.cc",
621 "src/ast/entry_point_test.cc",
dan sinclair21244882020-04-22 00:23:49 +0000622 "src/ast/expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000623 "src/ast/fallthrough_statement_test.cc",
624 "src/ast/float_literal_test.cc",
625 "src/ast/function_test.cc",
626 "src/ast/identifier_expression_test.cc",
627 "src/ast/if_statement_test.cc",
628 "src/ast/import_test.cc",
dan sinclaire009c202020-06-02 20:11:54 +0000629 "src/ast/int_literal_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000630 "src/ast/kill_statement_test.cc",
631 "src/ast/location_decoration_test.cc",
632 "src/ast/loop_statement_test.cc",
633 "src/ast/member_accessor_expression_test.cc",
634 "src/ast/module_test.cc",
dan sinclair2287f332020-05-05 14:21:19 +0000635 "src/ast/null_literal_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000636 "src/ast/return_statement_test.cc",
637 "src/ast/scalar_constructor_expression_test.cc",
638 "src/ast/set_decoration_test.cc",
dan sinclairc6f29472020-06-02 20:11:44 +0000639 "src/ast/sint_literal_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000640 "src/ast/struct_member_offset_decoration_test.cc",
641 "src/ast/struct_member_test.cc",
642 "src/ast/struct_test.cc",
643 "src/ast/switch_statement_test.cc",
644 "src/ast/type/alias_type_test.cc",
645 "src/ast/type/array_type_test.cc",
646 "src/ast/type/bool_type_test.cc",
647 "src/ast/type/f32_type_test.cc",
648 "src/ast/type/i32_type_test.cc",
649 "src/ast/type/matrix_type_test.cc",
650 "src/ast/type/pointer_type_test.cc",
651 "src/ast/type/struct_type_test.cc",
652 "src/ast/type/u32_type_test.cc",
653 "src/ast/type/vector_type_test.cc",
654 "src/ast/type_constructor_expression_test.cc",
655 "src/ast/uint_literal_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000656 "src/ast/unary_op_expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000657 "src/ast/variable_decl_statement_test.cc",
658 "src/ast/variable_test.cc",
659 "src/scope_stack_test.cc",
660 "src/type_determiner_test.cc",
661 "src/type_manager_test.cc",
662 "src/validator_impl_import_test.cc",
663 ]
664
665 configs += [
666 ":tint_common_config",
667 ":tint_unittests_config",
668 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000669 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000670
671 if (build_with_chromium) {
672 configs -= [ "//build/config/compiler:chromium_code" ]
673 configs += [ "//build/config/compiler:no_chromium_code" ]
674 }
675}
676
677source_set("tint_unittests_spv_reader_src") {
678 sources = [
679 "src/reader/spirv/enum_converter_test.cc",
680 "src/reader/spirv/fail_stream_test.cc",
681 "src/reader/spirv/function_arithmetic_test.cc",
David Neto9cba3e12020-04-21 17:44:44 +0000682 "src/reader/spirv/function_bit_test.cc",
David Neto571eea52020-04-21 17:44:44 +0000683 "src/reader/spirv/function_cfg_test.cc",
David Netoc7d1ac32020-06-12 15:09:56 +0000684 "src/reader/spirv/function_composite_test.cc",
David Neto89af8a22020-04-20 21:06:43 +0000685 "src/reader/spirv/function_conversion_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000686 "src/reader/spirv/function_decl_test.cc",
David Neto0335adb2020-06-12 15:09:14 +0000687 "src/reader/spirv/function_glsl_std_450_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000688 "src/reader/spirv/function_logical_test.cc",
689 "src/reader/spirv/function_memory_test.cc",
David Netofd3700c2020-06-22 20:48:59 +0000690 "src/reader/spirv/function_misc_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000691 "src/reader/spirv/function_var_test.cc",
692 "src/reader/spirv/namer_test.cc",
693 "src/reader/spirv/parser_impl_convert_member_decoration_test.cc",
694 "src/reader/spirv/parser_impl_convert_type_test.cc",
695 "src/reader/spirv/parser_impl_entry_point_test.cc",
696 "src/reader/spirv/parser_impl_function_decl_test.cc",
697 "src/reader/spirv/parser_impl_get_decorations_test.cc",
698 "src/reader/spirv/parser_impl_import_test.cc",
699 "src/reader/spirv/parser_impl_module_var_test.cc",
700 "src/reader/spirv/parser_impl_named_types_test.cc",
701 "src/reader/spirv/parser_impl_test.cc",
702 "src/reader/spirv/parser_impl_user_name_test.cc",
703 "src/reader/spirv/parser_test.cc",
704 "src/reader/spirv/spirv_tools_helpers_test.cc",
705 "src/reader/spirv/spirv_tools_helpers_test.h",
706 ]
707
Ryan Harrison0a196c12020-04-17 13:18:20 +0000708 configs += [
Ryan Harrison0a196c12020-04-17 13:18:20 +0000709 ":tint_common_config",
710 ":tint_unittests_config",
711 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000712 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000713
714 if (build_with_chromium) {
715 configs -= [ "//build/config/compiler:chromium_code" ]
716 configs += [ "//build/config/compiler:no_chromium_code" ]
717 }
718}
719
720source_set("tint_unittests_spv_writer_src") {
721 sources = [
722 "src/writer/spirv/binary_writer_test.cc",
dan sinclair20077b72020-04-22 14:07:05 +0000723 "src/writer/spirv/builder_accessor_expression_test.cc",
dan sinclair8b48b262020-06-18 18:02:46 +0000724 "src/writer/spirv/builder_as_expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000725 "src/writer/spirv/builder_assign_test.cc",
726 "src/writer/spirv/builder_binary_expression_test.cc",
dan sinclairfd5d4ca2020-04-20 15:46:18 +0000727 "src/writer/spirv/builder_call_test.cc",
dan sinclairabd472e2020-05-01 19:05:55 +0000728 "src/writer/spirv/builder_cast_expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000729 "src/writer/spirv/builder_constructor_expression_test.cc",
730 "src/writer/spirv/builder_entry_point_test.cc",
731 "src/writer/spirv/builder_function_test.cc",
732 "src/writer/spirv/builder_function_variable_test.cc",
733 "src/writer/spirv/builder_global_variable_test.cc",
734 "src/writer/spirv/builder_ident_expression_test.cc",
735 "src/writer/spirv/builder_if_test.cc",
dan sinclair3e7dc822020-06-04 17:05:35 +0000736 "src/writer/spirv/builder_intrinsic_test.cc",
dan sinclair59fc0262020-06-01 13:44:43 +0000737 "src/writer/spirv/builder_kill_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000738 "src/writer/spirv/builder_literal_test.cc",
dan sinclair6866cb72020-04-20 14:07:29 +0000739 "src/writer/spirv/builder_loop_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000740 "src/writer/spirv/builder_return_test.cc",
dan sinclair916b4082020-06-01 18:56:34 +0000741 "src/writer/spirv/builder_switch_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000742 "src/writer/spirv/builder_test.cc",
743 "src/writer/spirv/builder_type_test.cc",
dan sinclairc9308dc2020-04-22 00:24:11 +0000744 "src/writer/spirv/builder_unary_op_expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000745 "src/writer/spirv/instruction_test.cc",
746 "src/writer/spirv/operand_test.cc",
747 "src/writer/spirv/spv_dump.cc",
748 "src/writer/spirv/spv_dump.h",
749 ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000750
751 configs += [
Ryan Harrison0a196c12020-04-17 13:18:20 +0000752 ":tint_common_config",
753 ":tint_unittests_config",
754 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000755 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000756
757 if (build_with_chromium) {
758 configs -= [ "//build/config/compiler:chromium_code" ]
759 configs += [ "//build/config/compiler:no_chromium_code" ]
760 }
761}
762
763source_set("tint_unittests_wgsl_reader_src") {
764 sources = [
765 "src/reader/wgsl/lexer_test.cc",
766 "src/reader/wgsl/parser_impl_additive_expression_test.cc",
767 "src/reader/wgsl/parser_impl_and_expression_test.cc",
768 "src/reader/wgsl/parser_impl_argument_expression_list_test.cc",
769 "src/reader/wgsl/parser_impl_assignment_stmt_test.cc",
770 "src/reader/wgsl/parser_impl_body_stmt_test.cc",
771 "src/reader/wgsl/parser_impl_break_stmt_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000772 "src/reader/wgsl/parser_impl_case_body_test.cc",
773 "src/reader/wgsl/parser_impl_const_expr_test.cc",
774 "src/reader/wgsl/parser_impl_const_literal_test.cc",
775 "src/reader/wgsl/parser_impl_continue_stmt_test.cc",
776 "src/reader/wgsl/parser_impl_continuing_stmt_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000777 "src/reader/wgsl/parser_impl_else_stmt_test.cc",
778 "src/reader/wgsl/parser_impl_elseif_stmt_test.cc",
779 "src/reader/wgsl/parser_impl_entry_point_decl_test.cc",
780 "src/reader/wgsl/parser_impl_equality_expression_test.cc",
781 "src/reader/wgsl/parser_impl_exclusive_or_expression_test.cc",
782 "src/reader/wgsl/parser_impl_function_decl_test.cc",
783 "src/reader/wgsl/parser_impl_function_header_test.cc",
784 "src/reader/wgsl/parser_impl_function_type_decl_test.cc",
785 "src/reader/wgsl/parser_impl_global_constant_decl_test.cc",
786 "src/reader/wgsl/parser_impl_global_decl_test.cc",
787 "src/reader/wgsl/parser_impl_global_variable_decl_test.cc",
788 "src/reader/wgsl/parser_impl_if_stmt_test.cc",
789 "src/reader/wgsl/parser_impl_import_decl_test.cc",
790 "src/reader/wgsl/parser_impl_inclusive_or_expression_test.cc",
791 "src/reader/wgsl/parser_impl_logical_and_expression_test.cc",
792 "src/reader/wgsl/parser_impl_logical_or_expression_test.cc",
793 "src/reader/wgsl/parser_impl_loop_stmt_test.cc",
794 "src/reader/wgsl/parser_impl_multiplicative_expression_test.cc",
795 "src/reader/wgsl/parser_impl_param_list_test.cc",
796 "src/reader/wgsl/parser_impl_paren_rhs_stmt_test.cc",
797 "src/reader/wgsl/parser_impl_pipeline_stage_test.cc",
798 "src/reader/wgsl/parser_impl_postfix_expression_test.cc",
799 "src/reader/wgsl/parser_impl_primary_expression_test.cc",
800 "src/reader/wgsl/parser_impl_relational_expression_test.cc",
801 "src/reader/wgsl/parser_impl_shift_expression_test.cc",
802 "src/reader/wgsl/parser_impl_statement_test.cc",
803 "src/reader/wgsl/parser_impl_statements_test.cc",
804 "src/reader/wgsl/parser_impl_storage_class_test.cc",
805 "src/reader/wgsl/parser_impl_struct_body_decl_test.cc",
806 "src/reader/wgsl/parser_impl_struct_decl_test.cc",
807 "src/reader/wgsl/parser_impl_struct_decoration_decl_test.cc",
808 "src/reader/wgsl/parser_impl_struct_decoration_test.cc",
809 "src/reader/wgsl/parser_impl_struct_member_decoration_decl_test.cc",
810 "src/reader/wgsl/parser_impl_struct_member_decoration_test.cc",
811 "src/reader/wgsl/parser_impl_struct_member_test.cc",
812 "src/reader/wgsl/parser_impl_switch_body_test.cc",
813 "src/reader/wgsl/parser_impl_switch_stmt_test.cc",
814 "src/reader/wgsl/parser_impl_test.cc",
815 "src/reader/wgsl/parser_impl_test_helper.cc",
816 "src/reader/wgsl/parser_impl_test_helper.h",
817 "src/reader/wgsl/parser_impl_type_alias_test.cc",
818 "src/reader/wgsl/parser_impl_type_decl_test.cc",
819 "src/reader/wgsl/parser_impl_unary_expression_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000820 "src/reader/wgsl/parser_impl_variable_decl_test.cc",
821 "src/reader/wgsl/parser_impl_variable_decoration_list_test.cc",
822 "src/reader/wgsl/parser_impl_variable_decoration_test.cc",
823 "src/reader/wgsl/parser_impl_variable_ident_decl_test.cc",
824 "src/reader/wgsl/parser_impl_variable_stmt_test.cc",
825 "src/reader/wgsl/parser_impl_variable_storage_decoration_test.cc",
826 "src/reader/wgsl/parser_test.cc",
827 "src/reader/wgsl/token_test.cc",
828 ]
829
830 configs += [
831 ":tint_common_config",
832 ":tint_unittests_config",
833 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000834 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000835
836 if (build_with_chromium) {
837 configs -= [ "//build/config/compiler:chromium_code" ]
838 configs += [ "//build/config/compiler:no_chromium_code" ]
839 }
840}
841
842source_set("tint_unittests_wgsl_writer_src") {
843 sources = [
844 "src/writer/wgsl/generator_impl_alias_type_test.cc",
845 "src/writer/wgsl/generator_impl_array_accessor_test.cc",
846 "src/writer/wgsl/generator_impl_as_test.cc",
847 "src/writer/wgsl/generator_impl_assign_test.cc",
dan sinclair7f269e52020-06-23 18:22:05 +0000848 "src/writer/wgsl/generator_impl_binary_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000849 "src/writer/wgsl/generator_impl_break_test.cc",
850 "src/writer/wgsl/generator_impl_call_test.cc",
851 "src/writer/wgsl/generator_impl_case_test.cc",
852 "src/writer/wgsl/generator_impl_cast_test.cc",
853 "src/writer/wgsl/generator_impl_constructor_test.cc",
854 "src/writer/wgsl/generator_impl_continue_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000855 "src/writer/wgsl/generator_impl_entry_point_test.cc",
856 "src/writer/wgsl/generator_impl_fallthrough_test.cc",
857 "src/writer/wgsl/generator_impl_function_test.cc",
858 "src/writer/wgsl/generator_impl_identifier_test.cc",
859 "src/writer/wgsl/generator_impl_if_test.cc",
860 "src/writer/wgsl/generator_impl_import_test.cc",
861 "src/writer/wgsl/generator_impl_kill_test.cc",
862 "src/writer/wgsl/generator_impl_loop_test.cc",
863 "src/writer/wgsl/generator_impl_member_accessor_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000864 "src/writer/wgsl/generator_impl_return_test.cc",
865 "src/writer/wgsl/generator_impl_switch_test.cc",
866 "src/writer/wgsl/generator_impl_test.cc",
867 "src/writer/wgsl/generator_impl_type_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000868 "src/writer/wgsl/generator_impl_unary_op_test.cc",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000869 "src/writer/wgsl/generator_impl_variable_decl_statement_test.cc",
870 "src/writer/wgsl/generator_impl_variable_test.cc",
871 ]
872
873 configs += [
874 ":tint_common_config",
875 ":tint_unittests_config",
876 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000877 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000878
879 if (build_with_chromium) {
880 configs -= [ "//build/config/compiler:chromium_code" ]
881 configs += [ "//build/config/compiler:no_chromium_code" ]
882 }
883}
884
dan sinclair2a599012020-06-23 17:48:40 +0000885source_set("tint_unittests_msl_writer_src") {
dan sinclair5dd37b22020-06-23 17:48:53 +0000886 sources = [
dan sinclaird4eafb62020-06-26 21:27:59 +0000887 "src/writer/msl/generator_impl_alias_type_test.cc",
dan sinclairdc841f12020-06-26 21:27:59 +0000888 "src/writer/msl/generator_impl_array_accessor_test.cc",
dan sinclair3dbc8372020-06-26 21:27:59 +0000889 "src/writer/msl/generator_impl_as_test.cc",
dan sinclair70c605f2020-06-23 17:54:33 +0000890 "src/writer/msl/generator_impl_assign_test.cc",
dan sinclair7f269e52020-06-23 18:22:05 +0000891 "src/writer/msl/generator_impl_binary_test.cc",
dan sinclair57b3b1d2020-06-29 21:17:54 +0000892 "src/writer/msl/generator_impl_break_test.cc",
dan sinclair53b32832020-06-30 21:33:20 +0000893 "src/writer/msl/generator_impl_case_test.cc",
dan sinclairb1de8432020-06-26 21:27:59 +0000894 "src/writer/msl/generator_impl_cast_test.cc",
dan sinclair6366f682020-06-23 18:22:21 +0000895 "src/writer/msl/generator_impl_constructor_test.cc",
dan sinclair57b3b1d2020-06-29 21:17:54 +0000896 "src/writer/msl/generator_impl_continue_test.cc",
dan sinclaire66d6a62020-06-23 17:54:25 +0000897 "src/writer/msl/generator_impl_function_test.cc",
dan sinclair646fb232020-06-23 17:49:08 +0000898 "src/writer/msl/generator_impl_identifier_test.cc",
dan sinclair28d4a942020-06-26 21:27:59 +0000899 "src/writer/msl/generator_impl_if_test.cc",
dan sinclair24a46e82020-06-26 21:27:59 +0000900 "src/writer/msl/generator_impl_kill_test.cc",
dan sinclaire88c0f62020-06-30 17:40:28 +0000901 "src/writer/msl/generator_impl_loop_test.cc",
dan sinclairfa1659a2020-06-29 21:17:44 +0000902 "src/writer/msl/generator_impl_member_accessor_test.cc",
dan sinclair8cd87512020-06-23 17:49:00 +0000903 "src/writer/msl/generator_impl_return_test.cc",
dan sinclair53b32832020-06-30 21:33:20 +0000904 "src/writer/msl/generator_impl_switch_test.cc",
dan sinclair5dd37b22020-06-23 17:48:53 +0000905 "src/writer/msl/generator_impl_test.cc",
906 "src/writer/msl/generator_impl_type_test.cc",
dan sinclaird1bf87b2020-06-26 21:27:59 +0000907 "src/writer/msl/generator_impl_unary_op_test.cc",
dan sinclair5dd37b22020-06-23 17:48:53 +0000908 ]
dan sinclair2a599012020-06-23 17:48:40 +0000909
910 configs += [
911 ":tint_common_config",
912 ":tint_unittests_config",
913 ]
914 public_configs = [ ":tint_public_config" ]
915
916 if (build_with_chromium) {
917 configs -= [ "//build/config/compiler:chromium_code" ]
918 configs += [ "//build/config/compiler:no_chromium_code" ]
919 }
920}
921
Ryan Harrison0a196c12020-04-17 13:18:20 +0000922source_set("tint_unittests_src") {
923 deps = [ ":tint_unittests_core_src" ]
924
925 if (tint_build_spv_reader) {
926 deps += [ ":tint_unittests_spv_reader_src" ]
927 }
928
929 if (tint_build_spv_writer) {
930 deps += [ ":tint_unittests_spv_writer_src" ]
931 }
932
933 if (tint_build_wgsl_reader) {
934 deps += [ ":tint_unittests_wgsl_reader_src" ]
935 }
936
937 if (tint_build_wgsl_writer) {
938 deps += [ ":tint_unittests_wgsl_writer_src" ]
939 }
940
dan sinclair2a599012020-06-23 17:48:40 +0000941 if (tint_build_msl_writer) {
942 deps += [ ":tint_unittests_msl_writer_src" ]
943 }
944
Ryan Harrison0a196c12020-04-17 13:18:20 +0000945 configs += [
946 ":tint_common_config",
947 ":tint_unittests_config",
948 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000949 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000950
951 if (build_with_chromium) {
952 configs -= [ "//build/config/compiler:chromium_code" ]
953 configs += [ "//build/config/compiler:no_chromium_code" ]
954 }
955}
956
957test("tint_unittests") {
958 deps = [
959 ":gmock_and_gtest",
960 ":libtint",
961 ":tint_unittests_src",
Ryan Harrison1f1f08f2020-05-07 17:17:15 +0000962 "${tint_spirv_tools_dir}/:spvtools",
963 "${tint_spirv_tools_dir}/:spvtools_opt",
964 "${tint_spirv_tools_dir}/:spvtools_val",
Ryan Harrison0a196c12020-04-17 13:18:20 +0000965 ]
966
967 # TODO(rharrison): Use main() from chromium for chromium tree builds. This
968 # requires adding a file to //gpu like Dawn has done.
969
970 configs += [
971 ":tint_common_config",
972 ":tint_unittests_config",
973 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000974 public_configs = [ ":tint_public_config" ]
Ryan Harrison0a196c12020-04-17 13:18:20 +0000975
976 if (build_with_chromium) {
977 configs -= [ "//build/config/compiler:chromium_code" ]
978 configs += [ "//build/config/compiler:no_chromium_code" ]
979 }
980
981 testonly = true
982}
983
984###############################################################################
Ryan Harrisond34b2102020-04-27 15:31:27 +0000985# Fuzzers - Libfuzzer based fuzzing targets for Chromium
986###############################################################################
987# To run the fuzzers outside of Chromium, use the CMake based builds.
988
989if (build_with_chromium) {
990 import("//testing/libfuzzer/fuzzer_test.gni")
991
992 source_set("tint_wgsl_reader_fuzzer_src") {
993 sources = [ "fuzzers/tint_wgsl_reader_fuzzer.cc" ]
994 configs += [ ":tint_common_config" ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +0000995 public_configs = [ ":tint_public_config" ]
Ryan Harrisond34b2102020-04-27 15:31:27 +0000996 }
997
998 fuzzer_test("tint_wgsl_reader_fuzzer") {
999 sources = []
1000 deps = [
1001 ":libtint",
1002 ":tint_wgsl_reader_fuzzer_src",
Ryan Harrison1f1f08f2020-05-07 17:17:15 +00001003 "${tint_spirv_tools_dir}/:spvtools",
1004 "${tint_spirv_tools_dir}/:spvtools_opt",
1005 "${tint_spirv_tools_dir}/:spvtools_val",
Ryan Harrisond34b2102020-04-27 15:31:27 +00001006 ]
1007 }
1008}
1009
1010###############################################################################
Ryan Harrison0a196c12020-04-17 13:18:20 +00001011# Samples - Executables exposing command line functionality
1012###############################################################################
1013
Ryan Harrison0caab672020-04-15 20:47:55 +00001014config("tint_exe_config") {
1015 include_dirs = []
1016 if (tint_build_spv_reader || tint_build_spv_writer) {
Ryan Harrisond34b2102020-04-27 15:31:27 +00001017 include_dirs += [ "${tint_spirv_tools_dir}/include/" ]
Ryan Harrison0caab672020-04-15 20:47:55 +00001018 }
1019}
1020
1021executable("tint_exe") {
Ryan Harrison4d32be42020-04-09 18:52:06 +00001022 sources = [ "samples/main.cc" ]
Ryan Harrison1f1f08f2020-05-07 17:17:15 +00001023 deps = [
1024 ":libtint",
1025 "${tint_spirv_tools_dir}/:spvtools",
1026 "${tint_spirv_tools_dir}/:spvtools_opt",
1027 "${tint_spirv_tools_dir}/:spvtools_val",
1028 ]
Ryan Harrison4d32be42020-04-09 18:52:06 +00001029
Ryan Harrison0caab672020-04-15 20:47:55 +00001030 if (tint_build_spv_reader || tint_build_spv_writer) {
Ryan Harrison0a196c12020-04-17 13:18:20 +00001031 deps += [ "${tint_spirv_headers_dir}/:spv_headers" ]
Ryan Harrison0caab672020-04-15 20:47:55 +00001032 }
1033
Ryan Harrisond34b2102020-04-27 15:31:27 +00001034 configs += [
1035 ":tint_common_config",
1036 ":tint_exe_config",
1037 ]
Ryan Harrisonb8f49302020-06-16 17:26:59 +00001038 public_configs = [ ":tint_public_config" ]
Ryan Harrison29628882020-04-08 20:40:25 +00001039
1040 if (build_with_chromium) {
1041 configs -= [ "//build/config/compiler:chromium_code" ]
1042 configs += [ "//build/config/compiler:no_chromium_code" ]
1043 }
Ryan Harrison29628882020-04-08 20:40:25 +00001044}