diff --git a/src/dawn/native/ShaderModule.cpp b/src/dawn/native/ShaderModule.cpp
index 779e6ae..136158b 100644
--- a/src/dawn/native/ShaderModule.cpp
+++ b/src/dawn/native/ShaderModule.cpp
@@ -380,6 +380,7 @@
 
         ResultOrError<tint::Program> ParseWGSL(const tint::Source::File* file,
                                                OwnedCompilationMessages* outMessages) {
+#if TINT_BUILD_WGSL_READER
             tint::Program program = tint::reader::wgsl::Parse(file);
             if (outMessages != nullptr) {
                 outMessages->AddMessages(program.Diagnostics());
@@ -391,10 +392,14 @@
             }
 
             return std::move(program);
+#else
+            return DAWN_FORMAT_VALIDATION_ERROR("TINT_BUILD_WGSL_READER is not defined.");
+#endif
         }
 
         ResultOrError<tint::Program> ParseSPIRV(const std::vector<uint32_t>& spirv,
                                                 OwnedCompilationMessages* outMessages) {
+#if TINT_BUILD_SPV_READER
             tint::Program program = tint::reader::spirv::Parse(spirv);
             if (outMessages != nullptr) {
                 outMessages->AddMessages(program.Diagnostics());
@@ -405,6 +410,10 @@
             }
 
             return std::move(program);
+#else
+            return DAWN_FORMAT_VALIDATION_ERROR("TINT_BUILD_SPV_READER is not defined.");
+
+#endif
         }
 
         std::vector<uint64_t> GetBindGroupMinBufferSizes(const BindingGroupInfoMap& shaderBindings,
@@ -997,6 +1006,7 @@
         ShaderModuleWGSLDescriptor newWgslDesc;
         std::string newWgslCode;
         if (spirvDesc && device->IsToggleEnabled(Toggle::ForceWGSLStep)) {
+#if TINT_BUILD_WGSL_WRITER
             std::vector<uint32_t> spirv(spirvDesc->code, spirvDesc->code + spirvDesc->codeSize);
             tint::Program program;
             DAWN_TRY_ASSIGN(program, ParseSPIRV(spirv, outMessages));
@@ -1010,6 +1020,11 @@
 
             spirvDesc = nullptr;
             wgslDesc = &newWgslDesc;
+#else
+            device->EmitLog(
+                WGPULoggingType_Info,
+                "Toggle::ForceWGSLStep skipped because TINT_BUILD_WGSL_WRITER is not defined\n");
+#endif
         }
 
         if (spirvDesc) {
diff --git a/src/dawn/native/vulkan/ShaderModuleVk.cpp b/src/dawn/native/vulkan/ShaderModuleVk.cpp
index d56e599..da9ca3d 100644
--- a/src/dawn/native/vulkan/ShaderModuleVk.cpp
+++ b/src/dawn/native/vulkan/ShaderModuleVk.cpp
@@ -203,6 +203,7 @@
                                                    transformInputs, nullptr, nullptr));
         }
 
+#if TINT_BUILD_SPV_WRITER
         tint::writer::spirv::Options options;
         options.emit_vertex_point_size = true;
         options.disable_workgroup_init = GetDevice()->IsToggleEnabled(Toggle::DisableWorkgroupInit);
@@ -249,6 +250,9 @@
                      GetLabel());
 
         return std::move(moduleAndSpirv);
+#else
+        return DAWN_INTERNAL_ERROR("TINT_BUILD_SPV_WRITER is not defined.");
+#endif
     }
 
 }  // namespace dawn::native::vulkan
