1 # Copyright 2018 Google Inc. All rights reserved. 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 15 import("//build_overrides/spirv_tools.gni") 16 17 import("//testing/test.gni") 18 import("//build_overrides/build.gni") 19 20 spirv_headers = spirv_tools_spirv_headers_dir 21 22 template("spvtools_core_tables") { 23 assert(defined(invoker.version), "Need version in $target_name generation.") 24 25 action("spvtools_core_tables_" + target_name) { 26 script = "utils/generate_grammar_tables.py" 27 28 version = invoker.version 29 30 core_json_file = 31 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json" 32 core_insts_file = "${target_gen_dir}/core.insts-$version.inc" 33 operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc" 34 extinst_file = "source/extinst.debuginfo.grammar.json" 35 36 sources = [ 37 core_json_file, 38 ] 39 outputs = [ 40 core_insts_file, 41 operand_kinds_file, 42 ] 43 args = [ 44 "--spirv-core-grammar", 45 rebase_path(core_json_file, root_build_dir), 46 "--core-insts-output", 47 rebase_path(core_insts_file, root_build_dir), 48 "--extinst-debuginfo-grammar", 49 rebase_path(extinst_file, root_build_dir), 50 "--operand-kinds-output", 51 rebase_path(operand_kinds_file, root_build_dir), 52 ] 53 } 54 } 55 56 template("spvtools_core_enums") { 57 assert(defined(invoker.version), "Need version in $target_name generation.") 58 59 action("spvtools_core_enums_" + target_name) { 60 script = "utils/generate_grammar_tables.py" 61 62 version = invoker.version 63 64 core_json_file = 65 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json" 66 debug_insts_file = "source/extinst.debuginfo.grammar.json" 67 extension_enum_file = "${target_gen_dir}/extension_enum.inc" 68 extension_map_file = "${target_gen_dir}/enum_string_mapping.inc" 69 70 args = [ 71 "--spirv-core-grammar", 72 rebase_path(core_json_file, root_build_dir), 73 "--extinst-debuginfo-grammar", 74 rebase_path(debug_insts_file, root_build_dir), 75 "--extension-enum-output", 76 rebase_path(extension_enum_file, root_build_dir), 77 "--enum-string-mapping-output", 78 rebase_path(extension_map_file, root_build_dir), 79 ] 80 inputs = [ 81 core_json_file, 82 ] 83 outputs = [ 84 extension_enum_file, 85 extension_map_file, 86 ] 87 } 88 } 89 90 template("spvtools_glsl_tables") { 91 assert(defined(invoker.version), "Need version in $target_name generation.") 92 93 action("spvtools_glsl_tables_" + target_name) { 94 script = "utils/generate_grammar_tables.py" 95 96 version = invoker.version 97 98 core_json_file = 99 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json" 100 glsl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.glsl.std.450.grammar.json" 101 glsl_insts_file = "${target_gen_dir}/glsl.std.450.insts.inc" 102 debug_insts_file = "source/extinst.debuginfo.grammar.json" 103 104 args = [ 105 "--spirv-core-grammar", 106 rebase_path(core_json_file, root_build_dir), 107 "--extinst-glsl-grammar", 108 rebase_path(glsl_json_file, root_build_dir), 109 "--glsl-insts-output", 110 rebase_path(glsl_insts_file, root_build_dir), 111 "--extinst-debuginfo-grammar", 112 rebase_path(debug_insts_file, root_build_dir), 113 ] 114 inputs = [ 115 core_json_file, 116 glsl_json_file, 117 ] 118 outputs = [ 119 glsl_insts_file, 120 ] 121 } 122 } 123 124 template("spvtools_opencl_tables") { 125 assert(defined(invoker.version), "Need version in $target_name generation.") 126 127 action("spvtools_opencl_tables_" + target_name) { 128 script = "utils/generate_grammar_tables.py" 129 130 version = invoker.version 131 132 core_json_file = 133 "${spirv_headers}/include/spirv/$version/spirv.core.grammar.json" 134 opengl_json_file = "${spirv_headers}/include/spirv/${version}/extinst.opencl.std.100.grammar.json" 135 opencl_insts_file = "${target_gen_dir}/opencl.std.insts.inc" 136 debug_insts_file = "source/extinst.debuginfo.grammar.json" 137 138 args = [ 139 "--spirv-core-grammar", 140 rebase_path(core_json_file, root_build_dir), 141 "--extinst-opencl-grammar", 142 rebase_path(opengl_json_file, root_build_dir), 143 "--opencl-insts-output", 144 rebase_path(opencl_insts_file, root_build_dir), 145 "--extinst-debuginfo-grammar", 146 rebase_path(debug_insts_file, root_build_dir), 147 ] 148 inputs = [ 149 core_json_file, 150 opengl_json_file, 151 ] 152 outputs = [ 153 opencl_insts_file, 154 ] 155 } 156 } 157 158 template("spvtools_language_header") { 159 assert(defined(invoker.name), "Need name in $target_name generation.") 160 161 action("spvtools_language_header_" + target_name) { 162 script = "utils/generate_language_headers.py" 163 164 name = invoker.name 165 extinst_output_base = "${target_gen_dir}/${name}" 166 debug_insts_file = "source/extinst.debuginfo.grammar.json" 167 168 args = [ 169 "--extinst-name", 170 "${name}", 171 "--extinst-grammar", 172 rebase_path(debug_insts_file, root_build_dir), 173 "--extinst-output-base", 174 rebase_path(extinst_output_base, root_build_dir), 175 ] 176 inputs = [ 177 debug_insts_file, 178 ] 179 outputs = [ 180 "${extinst_output_base}.h", 181 ] 182 } 183 } 184 185 template("spvtools_vendor_table") { 186 assert(defined(invoker.name), "Need name in $target_name generation.") 187 188 action("spvtools_vendor_tables_" + target_name) { 189 script = "utils/generate_grammar_tables.py" 190 191 name = invoker.name 192 extinst_vendor_grammar = "source/extinst.${name}.grammar.json" 193 extinst_file = "${target_gen_dir}/${name}.insts.inc" 194 195 args = [ 196 "--extinst-vendor-grammar", 197 rebase_path(extinst_vendor_grammar, root_build_dir), 198 "--vendor-insts-output", 199 rebase_path(extinst_file, root_build_dir), 200 ] 201 inputs = [ 202 extinst_vendor_grammar, 203 ] 204 outputs = [ 205 extinst_file, 206 ] 207 } 208 } 209 210 action("spvtools_generators_inc") { 211 script = "utils/generate_registry_tables.py" 212 213 # TODO(dsinclair): Make work for chrome 214 xml_file = "${spirv_headers}/include/spirv/spir-v.xml" 215 inc_file = "${target_gen_dir}/generators.inc" 216 217 sources = [ 218 xml_file, 219 ] 220 outputs = [ 221 inc_file, 222 ] 223 args = [ 224 "--xml", 225 rebase_path(xml_file, root_build_dir), 226 "--generator", 227 rebase_path(inc_file, root_build_dir), 228 ] 229 } 230 231 action("spvtools_build_version") { 232 script = "utils/update_build_version.py" 233 234 src_dir = "." 235 inc_file = "${target_gen_dir}/build-version.inc" 236 237 outputs = [ 238 inc_file, 239 ] 240 args = [ 241 rebase_path(src_dir, root_build_dir), 242 rebase_path(inc_file, root_build_dir), 243 ] 244 } 245 246 spvtools_core_tables("unified1") { 247 version = "unified1" 248 } 249 spvtools_core_enums("unified1") { 250 version = "unified1" 251 } 252 spvtools_glsl_tables("glsl1-0") { 253 version = "1.0" 254 } 255 spvtools_opencl_tables("opencl1-0") { 256 version = "1.0" 257 } 258 spvtools_language_header("unified1") { 259 name = "DebugInfo" 260 } 261 262 spvtools_vendor_tables = [ 263 "spv-amd-shader-explicit-vertex-parameter", 264 "spv-amd-shader-trinary-minmax", 265 "spv-amd-gcn-shader", 266 "spv-amd-shader-ballot", 267 "debuginfo", 268 ] 269 270 foreach(table, spvtools_vendor_tables) { 271 spvtools_vendor_table(table) { 272 name = table 273 } 274 } 275 276 config("spvtools_public_config") { 277 include_dirs = [ "include" ] 278 } 279 280 config("spvtools_internal_config") { 281 include_dirs = [ 282 ".", 283 "$target_gen_dir", 284 "${spirv_headers}/include", 285 ] 286 287 configs = [ ":spvtools_public_config" ] 288 289 if (is_clang) { 290 cflags = [ "-Wno-implicit-fallthrough" ] 291 } 292 } 293 294 source_set("spvtools_headers") { 295 sources = [ 296 "include/spirv-tools/libspirv.h", 297 "include/spirv-tools/libspirv.hpp", 298 "include/spirv-tools/linker.hpp", 299 "include/spirv-tools/optimizer.hpp", 300 "include/spirv-tools/instrument.hpp", 301 ] 302 303 public_configs = [ ":spvtools_public_config" ] 304 } 305 306 static_library("spvtools") { 307 deps = [ 308 ":spvtools_core_enums_unified1", 309 ":spvtools_core_tables_unified1", 310 ":spvtools_generators_inc", 311 ":spvtools_glsl_tables_glsl1-0", 312 ":spvtools_language_header_unified1", 313 ":spvtools_opencl_tables_opencl1-0", 314 ] 315 foreach(target_name, spvtools_vendor_tables) { 316 deps += [ ":spvtools_vendor_tables_$target_name" ] 317 } 318 319 sources = [ 320 "source/assembly_grammar.cpp", 321 "source/assembly_grammar.h", 322 "source/binary.cpp", 323 "source/binary.h", 324 "source/diagnostic.cpp", 325 "source/diagnostic.h", 326 "source/disassemble.cpp", 327 "source/enum_set.h", 328 "source/enum_string_mapping.cpp", 329 "source/ext_inst.cpp", 330 "source/ext_inst.h", 331 "source/extensions.cpp", 332 "source/extensions.h", 333 "source/instruction.h", 334 "source/libspirv.cpp", 335 "source/macro.h", 336 "source/name_mapper.cpp", 337 "source/name_mapper.h", 338 "source/opcode.cpp", 339 "source/opcode.h", 340 "source/operand.cpp", 341 "source/operand.h", 342 "source/parsed_operand.cpp", 343 "source/parsed_operand.h", 344 "source/print.cpp", 345 "source/print.h", 346 "source/spirv_constant.h", 347 "source/spirv_definition.h", 348 "source/spirv_endian.cpp", 349 "source/spirv_endian.h", 350 "source/spirv_optimizer_options.cpp", 351 "source/spirv_optimizer_options.h", 352 "source/spirv_target_env.cpp", 353 "source/spirv_target_env.h", 354 "source/spirv_validator_options.cpp", 355 "source/spirv_validator_options.h", 356 "source/table.cpp", 357 "source/table.h", 358 "source/text.cpp", 359 "source/text.h", 360 "source/text_handler.cpp", 361 "source/text_handler.h", 362 "source/util/bit_vector.cpp", 363 "source/util/bit_vector.h", 364 "source/util/bitutils.h", 365 "source/util/hex_float.h", 366 "source/util/ilist.h", 367 "source/util/ilist_node.h", 368 "source/util/make_unique.h", 369 "source/util/parse_number.cpp", 370 "source/util/parse_number.h", 371 "source/util/small_vector.h", 372 "source/util/string_utils.cpp", 373 "source/util/string_utils.h", 374 "source/util/timer.cpp", 375 "source/util/timer.h", 376 ] 377 378 public_deps = [ 379 ":spvtools_headers", 380 ] 381 382 configs -= [ "//build/config/compiler:chromium_code" ] 383 configs += [ 384 "//build/config/compiler:no_chromium_code", 385 ":spvtools_internal_config", 386 ] 387 } 388 389 static_library("spvtools_val") { 390 sources = [ 391 "source/val/basic_block.cpp", 392 "source/val/construct.cpp", 393 "source/val/function.cpp", 394 "source/val/instruction.cpp", 395 "source/val/validate.cpp", 396 "source/val/validate.h", 397 "source/val/validate_adjacency.cpp", 398 "source/val/validate_annotation.cpp", 399 "source/val/validate_arithmetics.cpp", 400 "source/val/validate_atomics.cpp", 401 "source/val/validate_barriers.cpp", 402 "source/val/validate_bitwise.cpp", 403 "source/val/validate_builtins.cpp", 404 "source/val/validate_capability.cpp", 405 "source/val/validate_cfg.cpp", 406 "source/val/validate_composites.cpp", 407 "source/val/validate_constants.cpp", 408 "source/val/validate_conversion.cpp", 409 "source/val/validate_datarules.cpp", 410 "source/val/validate_debug.cpp", 411 "source/val/validate_decorations.cpp", 412 "source/val/validate_derivatives.cpp", 413 "source/val/validate_execution_limitations.cpp", 414 "source/val/validate_extensions.cpp", 415 "source/val/validate_function.cpp", 416 "source/val/validate_id.cpp", 417 "source/val/validate_image.cpp", 418 "source/val/validate_instruction.cpp", 419 "source/val/validate_interfaces.cpp", 420 "source/val/validate_layout.cpp", 421 "source/val/validate_literals.cpp", 422 "source/val/validate_logicals.cpp", 423 "source/val/validate_memory.cpp", 424 "source/val/validate_memory_semantics.cpp", 425 "source/val/validate_mode_setting.cpp", 426 "source/val/validate_non_uniform.cpp", 427 "source/val/validate_primitives.cpp", 428 "source/val/validate_scopes.cpp", 429 "source/val/validate_type.cpp", 430 "source/val/validation_state.cpp", 431 ] 432 433 deps = [ 434 ":spvtools", 435 ] 436 public_deps = [ 437 ":spvtools_headers", 438 ] 439 440 configs -= [ "//build/config/compiler:chromium_code" ] 441 configs += [ 442 "//build/config/compiler:no_chromium_code", 443 ":spvtools_internal_config", 444 ] 445 } 446 447 static_library("spvtools_opt") { 448 sources = [ 449 "source/opt/aggressive_dead_code_elim_pass.cpp", 450 "source/opt/aggressive_dead_code_elim_pass.h", 451 "source/opt/basic_block.cpp", 452 "source/opt/basic_block.h", 453 "source/opt/block_merge_pass.cpp", 454 "source/opt/block_merge_pass.h", 455 "source/opt/build_module.cpp", 456 "source/opt/build_module.h", 457 "source/opt/ccp_pass.cpp", 458 "source/opt/ccp_pass.h", 459 "source/opt/cfg.cpp", 460 "source/opt/cfg.h", 461 "source/opt/cfg_cleanup_pass.cpp", 462 "source/opt/cfg_cleanup_pass.h", 463 "source/opt/code_sink.cpp", 464 "source/opt/code_sink.h", 465 "source/opt/combine_access_chains.cpp", 466 "source/opt/combine_access_chains.h", 467 "source/opt/common_uniform_elim_pass.cpp", 468 "source/opt/common_uniform_elim_pass.h", 469 "source/opt/compact_ids_pass.cpp", 470 "source/opt/compact_ids_pass.h", 471 "source/opt/composite.cpp", 472 "source/opt/composite.h", 473 "source/opt/const_folding_rules.cpp", 474 "source/opt/const_folding_rules.h", 475 "source/opt/constants.cpp", 476 "source/opt/constants.h", 477 "source/opt/copy_prop_arrays.cpp", 478 "source/opt/copy_prop_arrays.h", 479 "source/opt/dead_branch_elim_pass.cpp", 480 "source/opt/dead_branch_elim_pass.h", 481 "source/opt/dead_insert_elim_pass.cpp", 482 "source/opt/dead_insert_elim_pass.h", 483 "source/opt/dead_variable_elimination.cpp", 484 "source/opt/dead_variable_elimination.h", 485 "source/opt/decoration_manager.cpp", 486 "source/opt/decoration_manager.h", 487 "source/opt/def_use_manager.cpp", 488 "source/opt/def_use_manager.h", 489 "source/opt/dominator_analysis.cpp", 490 "source/opt/dominator_analysis.h", 491 "source/opt/dominator_tree.cpp", 492 "source/opt/dominator_tree.h", 493 "source/opt/eliminate_dead_constant_pass.cpp", 494 "source/opt/eliminate_dead_constant_pass.h", 495 "source/opt/eliminate_dead_functions_pass.cpp", 496 "source/opt/eliminate_dead_functions_pass.h", 497 "source/opt/feature_manager.cpp", 498 "source/opt/feature_manager.h", 499 "source/opt/flatten_decoration_pass.cpp", 500 "source/opt/flatten_decoration_pass.h", 501 "source/opt/fold.cpp", 502 "source/opt/fold.h", 503 "source/opt/fold_spec_constant_op_and_composite_pass.cpp", 504 "source/opt/fold_spec_constant_op_and_composite_pass.h", 505 "source/opt/folding_rules.cpp", 506 "source/opt/folding_rules.h", 507 "source/opt/freeze_spec_constant_value_pass.cpp", 508 "source/opt/freeze_spec_constant_value_pass.h", 509 "source/opt/function.cpp", 510 "source/opt/function.h", 511 "source/opt/if_conversion.cpp", 512 "source/opt/if_conversion.h", 513 "source/opt/inline_exhaustive_pass.cpp", 514 "source/opt/inline_exhaustive_pass.h", 515 "source/opt/inline_opaque_pass.cpp", 516 "source/opt/inline_opaque_pass.h", 517 "source/opt/inline_pass.cpp", 518 "source/opt/inline_pass.h", 519 "source/opt/inst_bindless_check_pass.cpp", 520 "source/opt/inst_bindless_check_pass.h", 521 "source/opt/instruction.cpp", 522 "source/opt/instruction.h", 523 "source/opt/instruction_list.cpp", 524 "source/opt/instruction_list.h", 525 "source/opt/instrument_pass.cpp", 526 "source/opt/instrument_pass.h", 527 "source/opt/ir_builder.h", 528 "source/opt/ir_context.cpp", 529 "source/opt/ir_context.h", 530 "source/opt/ir_loader.cpp", 531 "source/opt/ir_loader.h", 532 "source/opt/iterator.h", 533 "source/opt/licm_pass.cpp", 534 "source/opt/licm_pass.h", 535 "source/opt/local_access_chain_convert_pass.cpp", 536 "source/opt/local_access_chain_convert_pass.h", 537 "source/opt/local_redundancy_elimination.cpp", 538 "source/opt/local_redundancy_elimination.h", 539 "source/opt/local_single_block_elim_pass.cpp", 540 "source/opt/local_single_block_elim_pass.h", 541 "source/opt/local_single_store_elim_pass.cpp", 542 "source/opt/local_single_store_elim_pass.h", 543 "source/opt/local_ssa_elim_pass.cpp", 544 "source/opt/local_ssa_elim_pass.h", 545 "source/opt/log.h", 546 "source/opt/loop_dependence.cpp", 547 "source/opt/loop_dependence.h", 548 "source/opt/loop_dependence_helpers.cpp", 549 "source/opt/loop_descriptor.cpp", 550 "source/opt/loop_descriptor.h", 551 "source/opt/loop_fission.cpp", 552 "source/opt/loop_fission.h", 553 "source/opt/loop_fusion.cpp", 554 "source/opt/loop_fusion.h", 555 "source/opt/loop_fusion_pass.cpp", 556 "source/opt/loop_fusion_pass.h", 557 "source/opt/loop_peeling.cpp", 558 "source/opt/loop_peeling.h", 559 "source/opt/loop_unroller.cpp", 560 "source/opt/loop_unroller.h", 561 "source/opt/loop_unswitch_pass.cpp", 562 "source/opt/loop_unswitch_pass.h", 563 "source/opt/loop_utils.cpp", 564 "source/opt/loop_utils.h", 565 "source/opt/mem_pass.cpp", 566 "source/opt/mem_pass.h", 567 "source/opt/merge_return_pass.cpp", 568 "source/opt/merge_return_pass.h", 569 "source/opt/module.cpp", 570 "source/opt/module.h", 571 "source/opt/null_pass.h", 572 "source/opt/optimizer.cpp", 573 "source/opt/pass.cpp", 574 "source/opt/pass.h", 575 "source/opt/pass_manager.cpp", 576 "source/opt/pass_manager.h", 577 "source/opt/passes.h", 578 "source/opt/private_to_local_pass.cpp", 579 "source/opt/private_to_local_pass.h", 580 "source/opt/process_lines_pass.cpp", 581 "source/opt/process_lines_pass.h", 582 "source/opt/propagator.cpp", 583 "source/opt/propagator.h", 584 "source/opt/reduce_load_size.cpp", 585 "source/opt/reduce_load_size.h", 586 "source/opt/redundancy_elimination.cpp", 587 "source/opt/redundancy_elimination.h", 588 "source/opt/reflect.h", 589 "source/opt/register_pressure.cpp", 590 "source/opt/register_pressure.h", 591 "source/opt/remove_duplicates_pass.cpp", 592 "source/opt/remove_duplicates_pass.h", 593 "source/opt/replace_invalid_opc.cpp", 594 "source/opt/replace_invalid_opc.h", 595 "source/opt/scalar_analysis.cpp", 596 "source/opt/scalar_analysis.h", 597 "source/opt/scalar_analysis_nodes.h", 598 "source/opt/scalar_analysis_simplification.cpp", 599 "source/opt/scalar_replacement_pass.cpp", 600 "source/opt/scalar_replacement_pass.h", 601 "source/opt/set_spec_constant_default_value_pass.cpp", 602 "source/opt/set_spec_constant_default_value_pass.h", 603 "source/opt/simplification_pass.cpp", 604 "source/opt/simplification_pass.h", 605 "source/opt/ssa_rewrite_pass.cpp", 606 "source/opt/ssa_rewrite_pass.h", 607 "source/opt/strength_reduction_pass.cpp", 608 "source/opt/strength_reduction_pass.h", 609 "source/opt/strip_debug_info_pass.cpp", 610 "source/opt/strip_debug_info_pass.h", 611 "source/opt/strip_reflect_info_pass.cpp", 612 "source/opt/strip_reflect_info_pass.h", 613 "source/opt/struct_cfg_analysis.cpp", 614 "source/opt/struct_cfg_analysis.h", 615 "source/opt/tree_iterator.h", 616 "source/opt/type_manager.cpp", 617 "source/opt/type_manager.h", 618 "source/opt/types.cpp", 619 "source/opt/types.h", 620 "source/opt/unify_const_pass.cpp", 621 "source/opt/unify_const_pass.h", 622 "source/opt/upgrade_memory_model.cpp", 623 "source/opt/upgrade_memory_model.h", 624 "source/opt/value_number_table.cpp", 625 "source/opt/value_number_table.h", 626 "source/opt/vector_dce.cpp", 627 "source/opt/vector_dce.h", 628 "source/opt/workaround1209.cpp", 629 "source/opt/workaround1209.h", 630 ] 631 632 deps = [ 633 ":spvtools", 634 ] 635 public_deps = [ 636 ":spvtools_headers", 637 ] 638 639 configs -= [ "//build/config/compiler:chromium_code" ] 640 configs += [ 641 "//build/config/compiler:no_chromium_code", 642 ":spvtools_internal_config", 643 ] 644 } 645 646 group("SPIRV-Tools") { 647 deps = [ 648 ":spvtools", 649 ":spvtools_opt", 650 ":spvtools_val", 651 ] 652 } 653 654 if (!build_with_chromium) { 655 googletest_dir = spirv_tools_googletest_dir 656 657 config("gtest_config") { 658 include_dirs = [ 659 "${googletest_dir}/googletest", 660 "${googletest_dir}/googletest/include", 661 ] 662 } 663 664 static_library("gtest") { 665 testonly = true 666 sources = [ 667 "${googletest_dir}/googletest/src/gtest-all.cc", 668 ] 669 public_configs = [ ":gtest_config" ] 670 } 671 672 config("gmock_config") { 673 include_dirs = [ 674 "${googletest_dir}/googlemock", 675 "${googletest_dir}/googlemock/include", 676 "${googletest_dir}/googletest/include", 677 ] 678 if (is_clang) { 679 # TODO: Can remove this if/when the issue is fixed. 680 # https://github.com/google/googletest/issues/533 681 cflags = [ "-Wno-inconsistent-missing-override" ] 682 } 683 } 684 685 static_library("gmock") { 686 testonly = true 687 sources = [ 688 "${googletest_dir}/googlemock/src/gmock-all.cc", 689 ] 690 public_configs = [ ":gmock_config" ] 691 } 692 } 693 694 test("spvtools_test") { 695 sources = [ 696 "test/assembly_context_test.cpp", 697 "test/assembly_format_test.cpp", 698 "test/binary_destroy_test.cpp", 699 "test/binary_endianness_test.cpp", 700 "test/binary_header_get_test.cpp", 701 "test/binary_parse_test.cpp", 702 "test/binary_strnlen_s_test.cpp", 703 "test/binary_to_text.literal_test.cpp", 704 "test/binary_to_text_test.cpp", 705 "test/comment_test.cpp", 706 "test/enum_set_test.cpp", 707 "test/enum_string_mapping_test.cpp", 708 "test/ext_inst.debuginfo_test.cpp", 709 "test/ext_inst.glsl_test.cpp", 710 "test/ext_inst.opencl_test.cpp", 711 "test/fix_word_test.cpp", 712 "test/generator_magic_number_test.cpp", 713 "test/hex_float_test.cpp", 714 "test/immediate_int_test.cpp", 715 "test/libspirv_macros_test.cpp", 716 "test/name_mapper_test.cpp", 717 "test/named_id_test.cpp", 718 "test/opcode_make_test.cpp", 719 "test/opcode_require_capabilities_test.cpp", 720 "test/opcode_split_test.cpp", 721 "test/opcode_table_get_test.cpp", 722 "test/operand_capabilities_test.cpp", 723 "test/operand_pattern_test.cpp", 724 "test/operand_test.cpp", 725 "test/target_env_test.cpp", 726 "test/test_fixture.h", 727 "test/text_advance_test.cpp", 728 "test/text_destroy_test.cpp", 729 "test/text_literal_test.cpp", 730 "test/text_start_new_inst_test.cpp", 731 "test/text_to_binary.annotation_test.cpp", 732 "test/text_to_binary.barrier_test.cpp", 733 "test/text_to_binary.constant_test.cpp", 734 "test/text_to_binary.control_flow_test.cpp", 735 "test/text_to_binary.debug_test.cpp", 736 "test/text_to_binary.device_side_enqueue_test.cpp", 737 "test/text_to_binary.extension_test.cpp", 738 "test/text_to_binary.function_test.cpp", 739 "test/text_to_binary.group_test.cpp", 740 "test/text_to_binary.image_test.cpp", 741 "test/text_to_binary.literal_test.cpp", 742 "test/text_to_binary.memory_test.cpp", 743 "test/text_to_binary.misc_test.cpp", 744 "test/text_to_binary.mode_setting_test.cpp", 745 "test/text_to_binary.pipe_storage_test.cpp", 746 "test/text_to_binary.reserved_sampling_test.cpp", 747 "test/text_to_binary.subgroup_dispatch_test.cpp", 748 "test/text_to_binary.type_declaration_test.cpp", 749 "test/text_to_binary_test.cpp", 750 "test/text_word_get_test.cpp", 751 "test/unit_spirv.cpp", 752 "test/unit_spirv.h", 753 ] 754 755 deps = [ 756 ":spvtools", 757 ":spvtools_language_header_unified1", 758 ":spvtools_val", 759 ] 760 761 if (build_with_chromium) { 762 deps += [ 763 "//testing/gmock", 764 "//testing/gtest", 765 "//testing/gtest:gtest_main", 766 ] 767 } else { 768 deps += [ 769 ":gmock", 770 ":gtest", 771 ] 772 sources += [ "${googletest_dir}/googletest/src/gtest_main.cc" ] 773 } 774 775 if (is_clang) { 776 cflags_cc = [ "-Wno-self-assign" ] 777 } 778 779 configs += [ ":spvtools_internal_config" ] 780 } 781 782 if (spirv_tools_standalone) { 783 group("fuzzers") { 784 testonly = true 785 deps = [ 786 "test/fuzzers", 787 ] 788 } 789 } 790 791 executable("spirv-as") { 792 sources = [ 793 "source/software_version.cpp", 794 "tools/as/as.cpp", 795 ] 796 deps = [ 797 ":spvtools", 798 ":spvtools_build_version", 799 ] 800 configs += [ ":spvtools_internal_config" ] 801 } 802