# Copyright 2022 The Dawn Authors # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Note: This file is intentionally not used by any other BUILD.gn in Dawn. # Instead, Chromium depends directly on this file to build the WebGPU CTS. # Scripts called from this file assume Dawn is checked out inside Chromium. import("../../../scripts/dawn_overrides_with_defaults.gni") group("webgpu-cts") { public_deps = [ ":compile_src", ":copy_resources", ":verify_gen_ts_dep_list", ] data = [ "test_list.txt" ] } list_from_ts_sources_txt = read_file("ts_sources.txt", "list lines") ts_source_inputs = [ "../../webgpu-cts/tsconfig.json" ] foreach(file, list_from_ts_sources_txt) { ts_source_inputs += [ "../../webgpu-cts/$file" ] } js_outputs = [] foreach(ts_file, filter_exclude(list_from_ts_sources_txt, [ "*.d.ts" ])) { js_file = string_replace(ts_file, ".ts", ".js") js_node_file = string_replace(js_file, "src/", "src-node/") js_outputs += [ "$target_gen_dir/../../webgpu-cts/$js_file" ] if (js_node_file != "src-node/common/runtime/wpt.js" && js_node_file != "src-node/common/runtime/standalone.js" && js_node_file != "src-node/common/runtime/helper/test_worker.js" && js_node_file != "src-node/webgpu/web_platform/worker/worker_launcher.js") { js_outputs += [ "$target_gen_dir/../../webgpu-cts/$js_node_file" ] } } action("compile_src") { script = "${dawn_root}/webgpu-cts/scripts/compile_src.py" inputs = [ "//third_party/node/node_modules/typescript/lib/tsc.js", "//third_party/node/node.py", "${dawn_root}/webgpu-cts/scripts/tsc_ignore_errors.py", # If the only change is that a file is deleted, we still need to # rebuild so that listing.js gets updated. "ts_sources.txt", ] + ts_source_inputs outputs = js_outputs data = js_outputs args = [ rebase_path("$target_gen_dir/../../webgpu-cts", root_build_dir) ] } list_from_resource_files_txt = read_file("resource_files.txt", "list lines") resource_file_inputs = [] foreach(file, list_from_resource_files_txt) { resource_file_inputs += [ "$file" ] } copy("copy_resources") { sources = [] data = [] foreach(resource_file, resource_file_inputs) { sources += [ "../../webgpu-cts/src/resources/$resource_file" ] # Copy into resources/, instead of src/resources/, because compile_src # wipes src/ before running. data += [ "$target_gen_dir/../../webgpu-cts/resources/$resource_file" ] } outputs = [ "$target_gen_dir/../../webgpu-cts/resources/{{source_file_part}}" ] } action("verify_gen_ts_dep_list") { script = "${dawn_root}/webgpu-cts/scripts/gen_ts_dep_lists.py" inputs = [ "../../../DEPS", "resource_files.txt", "ts_sources.txt", ] outputs = [ "$target_out_dir/run_$target_name.stamp" ] args = [ "--check", "--stamp", rebase_path(outputs[0], root_build_dir), ] }