tint_ir_fuzzer: make build fail if missing preconditions
Rather than silently fail if tint_build_ir_binary is false, or if
is_asan is enabled in a non-chromium build.
Bug: 345196552
Change-Id: If95534c7d8aab292b613d989923e83abb20fa58d
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/218855
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: James Price <jrprice@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index bcb91ba1..98af4e9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -387,7 +387,9 @@
include(DawnInitializeBuildType)
include(DawnLibrary)
+# Set vars used as conditions in generated CMake build files
set(IS_ASAN ${DAWN_ENABLE_ASAN})
+set(BUILD_WITH_CHROMIUM FALSE)
if (NOT ${TINT_LIB_FUZZING_ENGINE_LINK_OPTIONS} STREQUAL "")
message(STATUS "Using provided LIB_FUZZING_ENGINE options: ${TINT_LIB_FUZZING_ENGINE_LINK_OPTIONS}")
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index 9aaa47b..109d2a1 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -122,6 +122,11 @@
}
if (tint_build_ir_fuzzer) {
+ assert(tint_build_ir_binary,
+ "tint_build_ir_fuzzer requires tint_build_ir_binary")
+ assert(
+ !is_asan || build_with_chromium,
+ "tint_build_ir_fuzzer: ASAN not yet supported in non-Chromium builds (b/345196552)")
defines += [ "TINT_BUILD_IR_FUZZER=1" ]
} else {
defines += [ "TINT_BUILD_IR_FUZZER=0" ]
@@ -317,7 +322,7 @@
}
if (tint_build_ir_fuzzer) {
- if (tint_build_cmds && tint_build_wgsl_reader && tint_build_ir_binary) {
+ if (tint_build_cmds && tint_build_wgsl_reader) {
action("tint_generate_ir_corpus") {
script = "${tint_src_dir}/cmd/fuzz/ir/generate_ir_corpus.py"
sources = [ "${script}" ]
@@ -353,7 +358,7 @@
if (tint_build_tintd) {
deps += [ "${tint_src_dir}/cmd/tintd" ]
}
- if (tint_build_ir_fuzzer && tint_build_ir_binary) {
+ if (tint_build_ir_fuzzer) {
if (tint_build_wgsl_reader) {
deps += [ "${tint_src_dir}/cmd/fuzz/ir/as" ]
}
@@ -370,7 +375,7 @@
deps += [ "${tint_src_dir}/cmd/fuzz/wgsl" ]
}
- if (tint_build_ir_fuzzer && (!is_asan || build_with_chromium)) {
+ if (tint_build_ir_fuzzer) {
deps += [ "${tint_src_dir}/cmd/fuzz/ir" ]
}
}
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index 3515ee4..e662a37 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -59,9 +59,10 @@
endif()
if (TINT_BUILD_IR_FUZZER AND NOT TINT_BUILD_IR_BINARY)
- message(FATAL_ERROR "Building IR fuzzer 'TINT_BUILD_IR_FUZZER' is enabled, "
- "but building IR binary format 'TINT_BUILD_IR_BINARY' is "
- "not")
+ message(FATAL_ERROR "TINT_BUILD_IR_FUZZER requires TINT_BUILD_IR_BINARY")
+endif()
+if (TINT_BUILD_IR_FUZZER AND NOT (((NOT IS_ASAN) OR BUILD_WITH_CHROMIUM)))
+ message(FATAL_ERROR "TINT_BUILD_IR_FUZZER: ASAN not yet supported in non-Chromium builds (b/345196552)")
endif()
################################################################################
diff --git a/src/tint/cmd/fuzz/ir/BUILD.bazel b/src/tint/cmd/fuzz/ir/BUILD.bazel
index 308c902..68cf24d 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.bazel
+++ b/src/tint/cmd/fuzz/ir/BUILD.bazel
@@ -38,16 +38,6 @@
load("@bazel_skylib//lib:selects.bzl", "selects")
alias(
- name = "build_with_chromium",
- actual = "//src/tint:build_with_chromium_true",
-)
-
-alias(
- name = "_not_is_asan_",
- actual = "//src/tint:is_asan_false",
-)
-
-alias(
name = "tint_build_glsl_writer",
actual = "//src/tint:tint_build_glsl_writer_true",
)
@@ -88,26 +78,10 @@
)
selects.config_setting_group(
- name = "_not_is_asan__or_build_with_chromium",
- match_any = [
- "_not_is_asan_",
- "build_with_chromium",
- ],
-)
-
-selects.config_setting_group(
name = "tint_build_ir_binary_and_tint_build_ir_fuzzer",
match_all = [
":tint_build_ir_binary",
":tint_build_ir_fuzzer",
],
)
-selects.config_setting_group(
- name = "tint_build_ir_binary_and_tint_build_ir_fuzzer_and___not_is_asan__or_build_with_chromium_",
- match_all = [
- ":tint_build_ir_binary",
- ":tint_build_ir_fuzzer",
- ":_not_is_asan__or_build_with_chromium",
- ],
-)
diff --git a/src/tint/cmd/fuzz/ir/BUILD.cfg b/src/tint/cmd/fuzz/ir/BUILD.cfg
index 5b903ba..84ec9c5 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.cfg
+++ b/src/tint/cmd/fuzz/ir/BUILD.cfg
@@ -1,7 +1,6 @@
{
"fuzz_cmd": {
- /* Fuzzer has known false positive with ASAN in standalone builds */
- "Condition": "tint_build_ir_binary && tint_build_ir_fuzzer && (!is_asan || build_with_chromium)",
+ "Condition": "tint_build_ir_binary && tint_build_ir_fuzzer",
/* The Tint fuzzer executable for IR-input. */
"OutputName": "tint_ir_fuzzer",
"AdditionalDependencies": {
diff --git a/src/tint/cmd/fuzz/ir/BUILD.cmake b/src/tint/cmd/fuzz/ir/BUILD.cmake
index edb4bd4..2e7c241 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.cmake
+++ b/src/tint/cmd/fuzz/ir/BUILD.cmake
@@ -37,11 +37,11 @@
include(cmd/fuzz/ir/as/BUILD.cmake)
include(cmd/fuzz/ir/dis/BUILD.cmake)
-if(TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER AND ((NOT IS_ASAN) OR BUILD_WITH_CHROMIUM))
+if(TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER)
################################################################################
# Target: tint_cmd_fuzz_ir_fuzz_cmd
# Kind: fuzz_cmd
-# Condition: TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER AND ((NOT IS_ASAN) OR BUILD_WITH_CHROMIUM)
+# Condition: TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER
################################################################################
tint_add_target(tint_cmd_fuzz_ir_fuzz_cmd fuzz_cmd
cmd/fuzz/ir/main_fuzz.cc
@@ -131,7 +131,7 @@
tint_target_set_output_name(tint_cmd_fuzz_ir_fuzz_cmd fuzz_cmd "tint_ir_fuzzer")
-endif(TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER AND ((NOT IS_ASAN) OR BUILD_WITH_CHROMIUM))
+endif(TINT_BUILD_IR_BINARY AND TINT_BUILD_IR_FUZZER)
################################################################################
# Target: tint_cmd_fuzz_ir_fuzz
# Kind: fuzz
diff --git a/src/tint/cmd/fuzz/ir/BUILD.gn b/src/tint/cmd/fuzz/ir/BUILD.gn
index a2af4f9..679ca8d 100644
--- a/src/tint/cmd/fuzz/ir/BUILD.gn
+++ b/src/tint/cmd/fuzz/ir/BUILD.gn
@@ -80,8 +80,7 @@
]
}
}
-if (tint_build_ir_binary && tint_build_ir_fuzzer &&
- (!is_asan || build_with_chromium)) {
+if (tint_build_ir_binary && tint_build_ir_fuzzer) {
tint_fuzzer_test("ir") {
output_name = "tint_ir_fuzzer"
sources = [ "main_fuzz.cc" ]