Add support for WGSL writing to BUILD.gn BUG=tint:49 Change-Id: I4473176d4177a719b7b2659f765b6b467ac43c84 Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/19682 Reviewed-by: dan sinclair <dsinclair@google.com>
diff --git a/BUILD.gn b/BUILD.gn index 41e7327..a3b566b 100644 --- a/BUILD.gn +++ b/BUILD.gn
@@ -38,6 +38,12 @@ } else { defines += [ "TINT_BUILD_WGSL_READER=0" ] } + + if (tint_build_wgsl_writer) { + defines += [ "TINT_BUILD_WGSL_WRITER=1" ] + } else { + defines += [ "TINT_BUILD_WGSL_WRITER=0" ] + } } # libtint source sets are divided into a non-optional core in :libtint_core and @@ -302,6 +308,22 @@ } } +source_set("libtint_wgsl_writer") { + sources = [ + "src/writer/wgsl/generator.cc", + "src/writer/wgsl/generator.h", + "src/writer/wgsl/generator_impl.cc", + "src/writer/wgsl/generator_impl.h", + ] + + configs += [ ":tint_common_config" ] + + if (build_with_chromium) { + configs -= [ "//build/config/compiler:chromium_code" ] + configs += [ "//build/config/compiler:no_chromium_code" ] + } +} + source_set("libtint") { deps = [ ":libtint_core" ] @@ -317,6 +339,10 @@ deps += [ ":libtint_wgsl_reader" ] } + if (tint_build_wgsl_writer) { + deps += [ ":libtint_wgsl_writer" ] + } + configs += [ ":tint_common_config" ] if (build_with_chromium) {
diff --git a/samples/main.cc b/samples/main.cc index 391380e..e481030 100644 --- a/samples/main.cc +++ b/samples/main.cc
@@ -356,7 +356,7 @@ #if TINT_BUILD_WGSL_WRITER if (options.format == Format::kWgsl) { - auto w = static_cast<tint::writer::wgsl::Generator*>(writer.get()); + auto* w = static_cast<tint::writer::wgsl::Generator*>(writer.get()); std::cout << w->result() << std::endl; } #endif // TINT_BUILD_WGSL_WRITER
diff --git a/src/writer/wgsl/generator_impl.cc b/src/writer/wgsl/generator_impl.cc index 88e54c6..1b99cb3 100644 --- a/src/writer/wgsl/generator_impl.cc +++ b/src/writer/wgsl/generator_impl.cc
@@ -86,7 +86,7 @@ if (!module.entry_points().empty()) out_ << std::endl; - for (const auto& alias : module.alias_types()) { + for (auto* const alias : module.alias_types()) { if (!EmitAliasType(alias)) { return false; } @@ -367,10 +367,10 @@ bool GeneratorImpl::EmitType(ast::type::Type* type) { if (type->IsAlias()) { - auto alias = type->AsAlias(); + auto* alias = type->AsAlias(); out_ << alias->name(); } else if (type->IsArray()) { - auto ary = type->AsArray(); + auto* ary = type->AsArray(); out_ << "array<"; if (!EmitType(ary->type())) { return false; @@ -387,21 +387,21 @@ } else if (type->IsI32()) { out_ << "i32"; } else if (type->IsMatrix()) { - auto mat = type->AsMatrix(); + auto* mat = type->AsMatrix(); out_ << "mat" << mat->columns() << "x" << mat->rows() << "<"; if (!EmitType(mat->type())) { return false; } out_ << ">"; } else if (type->IsPointer()) { - auto ptr = type->AsPointer(); + auto* ptr = type->AsPointer(); out_ << "ptr<" << ptr->storage_class() << ", "; if (!EmitType(ptr->type())) { return false; } out_ << ">"; } else if (type->IsStruct()) { - auto str = type->AsStruct()->impl(); + auto* str = type->AsStruct()->impl(); if (str->decoration() != ast::StructDecoration::kNone) { out_ << "[[" << str->decoration() << "]] "; } @@ -440,7 +440,7 @@ } else if (type->IsU32()) { out_ << "u32"; } else if (type->IsVector()) { - auto vec = type->AsVector(); + auto* vec = type->AsVector(); out_ << "vec" << vec->size() << "<"; if (!EmitType(vec->type())) { return false;
diff --git a/tint_overrides_with_defaults.gni b/tint_overrides_with_defaults.gni index f302f38..5732e2d 100644 --- a/tint_overrides_with_defaults.gni +++ b/tint_overrides_with_defaults.gni
@@ -51,7 +51,10 @@ tint_build_wgsl_reader = false } - # TODO(rharrison): Implement support for the reset of the reader/writers + # Build the WGSL output writer + if (!defined(tint_build_wgsl_writer)) { + tint_build_wgsl_writer = false + } # Generate fuzzers # TODO(rharrison): Implement fuzzer support