BUILD.gn: Directly depend on spvtools targets

Spvtools recently added support for the vkdebuginfo instructions,
causing roll failures since Tint build files didn't generate the
headers for them. Instead of adding more generator stuff in Tint's
BUILD.gn files, this commit removes everything in favor of directly
referencing spvtools' targets.

In follow-up work, the references to spvtools_internal_config will
be changed to a more narrowly scoped target so that spvtools'
warning suppressions don't get propagated to Tint.

Bug:chromium:1228274

Change-Id: I5e28c9cd978afd3cfbc941c09decf5a6e7e1554a
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/58840
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
This commit is contained in:
Corentin Wallez 2021-07-20 12:34:00 +00:00 committed by Tint LUCI CQ
parent dbbe193b68
commit c6a73298c4
1 changed files with 9 additions and 131 deletions

View File

@ -81,133 +81,6 @@ config("tint_config") {
} }
} }
###############################################################################
# Generated - Generated source files
###############################################################################
# These are copies of rules from SPIRV-Tools with the names tweaked to be Tint
# specific. They are needed here because referencing generated files in sibling
# packages is difficult/impossible in Chromium. Parts of Tint's SPIRV handling
# code depend on internal parts of SPIRV-Tools. This causes issues because when
# Tint references the internal headers, since it causes a dependency on these
# generated files, but they are not visible in the context building Tint. Thus
# Tint generates its own copy of the generated files. Since they come from the
# same source of truth, they should not vary.
template("tint_core_tables") {
assert(defined(invoker.version), "Need version in $target_name generation.")
action("tint_core_tables_" + target_name) {
script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"
version = invoker.version
core_json_file = "${tint_spirv_headers_dir}/include/spirv/$version/spirv.core.grammar.json"
core_insts_file = "${target_gen_dir}/core.insts-$version.inc"
operand_kinds_file = "${target_gen_dir}/operand.kinds-$version.inc"
debuginfo_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
cldebuginfo100_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
sources = [
cldebuginfo100_insts_file,
core_json_file,
debuginfo_insts_file,
]
outputs = [
core_insts_file,
operand_kinds_file,
]
args = [
"--spirv-core-grammar",
rebase_path(core_json_file, root_build_dir),
"--core-insts-output",
rebase_path(core_insts_file, root_build_dir),
"--extinst-debuginfo-grammar",
rebase_path(debuginfo_insts_file, root_build_dir),
"--extinst-cldebuginfo100-grammar",
rebase_path(cldebuginfo100_insts_file, root_build_dir),
"--operand-kinds-output",
rebase_path(operand_kinds_file, root_build_dir),
]
}
}
template("tint_core_enums") {
assert(defined(invoker.version), "Need version in $target_name generation.")
action("tint_core_enums_" + target_name) {
script = "${tint_spirv_tools_dir}/utils/generate_grammar_tables.py"
version = invoker.version
core_json_file = "${tint_spirv_headers_dir}/include/spirv/$version/spirv.core.grammar.json"
debuginfo_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
cldebuginfo100_insts_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
extension_enum_file = "${target_gen_dir}/extension_enum.inc"
extension_map_file = "${target_gen_dir}/enum_string_mapping.inc"
args = [
"--spirv-core-grammar",
rebase_path(core_json_file, root_build_dir),
"--extinst-debuginfo-grammar",
rebase_path(debuginfo_insts_file, root_build_dir),
"--extinst-cldebuginfo100-grammar",
rebase_path(cldebuginfo100_insts_file, root_build_dir),
"--extension-enum-output",
rebase_path(extension_enum_file, root_build_dir),
"--enum-string-mapping-output",
rebase_path(extension_map_file, root_build_dir),
]
inputs = [
core_json_file,
debuginfo_insts_file,
cldebuginfo100_insts_file,
]
outputs = [
extension_enum_file,
extension_map_file,
]
}
}
template("tint_language_header") {
assert(defined(invoker.name), "Need name in $target_name generation.")
action("tint_language_header_" + target_name) {
script = "${tint_spirv_tools_dir}/utils/generate_language_headers.py"
name = invoker.name
extinst_output_path = "${target_gen_dir}/${name}.h"
args = [
"--extinst-grammar",
rebase_path(invoker.grammar_file, root_build_dir),
"--extinst-output-path",
rebase_path(extinst_output_path, root_build_dir),
]
inputs = [ invoker.grammar_file ]
outputs = [ "${extinst_output_path}" ]
}
}
tint_core_tables("unified1") {
version = "unified1"
}
tint_core_enums("unified1") {
version = "unified1"
}
tint_language_header("debuginfo") {
name = "DebugInfo"
grammar_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.debuginfo.grammar.json"
}
tint_language_header("cldebuginfo100") {
name = "OpenCLDebugInfo100"
grammar_file = "${tint_spirv_headers_dir}/include/spirv/unified1/extinst.opencl.debuginfo.100.grammar.json"
}
############################################################################### ###############################################################################
# Helper library for IO operations # Helper library for IO operations
# Only to be used by tests and sample executable # Only to be used by tests and sample executable
@ -267,11 +140,12 @@ template("libtint_source_set") {
deps = [] deps = []
} }
deps += [ deps += [
":tint_core_enums_unified1",
":tint_core_tables_unified1",
":tint_language_header_cldebuginfo100",
":tint_language_header_debuginfo",
"${tint_spirv_headers_dir}:spv_headers", "${tint_spirv_headers_dir}:spv_headers",
"${tint_spirv_tools_dir}:spvtools_core_enums_unified1",
"${tint_spirv_tools_dir}:spvtools_core_tables_unified1",
"${tint_spirv_tools_dir}:spvtools_language_header_cldebuginfo100",
"${tint_spirv_tools_dir}:spvtools_language_header_vkdebuginfo100",
"${tint_spirv_tools_dir}:spvtools_language_header_debuginfo",
"${tint_spirv_tools_dir}:spvtools_headers", "${tint_spirv_tools_dir}:spvtools_headers",
] ]
@ -728,6 +602,10 @@ libtint_source_set("libtint_spv_reader_src") {
":libtint_core_src", ":libtint_core_src",
"${tint_spirv_tools_dir}/:spvtools_opt", "${tint_spirv_tools_dir}/:spvtools_opt",
] ]
public_configs = [
"${tint_spirv_tools_dir}/:spvtools_internal_config"
]
} }
libtint_source_set("libtint_spv_writer_src") { libtint_source_set("libtint_spv_writer_src") {