diff --git a/BUILD.gn b/BUILD.gn
index 0a3fe45..64d1cfe 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -580,10 +580,17 @@
 # GLFW wrapping target
 ###############################################################################
 
-# GLFW does not support Android or Fuchsia, so provide a small mock library
-# that can be linked into the Dawn tests on these platforms. Otherwise, use
-# the real library from third_party/.
-if (is_fuchsia) {
+# GLFW does not support ChromeOS, Android or Fuchsia, so provide a small mock
+# library that can be linked into the Dawn tests on these platforms. Otherwise,
+# use the real library from third_party/.
+if (is_win || is_linux || is_mac) {
+  group("dawn_glfw") {
+    public_deps = [
+      "third_party:glfw",
+    ]
+  }
+} else if (is_fuchsia) {
+  # The mock implementation of GLFW on Fuchsia
   config("dawn_glfw_public_config") {
     # Allow inclusion of <GLFW/glfw3.h>
     configs = [ "third_party:glfw_public" ]
@@ -610,10 +617,8 @@
     ]
   }
 } else {
+  # Just skip GLFW on other systems
   group("dawn_glfw") {
-    public_deps = [
-      "third_party:glfw",
-    ]
   }
 }
 
@@ -815,7 +820,6 @@
   testonly = true
 
   deps = [
-    ":dawn_glfw",
     ":dawn_utils",
     ":libdawn_native",
     ":libdawn_wire",
diff --git a/third_party/BUILD.gn b/third_party/BUILD.gn
index 53e56db..d45df8e 100644
--- a/third_party/BUILD.gn
+++ b/third_party/BUILD.gn
@@ -231,44 +231,44 @@
 # GLFW - good enough build targets
 ###############################################################################
 
-glfw_dir = dawn_glfw_dir
+# Only expose GLFW targets on platforms where GLFW is supported: otherwise they
+# might get discovered by GN when another target in this file is referenced,
+# and GLFW will bbe built as part of "all" builds, causing compilation failures.
+if (is_win || is_linux || is_mac) {
+  glfw_dir = dawn_glfw_dir
 
-config("glfw_public") {
-  include_dirs = [ "${glfw_dir}/include" ]
+  config("glfw_public") {
+    include_dirs = [ "${glfw_dir}/include" ]
 
-  if (is_win) {
-    defines = [ "_GLFW_WIN32" ]
+    if (is_win) {
+      defines = [ "_GLFW_WIN32" ]
+    }
+
+    if (is_mac) {
+      defines = [ "_GLFW_COCOA" ]
+    }
+
+    if (is_linux) {
+      defines = [ "_GLFW_X11" ]
+    }
   }
 
-  if (is_mac) {
-    defines = [ "_GLFW_COCOA" ]
-  }
+  static_library("glfw") {
+    public_configs = [ ":glfw_public" ]
 
-  if (is_linux) {
-    defines = [ "_GLFW_X11" ]
-  }
-}
+    configs -= [ "//build/config/compiler:chromium_code" ]
+    configs += [ "//build/config/compiler:no_chromium_code" ]
 
-static_library("glfw") {
-  public_configs = [ ":glfw_public" ]
+    if (is_msvc) {
+      # nonstandard extension, function/data pointer conversion in expression
+      cflags_c = [ "/wd4152" ]
+    } else {
+      cflags_c = [
+        "-Wno-sign-compare",
+        "-Wno-missing-field-initializers",
+      ]
+    }
 
-  configs -= [ "//build/config/compiler:chromium_code" ]
-  configs += [ "//build/config/compiler:no_chromium_code" ]
-
-  if (is_msvc) {
-    # nonstandard extension, function/data pointer conversion in expression
-    cflags_c = [ "/wd4152" ]
-  } else {
-    cflags_c = [
-      "-Wno-sign-compare",
-      "-Wno-missing-field-initializers",
-    ]
-  }
-
-  # NOTE: For some unknown reason, this library gets build when is_fuchsia
-  # is true, even if absolutely nothing references it, as checked with
-  # `gn refs out/Fuchsia third_party/dawn/third_party:glfw --all`
-  if (!is_fuchsia) {
     sources = [
       "${glfw_dir}/include/GLFW/glfw3.h",
       "${glfw_dir}/include/GLFW/glfw3native.h",
@@ -284,79 +284,79 @@
       "${glfw_dir}/src/vulkan.c",
       "${glfw_dir}/src/window.c",
     ]
-  }
-  libs = []
+    libs = []
 
-  if (is_win) {
-    sources += [
-      "${glfw_dir}/src/wgl_context.c",
-      "${glfw_dir}/src/wgl_context.h",
-      "${glfw_dir}/src/win32_init.c",
-      "${glfw_dir}/src/win32_joystick.c",
-      "${glfw_dir}/src/win32_joystick.h",
-      "${glfw_dir}/src/win32_monitor.c",
-      "${glfw_dir}/src/win32_platform.h",
-      "${glfw_dir}/src/win32_thread.c",
-      "${glfw_dir}/src/win32_time.c",
-      "${glfw_dir}/src/win32_window.c",
-    ]
-  }
+    if (is_win) {
+      sources += [
+        "${glfw_dir}/src/wgl_context.c",
+        "${glfw_dir}/src/wgl_context.h",
+        "${glfw_dir}/src/win32_init.c",
+        "${glfw_dir}/src/win32_joystick.c",
+        "${glfw_dir}/src/win32_joystick.h",
+        "${glfw_dir}/src/win32_monitor.c",
+        "${glfw_dir}/src/win32_platform.h",
+        "${glfw_dir}/src/win32_thread.c",
+        "${glfw_dir}/src/win32_time.c",
+        "${glfw_dir}/src/win32_window.c",
+      ]
+    }
 
-  if (is_linux || is_mac) {
-    sources += [
-      "${glfw_dir}/src/posix_thread.c",
-      "${glfw_dir}/src/posix_thread.h",
-    ]
-  }
+    if (is_linux || is_mac) {
+      sources += [
+        "${glfw_dir}/src/posix_thread.c",
+        "${glfw_dir}/src/posix_thread.h",
+      ]
+    }
 
-  if (is_linux) {
-    sources += [
-      "${glfw_dir}/src/glx_context.c",
-      "${glfw_dir}/src/glx_context.h",
-      "${glfw_dir}/src/linux_joystick.c",
-      "${glfw_dir}/src/linux_joystick.h",
-      "${glfw_dir}/src/posix_time.c",
-      "${glfw_dir}/src/posix_time.h",
-      "${glfw_dir}/src/x11_init.c",
-      "${glfw_dir}/src/x11_monitor.c",
-      "${glfw_dir}/src/x11_platform.h",
-      "${glfw_dir}/src/x11_window.c",
-      "${glfw_dir}/src/xkb_unicode.c",
-      "${glfw_dir}/src/xkb_unicode.h",
-    ]
+    if (is_linux) {
+      sources += [
+        "${glfw_dir}/src/glx_context.c",
+        "${glfw_dir}/src/glx_context.h",
+        "${glfw_dir}/src/linux_joystick.c",
+        "${glfw_dir}/src/linux_joystick.h",
+        "${glfw_dir}/src/posix_time.c",
+        "${glfw_dir}/src/posix_time.h",
+        "${glfw_dir}/src/x11_init.c",
+        "${glfw_dir}/src/x11_monitor.c",
+        "${glfw_dir}/src/x11_platform.h",
+        "${glfw_dir}/src/x11_window.c",
+        "${glfw_dir}/src/xkb_unicode.c",
+        "${glfw_dir}/src/xkb_unicode.h",
+      ]
 
-    libs += [
-      "rt",
-      "dl",
-      "X11",
-      "Xcursor",
-      "Xinerama",
-      "Xrandr",
-    ]
-  }
+      libs += [
+        "rt",
+        "dl",
+        "X11",
+        "Xcursor",
+        "Xinerama",
+        "Xrandr",
+      ]
+    }
 
-  if (is_mac) {
-    sources += [
-      "${glfw_dir}/src/cocoa_init.m",
-      "${glfw_dir}/src/cocoa_joystick.h",
-      "${glfw_dir}/src/cocoa_joystick.m",
-      "${glfw_dir}/src/cocoa_monitor.m",
-      "${glfw_dir}/src/cocoa_platform.h",
-      "${glfw_dir}/src/cocoa_time.c",
-      "${glfw_dir}/src/cocoa_window.m",
-      "${glfw_dir}/src/nsgl_context.h",
-      "${glfw_dir}/src/nsgl_context.m",
-    ]
-    libs += [
-      "Cocoa.framework",
-      "IOKit.framework",
-      "CoreFoundation.framework",
-      "CoreVideo.framework",
-    ]
-    cflags_objc = [
-      "-Wno-sign-compare",
-      "-Wno-unguarded-availability",
-    ]
+    if (is_mac) {
+      sources += [
+        "${glfw_dir}/src/cocoa_init.m",
+        "${glfw_dir}/src/cocoa_joystick.h",
+        "${glfw_dir}/src/cocoa_joystick.m",
+        "${glfw_dir}/src/cocoa_monitor.m",
+        "${glfw_dir}/src/cocoa_platform.h",
+        "${glfw_dir}/src/cocoa_time.c",
+        "${glfw_dir}/src/cocoa_window.m",
+        "${glfw_dir}/src/nsgl_context.h",
+        "${glfw_dir}/src/nsgl_context.m",
+      ]
+      libs += [
+        "Cocoa.framework",
+        "IOKit.framework",
+        "CoreFoundation.framework",
+        "CoreVideo.framework",
+      ]
+      cflags_objc = [
+        "-Wno-sign-compare",
+        "-Wno-unguarded-availability",
+      ]
+    }
   }
 }
 
