Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/KhronosGroup/SPIRV-Tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEhsan <ehsannas@gmail.com>2019-09-24 22:56:59 +0300
committerGitHub <noreply@github.com>2019-09-24 22:56:59 +0300
commita03cd1f3eb282a5d58a601ad9337a03c7eb412f4 (patch)
tree97b5aeaf47d2b36875438c6fd6c19ebf1f9bd7ec /BUILD.bazel
parent6f26d9ad81f2a6f8817ab2ae3c22a20f99955888 (diff)
Add Bazel build configuration. (#2891)
* Add Bazel build configuration. * fix for windows. * Update doc file. * Add tests that were accidentally skipped by Bazel * Update doc file.
Diffstat (limited to 'BUILD.bazel')
-rw-r--r--BUILD.bazel526
1 files changed, 526 insertions, 0 deletions
diff --git a/BUILD.bazel b/BUILD.bazel
new file mode 100644
index 000000000..bac1a6606
--- /dev/null
+++ b/BUILD.bazel
@@ -0,0 +1,526 @@
+load(
+ ":build_defs.bzl",
+ "COMMON_COPTS",
+ "DEBUGINFO_GRAMMAR_JSON_FILE",
+ "TEST_COPTS",
+ "base_test",
+ "generate_core_tables",
+ "generate_enum_string_mapping",
+ "generate_extinst_lang_headers",
+ "generate_glsl_tables",
+ "generate_opencl_tables",
+ "generate_vendor_tables",
+ "link_test",
+ "opt_test",
+ "reduce_test",
+ "util_test",
+ "val_test",
+)
+
+package(
+ default_visibility = ["//visibility:private"],
+)
+
+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("1.0")
+
+generate_core_tables("1.1")
+
+generate_core_tables("1.2")
+
+generate_core_tables("unified1")
+
+generate_enum_string_mapping("unified1")
+
+generate_opencl_tables("unified1")
+
+generate_glsl_tables("unified1")
+
+generate_vendor_tables("spv-amd-shader-explicit-vertex-parameter")
+
+generate_vendor_tables("spv-amd-shader-trinary-minmax")
+
+generate_vendor_tables("spv-amd-gcn-shader")
+
+generate_vendor_tables("spv-amd-shader-ballot")
+
+generate_vendor_tables("debuginfo")
+
+generate_extinst_lang_headers("DebugInfo", DEBUGINFO_GRAMMAR_JSON_FILE)
+
+py_binary(
+ name = "generate_registry_tables",
+ srcs = ["utils/generate_registry_tables.py"],
+)
+
+genrule(
+ name = "gen_registry_tables",
+ 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)",
+ tools = [":generate_registry_tables"],
+)
+
+py_binary(
+ name = "update_build_version",
+ srcs = ["utils/update_build_version.py"],
+)
+
+genrule(
+ name = "gen_build_version",
+ srcs = ["CHANGES"],
+ outs = ["build-version.inc"],
+ cmd = "SOURCE_DATE_EPOCH=0 $(location update_build_version) $$(dirname $(location CHANGES)) $(location build-version.inc)",
+ tools = [":update_build_version"],
+)
+
+# Libraries
+
+cc_library(
+ name = "generated_headers",
+ hdrs = [
+ ":gen_build_version",
+ ":gen_core_tables_1.0",
+ ":gen_core_tables_1.1",
+ ":gen_core_tables_1.2",
+ ":gen_core_tables_unified1",
+ ":gen_enum_string_mapping",
+ ":gen_extinst_lang_headers_DebugInfo",
+ ":gen_glsl_tables_unified1",
+ ":gen_opencl_tables_unified1",
+ ":gen_registry_tables",
+ ":gen_vendor_tables_debuginfo",
+ ":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",
+ ],
+ copts = COMMON_COPTS,
+)
+
+cc_library(
+ name = "spirv_tools_headers",
+ hdrs = glob([
+ "include/spirv-tools/libspirv.h",
+ "include/spirv-tools/libspirv.hpp",
+ "source/*.h",
+ "source/util/*.h",
+ "source/val/*.h",
+ ]),
+ copts = COMMON_COPTS,
+ includes = ["source"],
+ deps = [
+ "@spirv_headers//:spirv_c_headers",
+ ],
+)
+
+cc_library(
+ name = "spirv_tools",
+ srcs = glob([
+ "source/*.cpp",
+ "source/util/*.cpp",
+ "source/val/*.cpp",
+ ]),
+ hdrs = [
+ "include/spirv-tools/libspirv.h",
+ "include/spirv-tools/libspirv.hpp",
+ ],
+ copts = COMMON_COPTS + select({
+ "@bazel_tools//src/conditions:windows": [""],
+ "//conditions:default": ["-Wno-implicit-fallthrough"],
+ }),
+ includes = ["include"],
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":generated_headers",
+ ":spirv_tools_headers",
+ "@spirv_headers//:spirv_c_headers",
+ "@spirv_headers//:spirv_common_headers",
+ ],
+)
+
+cc_library(
+ name = "spirv_tools_comp",
+ srcs = glob([
+ "source/comp/*.cpp",
+ "source/comp/*.h",
+ ]),
+ copts = COMMON_COPTS,
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":generated_headers",
+ ":spirv_tools",
+ ":spirv_tools_headers",
+ "@spirv_headers//:spirv_common_headers",
+ ],
+)
+
+cc_library(
+ name = "spirv_tools_opt_headers",
+ hdrs = glob(["source/opt/*.h"]),
+ copts = COMMON_COPTS,
+)
+
+cc_library(
+ name = "spirv_tools_opt",
+ srcs = glob(["source/opt/*.cpp"]),
+ hdrs = [
+ "include/spirv-tools/instrument.hpp",
+ "include/spirv-tools/optimizer.hpp",
+ ],
+ copts = COMMON_COPTS,
+ includes = ["include"],
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":spirv_tools_headers",
+ ":spirv_tools_opt_headers",
+ "@spirv_headers//:spirv_common_headers",
+ ],
+)
+
+cc_library(
+ name = "spirv_tools_reduce",
+ srcs = glob(["source/reduce/*.cpp"]),
+ hdrs = glob(["source/reduce/*.h"]),
+ copts = COMMON_COPTS,
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":spirv_tools_opt",
+ ],
+)
+
+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",
+ ":spirv_tools_opt",
+ ],
+)
+
+cc_library(
+ name = "tools_util",
+ srcs = glob(["tools/util/*.cpp"]),
+ hdrs = glob(["tools/util/*.h"]),
+ copts = COMMON_COPTS,
+ linkstatic = 1,
+ visibility = ["//visibility:public"],
+ deps = [":spirv_tools"],
+)
+
+# Tools
+
+cc_binary(
+ name = "spirv-as",
+ srcs = [
+ "tools/as/as.cpp",
+ "tools/io.h",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ],
+)
+
+cc_binary(
+ name = "spirv-dis",
+ srcs = [
+ "tools/dis/dis.cpp",
+ "tools/io.h",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ],
+)
+
+cc_binary(
+ name = "spirv-val",
+ srcs = [
+ "tools/io.h",
+ "tools/val/val.cpp",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":tools_util",
+ ],
+)
+
+cc_binary(
+ name = "spirv-opt",
+ srcs = [
+ "tools/io.h",
+ "tools/opt/opt.cpp",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":spirv_tools_opt",
+ ":tools_util",
+ ],
+)
+
+cc_binary(
+ name = "spirv-reduce",
+ srcs = [
+ "tools/io.h",
+ "tools/reduce/reduce.cpp",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":spirv_tools_opt",
+ ":spirv_tools_reduce",
+ ":tools_util",
+ ],
+)
+
+cc_binary(
+ name = "spirv-link",
+ srcs = [
+ "tools/io.h",
+ "tools/link/linker.cpp",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [
+ ":spirv_tools",
+ ":spirv_tools_link",
+ ],
+)
+
+cc_binary(
+ name = "spirv-cfg",
+ srcs = [
+ "tools/cfg/bin_to_dot.cpp",
+ "tools/cfg/bin_to_dot.h",
+ "tools/cfg/cfg.cpp",
+ "tools/io.h",
+ ],
+ copts = COMMON_COPTS,
+ visibility = ["//visibility:public"],
+ deps = [":spirv_tools"],
+)
+
+# Unit tests
+
+cc_library(
+ name = "test_common",
+ testonly = 1,
+ srcs = [
+ "test/test_fixture.h",
+ "test/unit_spirv.cpp",
+ "test/unit_spirv.h",
+ ],
+ compatible_with = [],
+ copts = TEST_COPTS,
+ includes = ["test"],
+ linkstatic = 1,
+ deps = [
+ ":spirv_tools",
+ "@com_google_googletest//:gtest",
+ ],
+)
+
+cc_library(
+ name = "link_test_common",
+ testonly = 1,
+ srcs = ["test/link/linker_fixture.h"],
+ compatible_with = [],
+ copts = TEST_COPTS,
+ linkstatic = 1,
+ deps = [
+ ":spirv_tools_link",
+ ":test_common",
+ ],
+)
+
+cc_library(
+ name = "opt_test_common",
+ 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",
+ ],
+ compatible_with = [],
+ copts = TEST_COPTS,
+ linkstatic = 1,
+ deps = [
+ ":spirv_tools_opt",
+ ":test_common",
+ ],
+)
+
+cc_library(
+ name = "reduce_test_common",
+ testonly = 1,
+ srcs = [
+ "test/reduce/reduce_test_util.cpp",
+ "tools/io.h",
+ ],
+ hdrs = ["test/reduce/reduce_test_util.h"],
+ compatible_with = [],
+ copts = TEST_COPTS,
+ linkstatic = 1,
+ deps = [
+ ":spirv_tools_reduce",
+ ":test_common",
+ ],
+)
+
+cc_library(
+ name = "val_test_common",
+ testonly = 1,
+ srcs = [
+ "test/val/val_code_generator.cpp",
+ "test/val/val_fixtures.h",
+ ],
+ hdrs = [
+ "test/val/val_code_generator.h",
+ ],
+ compatible_with = [],
+ copts = TEST_COPTS,
+ linkstatic = 1,
+ deps = [":test_common"],
+)
+
+# PCH (precompiled header) tests only work when using CMake and MSVC on Windows,
+# so they will be skipped in the Bazel builds.
+
+[base_test(
+ name = f[5:-4], # strip test/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/*.cpp"],
+ exclude = [
+ "test/cpp_interface_test.cpp", # has its own base_test below.
+ "test/log_test.cpp", # has its own base_test below.
+ "test/pch_test.cpp", # pch tests are skipped.
+ "test/timer_test.cpp", # has its own base_test below.
+ ],
+)]
+
+# This test uses unistd.h and does not run on Windows.
+base_test(
+ name = "timer_test",
+ srcs = select({
+ "@bazel_tools//src/conditions:windows": [],
+ "//conditions:default": ["test/timer_test.cpp"],
+ }),
+)
+
+base_test(
+ name = "cpp_interface_test",
+ srcs = ["test/cpp_interface_test.cpp"],
+ deps = [":spirv_tools_opt"],
+)
+
+base_test(
+ name = "log_test",
+ srcs = ["test/log_test.cpp"],
+ deps = [":spirv_tools_opt"],
+)
+
+[link_test(
+ name = f[10:-4], # strip test/link/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/link/*.cpp"],
+)]
+
+[opt_test(
+ name = f[9:-4], # strip test/opt/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/opt/*.cpp"],
+ # pch tests are skipped.
+ exclude = ["test/opt/pch_test_opt.cpp"],
+)]
+
+[opt_test(
+ name = "dom_tree_" + f[24:-4], # strip test/opt/dominator_tree/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/opt/dominator_tree/*.cpp"],
+ # pch tests are skipped.
+ exclude = ["test/opt/dominator_tree/pch_test_opt_dom.cpp"],
+)]
+
+[opt_test(
+ name = "loop_" + f[28:-4], # strip test/opt/loop_optimizations/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/opt/loop_optimizations/*.cpp"],
+ # pch tests are skipped.
+ exclude = ["test/opt/loop_optimizations/pch_test_opt_loop.cpp"],
+)]
+
+[reduce_test(
+ name = f[12:-4], # strip test/reduce/, .cpp
+ srcs = [f],
+) for f in glob(["test/reduce/*.cpp"])]
+
+[util_test(
+ name = f[10:-4], # strip test/util/, .cpp
+ srcs = [f],
+) for f in glob(["test/util/*.cpp"])]
+
+[val_test(
+ name = f[9:-4], # strip test/val/, .cpp
+ srcs = [f],
+) for f in glob(
+ ["test/val/*.cpp"],
+ exclude = [
+ "test/val/val_capability_test.cpp", # has its own val_test below.
+ "test/val/val_limits_test.cpp", # has its own val_test below.
+ "test/val/pch_test_val.cpp", # pch tests are skipped.
+ ],
+)]
+
+val_test(
+ name = "capability",
+ size = "large",
+ srcs = ["test/val/val_capability_test.cpp"],
+)
+
+val_test(
+ name = "limits",
+ size = "large",
+ srcs = ["test/val/val_limits_test.cpp"],
+)