|  | load( | 
|  | ":build_defs.bzl", | 
|  | "CLDEBUGINFO100_GRAMMAR_JSON_FILE", | 
|  | "COMMON_COPTS", | 
|  | "DEBUGINFO_GRAMMAR_JSON_FILE", | 
|  | "SHDEBUGINFO100_GRAMMAR_JSON_FILE", | 
|  | "TEST_COPTS", | 
|  | "generate_core_tables", | 
|  | "generate_enum_string_mapping", | 
|  | "generate_extinst_lang_headers", | 
|  | "generate_glsl_tables", | 
|  | "generate_opencl_tables", | 
|  | "generate_vendor_tables", | 
|  | "incompatible_with", | 
|  | ) | 
|  |  | 
|  | package( | 
|  | default_visibility = ["//visibility:private"], | 
|  | features = [ | 
|  | "layering_check", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | licenses(["notice"]) | 
|  |  | 
|  | exports_files([ | 
|  | "CHANGES", | 
|  | "LICENSE", | 
|  | ]) | 
|  |  | 
|  | py_binary( | 
|  | name = "generate_grammar_tables", | 
|  | srcs = ["utils/generate_grammar_tables.py"], | 
|  | ) | 
|  |  | 
|  | py_binary( | 
|  | name = "generate_language_headers", | 
|  | srcs = ["utils/generate_language_headers.py"], | 
|  | ) | 
|  |  | 
|  | generate_core_tables(version = "unified1") | 
|  |  | 
|  | generate_enum_string_mapping(version = "unified1") | 
|  |  | 
|  | generate_opencl_tables(version = "unified1") | 
|  |  | 
|  | generate_glsl_tables(version = "unified1") | 
|  |  | 
|  | generate_vendor_tables(extension = "spv-amd-shader-explicit-vertex-parameter") | 
|  |  | 
|  | generate_vendor_tables(extension = "spv-amd-shader-trinary-minmax") | 
|  |  | 
|  | generate_vendor_tables(extension = "spv-amd-gcn-shader") | 
|  |  | 
|  | generate_vendor_tables(extension = "spv-amd-shader-ballot") | 
|  |  | 
|  | generate_vendor_tables(extension = "debuginfo") | 
|  |  | 
|  | generate_vendor_tables(extension = "nonsemantic.clspvreflection") | 
|  |  | 
|  | generate_vendor_tables(extension = "nonsemantic.vkspreflection") | 
|  |  | 
|  | generate_vendor_tables( | 
|  | extension = "opencl.debuginfo.100", | 
|  | operand_kind_prefix = "CLDEBUG100_", | 
|  | ) | 
|  |  | 
|  | generate_vendor_tables( | 
|  | extension = "nonsemantic.shader.debuginfo.100", | 
|  | operand_kind_prefix = "SHDEBUG100_", | 
|  | ) | 
|  |  | 
|  | generate_extinst_lang_headers( | 
|  | name = "DebugInfo", | 
|  | grammar = DEBUGINFO_GRAMMAR_JSON_FILE, | 
|  | ) | 
|  |  | 
|  | generate_extinst_lang_headers( | 
|  | name = "OpenCLDebugInfo100", | 
|  | grammar = CLDEBUGINFO100_GRAMMAR_JSON_FILE, | 
|  | ) | 
|  |  | 
|  | generate_extinst_lang_headers( | 
|  | name = "NonSemanticShaderDebugInfo100", | 
|  | grammar = SHDEBUGINFO100_GRAMMAR_JSON_FILE, | 
|  | ) | 
|  |  | 
|  | py_binary( | 
|  | name = "generate_registry_tables", | 
|  | srcs = ["utils/generate_registry_tables.py"], | 
|  | ) | 
|  |  | 
|  | genrule( | 
|  | name = "generators_inc", | 
|  | srcs = ["@spirv_headers//:spirv_xml_registry"], | 
|  | outs = ["generators.inc"], | 
|  | cmd = "$(location :generate_registry_tables) --xml=$(location @spirv_headers//:spirv_xml_registry) --generator-output=$(location generators.inc)", | 
|  | cmd_bat = "$(location :generate_registry_tables) --xml=$(location @spirv_headers//:spirv_xml_registry) --generator-output=$(location generators.inc)", | 
|  | tools = [":generate_registry_tables"], | 
|  | ) | 
|  |  | 
|  | py_binary( | 
|  | name = "update_build_version", | 
|  | srcs = ["utils/update_build_version.py"], | 
|  | ) | 
|  |  | 
|  | genrule( | 
|  | name = "build_version_inc", | 
|  | srcs = ["CHANGES"], | 
|  | outs = ["build-version.inc"], | 
|  | cmd = "SOURCE_DATE_EPOCH=0 $(location :update_build_version) $(location CHANGES) $(location build-version.inc)", | 
|  | cmd_bat = "set SOURCE_DATE_EPOCH=0  && $(location :update_build_version) $(location CHANGES) $(location build-version.inc)", | 
|  | local = True, | 
|  | tools = [":update_build_version"], | 
|  | ) | 
|  |  | 
|  | # Libraries | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools", | 
|  | hdrs = [ | 
|  | "include/spirv-tools/libspirv.h", | 
|  | "include/spirv-tools/libspirv.hpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | includes = ["include"], | 
|  | linkstatic = 1, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_internal", | 
|  | srcs = glob([ | 
|  | "source/*.cpp", | 
|  | "source/util/*.cpp", | 
|  | "source/val/*.cpp", | 
|  | ]) + [ | 
|  | ":build_version_inc", | 
|  | ":gen_core_tables_unified1", | 
|  | ":gen_enum_string_mapping", | 
|  | ":gen_extinst_lang_headers_DebugInfo", | 
|  | ":gen_extinst_lang_headers_NonSemanticShaderDebugInfo100", | 
|  | ":gen_extinst_lang_headers_OpenCLDebugInfo100", | 
|  | ":gen_glsl_tables_unified1", | 
|  | ":gen_opencl_tables_unified1", | 
|  | ":gen_vendor_tables_debuginfo", | 
|  | ":gen_vendor_tables_nonsemantic_clspvreflection", | 
|  | ":gen_vendor_tables_nonsemantic_vkspreflection", | 
|  | ":gen_vendor_tables_nonsemantic_shader_debuginfo_100", | 
|  | ":gen_vendor_tables_opencl_debuginfo_100", | 
|  | ":gen_vendor_tables_spv_amd_gcn_shader", | 
|  | ":gen_vendor_tables_spv_amd_shader_ballot", | 
|  | ":gen_vendor_tables_spv_amd_shader_explicit_vertex_parameter", | 
|  | ":gen_vendor_tables_spv_amd_shader_trinary_minmax", | 
|  | ":generators_inc", | 
|  | ], | 
|  | hdrs = [ | 
|  | "include/spirv-tools/libspirv.h", | 
|  | "include/spirv-tools/libspirv.hpp", | 
|  | ":gen_extinst_lang_headers_DebugInfo", | 
|  | ":gen_extinst_lang_headers_NonSemanticShaderDebugInfo100", | 
|  | ":gen_extinst_lang_headers_OpenCLDebugInfo100", | 
|  | ] + glob([ | 
|  | "source/*.h", | 
|  | "source/util/*.h", | 
|  | "source/val/*.h", | 
|  | ]), | 
|  | copts = COMMON_COPTS, | 
|  | includes = ["include"], | 
|  | deps = [ | 
|  | "@spirv_headers//:spirv_common_headers", | 
|  | "@spirv_headers//:spirv_cpp11_headers", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_opt", | 
|  | hdrs = [ | 
|  | "include/spirv-tools/instrument.hpp", | 
|  | "include/spirv-tools/optimizer.hpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | linkstatic = 1, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools", | 
|  | ":spirv_tools_opt_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_opt_internal", | 
|  | srcs = glob(["source/opt/*.cpp"]) + [ | 
|  | ":gen_vendor_tables_spv_amd_shader_ballot", | 
|  | ], | 
|  | hdrs = glob(["source/opt/*.h"]) + [ | 
|  | "include/spirv-tools/instrument.hpp", | 
|  | "include/spirv-tools/optimizer.hpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | "@spirv_headers//:spirv_common_headers", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_reduce", | 
|  | srcs = glob(["source/reduce/*.cpp"]), | 
|  | hdrs = glob(["source/reduce/*.h"]), | 
|  | copts = COMMON_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_link", | 
|  | srcs = glob(["source/link/*.cpp"]), | 
|  | hdrs = ["include/spirv-tools/linker.hpp"], | 
|  | copts = COMMON_COPTS, | 
|  | linkstatic = 1, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_lint_internal", | 
|  | srcs = glob([ | 
|  | "source/lint/*.cpp", | 
|  | "source/lint/*.h", | 
|  | ]), | 
|  | hdrs = ["include/spirv-tools/linter.hpp"] + glob([ | 
|  | "source/lint/*.h", | 
|  | ]), | 
|  | copts = COMMON_COPTS, | 
|  | includes = ["include"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "spirv_tools_lint", | 
|  | hdrs = ["include/spirv-tools/linter.hpp"], | 
|  | copts = COMMON_COPTS, | 
|  | includes = ["include"], | 
|  | linkstatic = 1, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools", | 
|  | ":spirv_tools_lint_internal", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "tools_util", | 
|  | srcs = glob(["tools/util/*.cpp"]), | 
|  | hdrs = glob(["tools/util/*.h"]), | 
|  | copts = COMMON_COPTS, | 
|  | deps = [":spirv_tools"], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "tools_io", | 
|  | hdrs = ["tools/io.h"], | 
|  | copts = COMMON_COPTS, | 
|  | ) | 
|  |  | 
|  | # Tools | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-as", | 
|  | srcs = [ | 
|  | "tools/as/as.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-dis", | 
|  | srcs = [ | 
|  | "tools/dis/dis.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-objdump", | 
|  | srcs = [ | 
|  | "tools/objdump/extract_source.cpp", | 
|  | "tools/objdump/extract_source.h", | 
|  | "tools/objdump/objdump.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | "@spirv_headers//:spirv_cpp_headers", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-val", | 
|  | srcs = [ | 
|  | "tools/val/val.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-opt", | 
|  | srcs = [ | 
|  | "tools/opt/opt.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-reduce", | 
|  | srcs = [ | 
|  | "tools/reduce/reduce.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":spirv_tools_reduce", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-link", | 
|  | srcs = [ | 
|  | "tools/link/linker.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_link", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-lint", | 
|  | srcs = [ | 
|  | "tools/lint/lint.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_lint", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_binary( | 
|  | name = "spirv-cfg", | 
|  | srcs = [ | 
|  | "tools/cfg/bin_to_dot.cpp", | 
|  | "tools/cfg/bin_to_dot.h", | 
|  | "tools/cfg/cfg.cpp", | 
|  | ], | 
|  | copts = COMMON_COPTS, | 
|  | visibility = ["//visibility:public"], | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":tools_io", | 
|  | ":tools_util", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # Unit tests | 
|  |  | 
|  | cc_library( | 
|  | name = "test_lib", | 
|  | testonly = 1, | 
|  | srcs = [ | 
|  | "test/unit_spirv.cpp", | 
|  | ], | 
|  | hdrs = [ | 
|  | "test/test_fixture.h", | 
|  | "test/unit_spirv.h", | 
|  | ], | 
|  | copts = TEST_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | # PCH (precompiled header) tests only work when using CMake and MSVC on Windows, | 
|  | # so they will be skipped in the Bazel builds. | 
|  |  | 
|  | [cc_test( | 
|  | name = "base_{testcase}_test".format(testcase = f[len("test/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS + ["-DTESTING"], | 
|  | linkstatic = 1, | 
|  | target_compatible_with = { | 
|  | "test/timer_test.cpp": incompatible_with(["@bazel_tools//src/conditions:windows"]), | 
|  | }.get(f, []), | 
|  | deps = [ | 
|  | "tools_util", | 
|  | ":spirv_tools_internal", | 
|  | ":test_lib", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | [ | 
|  | "test/*_test.cpp", | 
|  | "test/tools/*_test.cpp", | 
|  | ], | 
|  | exclude = [ | 
|  | "test/cpp_interface_test.cpp", | 
|  | "test/pch_test.cpp", | 
|  | ], | 
|  | )] | 
|  |  | 
|  | cc_test( | 
|  | name = "base_cpp_interface_test", | 
|  | size = "small", | 
|  | srcs = ["test/cpp_interface_test.cpp"], | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools_opt_internal", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | "@spirv_headers//:spirv_cpp11_headers", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_test( | 
|  | name = "base_ilist_test", | 
|  | size = "small", | 
|  | srcs = ["test/util/ilist_test.cpp"], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_library( | 
|  | name = "link_test_lib", | 
|  | testonly = 1, | 
|  | hdrs = ["test/link/linker_fixture.h"], | 
|  | copts = TEST_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_link", | 
|  | ":test_lib", | 
|  | "@com_google_effcee//:effcee", | 
|  | "@com_googlesource_code_re2//:re2", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | [cc_test( | 
|  | name = "link_{testcase}_test".format(testcase = f[len("test/link/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":link_test_lib", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | ["test/link/*_test.cpp"], | 
|  | )] | 
|  |  | 
|  | [cc_test( | 
|  | name = "lint_{testcase}_test".format(testcase = f[len("test/lint/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools", | 
|  | ":spirv_tools_lint_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | ["test/lint/*_test.cpp"], | 
|  | )] | 
|  |  | 
|  | cc_library( | 
|  | name = "opt_test_lib", | 
|  | testonly = 1, | 
|  | srcs = [ | 
|  | "test/opt/pass_utils.cpp", | 
|  | ], | 
|  | hdrs = [ | 
|  | "test/opt/assembly_builder.h", | 
|  | "test/opt/function_utils.h", | 
|  | "test/opt/module_utils.h", | 
|  | "test/opt/pass_fixture.h", | 
|  | "test/opt/pass_utils.h", | 
|  | ], | 
|  | copts = TEST_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | "@com_google_effcee//:effcee", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | [cc_test( | 
|  | name = "opt_{testcase}_test".format(testcase = f[len("test/opt/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":opt_test_lib", | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":test_lib", | 
|  | "@com_google_effcee//:effcee", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob(["test/opt/*_test.cpp"])] | 
|  |  | 
|  | [cc_test( | 
|  | name = "opt_dom_tree_{testcase}_test".format(testcase = f[len("test/opt/dominator_tree/"):-len(".cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":opt_test_lib", | 
|  | ":spirv_tools_opt_internal", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | ["test/opt/dominator_tree/*.cpp"], | 
|  | exclude = ["test/opt/dominator_tree/pch_test_opt_dom.cpp"], | 
|  | )] | 
|  |  | 
|  | [cc_test( | 
|  | name = "opt_loop_{testcase}_test".format(testcase = f[len("test/opt/loop_optimizations/"):-len(".cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":opt_test_lib", | 
|  | ":spirv_tools", | 
|  | ":spirv_tools_opt_internal", | 
|  | "@com_google_effcee//:effcee", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | ["test/opt/loop_optimizations/*.cpp"], | 
|  | exclude = ["test/opt/loop_optimizations/pch_test_opt_loop.cpp"], | 
|  | )] | 
|  |  | 
|  | cc_library( | 
|  | name = "reduce_test_lib", | 
|  | testonly = 1, | 
|  | srcs = [ | 
|  | "test/reduce/reduce_test_util.cpp", | 
|  | ], | 
|  | hdrs = ["test/reduce/reduce_test_util.h"], | 
|  | copts = TEST_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":spirv_tools_reduce", | 
|  | ":test_lib", | 
|  | ":tools_io", | 
|  | "@googletest//:gtest", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | [cc_test( | 
|  | name = "reduce_{testcase}_test".format(testcase = f[len("test/reduce/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":reduce_test_lib", | 
|  | ":spirv_tools_internal", | 
|  | ":spirv_tools_opt_internal", | 
|  | ":spirv_tools_reduce", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob(["test/reduce/*_test.cpp"])] | 
|  |  | 
|  | [cc_test( | 
|  | name = "util_{testcase}_test".format(testcase = f[len("test/util/"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob(["test/util/*_test.cpp"])] | 
|  |  | 
|  | cc_library( | 
|  | name = "val_test_lib", | 
|  | testonly = 1, | 
|  | srcs = [ | 
|  | "test/val/val_code_generator.cpp", | 
|  | ], | 
|  | hdrs = [ | 
|  | "test/val/val_code_generator.h", | 
|  | "test/val/val_fixtures.h", | 
|  | ], | 
|  | copts = TEST_COPTS, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":test_lib", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | [cc_test( | 
|  | name = "val_{testcase}_test".format(testcase = f[len("test/val/val_"):-len("_test.cpp")]), | 
|  | size = "small", | 
|  | srcs = [f], | 
|  | copts = TEST_COPTS, | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":test_lib", | 
|  | ":val_test_lib", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) for f in glob( | 
|  | ["test/val/val_*_test.cpp"], | 
|  | exclude = [ | 
|  | "test/val/val_capability_test.cpp", | 
|  | "test/val/val_limits_test.cpp", | 
|  | ], | 
|  | )] | 
|  |  | 
|  | cc_test( | 
|  | name = "val_capability_test", | 
|  | size = "large", | 
|  | timeout = "long", | 
|  | srcs = ["test/val/val_capability_test.cpp"], | 
|  | copts = TEST_COPTS + ["-O3"], | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":spirv_tools_internal", | 
|  | ":test_lib", | 
|  | ":val_test_lib", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) | 
|  |  | 
|  | cc_test( | 
|  | name = "val_limits_test", | 
|  | size = "large", | 
|  | timeout = "long", | 
|  | srcs = ["test/val/val_limits_test.cpp"], | 
|  | copts = TEST_COPTS + [ | 
|  | "-O3", | 
|  | ], | 
|  | linkstatic = 1, | 
|  | deps = [ | 
|  | ":test_lib", | 
|  | ":val_test_lib", | 
|  | "@googletest//:gtest", | 
|  | "@googletest//:gtest_main", | 
|  | ], | 
|  | ) |