diff --git a/Makefile b/Makefile
index e4ec9ef..aa5c136 100644
--- a/Makefile
+++ b/Makefile
@@ -25,21 +25,27 @@
 # If you want more fine-grained control, you can run gyp and then build the
 # gyp-generated projects yourself.
 #
-# See http://code.google.com/p/skia/wiki/DocRoot for complete documentation.
+# See https://sites.google.com/site/skiadocs/ for complete documentation.
 
 BUILDTYPE ?= Debug
 CWD := $(shell pwd)
-ALL_TARGETS := skia_base_libs \
-               bench \
-               gm \
-               most \
-               SampleApp \
-               tests \
-               tools
 
-ifneq (,$(findstring skia_os=android, $(GYP_DEFINES)))
-  ALL_TARGETS += SkiaAndroidApp
-endif
+# Soon we should be able to get rid of VALID_TARGETS, and just pass control
+# to the gyp-generated Makefile for *any* target name.
+# But that will be a bit complicated, so let's keep it for a future CL.
+# Tracked as https://code.google.com/p/skia/issues/detail?id=947 ('eliminate
+# need for VALID_TARGETS in toplevel Makefile')
+VALID_TARGETS := \
+                 bench \
+                 debugger \
+                 everything \
+                 gm \
+                 most \
+                 SampleApp \
+                 SkiaAndroidApp \
+                 skia_base_libs \
+                 tests \
+                 tools
 
 # Default target.  This must be listed before all other targets.
 .PHONY: default
@@ -54,21 +60,19 @@
 
 uname := $(shell uname)
 ifneq (,$(findstring CYGWIN, $(uname)))
-  $(error Cannot build using Make on Windows. See http://code.google.com/p/skia/wiki/GettingStartedOnWindows)
+  $(error Cannot build using Make on Windows. See https://sites.google.com/site/skiadocs/user-documentation/quick-start-guides/windows)
 endif
 
+# If user requests "make all", chain to our explicitly-declared "everything"
+# target. See https://code.google.com/p/skia/issues/detail?id=932 ("gyp
+# automatically creates "all" target on some build flavors but not others")
 .PHONY: all
-all: $(ALL_TARGETS)
+all: everything
 
 .PHONY: clean
 clean:
 	rm -rf out xcodebuild
 
-# Add the debugger to the target list after the 'all' target is defined so that the
-# debugger is only executed with 'make debugger' and not 'make all' as well. The reason
-# for this is unless the user has Qt installed the debugger target will fail.
-ALL_TARGETS += debugger
-
 # Run gyp no matter what.
 .PHONY: gyp
 gyp:
@@ -99,8 +103,8 @@
 # the gyp-generated buildfiles.
 #
 # For the Mac, we create a convenience symlink to the generated binary.
-.PHONY: $(ALL_TARGETS)
-$(ALL_TARGETS):: gyp_if_needed
+.PHONY: $(VALID_TARGETS)
+$(VALID_TARGETS):: gyp_if_needed
 ifneq (,$(findstring skia_os=android, $(GYP_DEFINES)))
 	$(MAKE) -C out $@ BUILDTYPE=$(BUILDTYPE)
 else ifneq (,$(findstring Linux, $(uname)))
diff --git a/gyp/all.gyp b/gyp/all.gyp
deleted file mode 100644
index 37844bb..0000000
--- a/gyp/all.gyp
+++ /dev/null
@@ -1,41 +0,0 @@
-# Creates a Makefile that is capable of building all executable targets.
-#
-# To build on Linux:
-#  ./gyp_skia && make all
-#
-# Building on other platforms not tested yet.
-#
-
-#
-#
-#
-#
-#
-# THIS IS DEPRECATED IN FAVOR OF trunk/skia.gyp !!!
-# Questions? Contact epoger@google.com
-#
-#
-#
-#
-
-{
-  'targets': [
-    {
-      'target_name': 'all',
-      'type': 'none',
-      'dependencies': [
-        'bench.gyp:bench',
-        'gm.gyp:gm',
-        'SampleApp.gyp:SampleApp',
-        'tests.gyp:tests',
-        'tools.gyp:tools',
-      ],
-    },
-  ],
-}
-
-# Local Variables:
-# tab-width:2
-# indent-tabs-mode:nil
-# End:
-# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/gyp/everything.gyp b/gyp/everything.gyp
new file mode 100644
index 0000000..2cecd92
--- /dev/null
+++ b/gyp/everything.gyp
@@ -0,0 +1,31 @@
+# Build EVERYTHING provided by Skia.
+# (Start with the "most" target, and then add targets that we intentionally
+# left out of "most".  See most.gyp for an explanation of which targets are
+# left out of "most".)
+#
+# We used to call this the 'all' target, but in SOME cases that
+# conflicted with an automatically-generated 'all' target.
+# See https://code.google.com/p/skia/issues/detail?id=932
+#
+{
+  'targets': [
+    {
+      'target_name': 'everything',
+      'type': 'none',
+      'dependencies': ['most.gyp:most'],
+      'conditions': [
+        ['skia_os == "ios" or skia_os == "android" or (skia_os == "mac" and skia_arch_width == 32)', {
+          # debugger is not supported on this platform
+        }, {
+          'dependencies': [ 'debugger.gyp:debugger' ],
+        }],
+      ],
+    },
+  ],
+}
+
+# Local Variables:
+# tab-width:2
+# indent-tabs-mode:nil
+# End:
+# vim: set expandtab tabstop=2 shiftwidth=2:
diff --git a/make.py b/make.py
index 03421fe..faee183 100644
--- a/make.py
+++ b/make.py
@@ -24,7 +24,6 @@
 TARGET_CLEAN   = 'clean'
 TARGET_DEFAULT = 'most'
 TARGET_GYP     = 'gyp'
-LIST_OF_ALL_TARGETS = ['SampleApp', 'bench', 'gm', 'tests', 'tools']
 
 SCRIPT_DIR = os.path.abspath(os.path.dirname(__file__))
 OUT_SUBDIR = 'out'
@@ -141,8 +140,11 @@
 
     targets = []
     for arg in args:
+        # If user requests "make all", chain to our explicitly-declared "everything"
+        # target. See https://code.google.com/p/skia/issues/detail?id=932 ("gyp
+        # automatically creates "all" target on some build flavors but not others")
         if arg == TARGET_ALL:
-            targets.extend(LIST_OF_ALL_TARGETS)
+            targets.append('everything')
         elif arg == TARGET_CLEAN:
             MakeClean()
         elif arg.startswith('BUILDTYPE='):
diff --git a/skia.gyp b/skia.gyp
index 0f3f375..34c0528 100644
--- a/skia.gyp
+++ b/skia.gyp
@@ -6,36 +6,16 @@
 # More targets are defined within the gyp/ directory, but those are
 # not intended for external use and may change without notice.
 #
-# Full documentation at http://code.google.com/p/skia/wiki/DocRoot
+# Full documentation at https://sites.google.com/site/skiadocs/
 #
 {
   'targets': [
     {
-      # Use this target to build everything provided by Skia.
-      'target_name': 'all',
+      'target_name': 'alltargets',
       'type': 'none',
       'dependencies': [
-        # The minimal set of static libraries for basic Skia functionality.
-        'gyp/skia_base_libs.gyp:skia_base_libs',
-
-        'gyp/bench.gyp:bench',
-        'gyp/gm.gyp:gm',
+        'gyp/everything.gyp:everything',
         'gyp/most.gyp:most',
-        'gyp/SampleApp.gyp:SampleApp',
-        'gyp/tests.gyp:tests',
-        'gyp/tools.gyp:tools',
-      ],
-      'conditions': [
-        ['skia_os == "android"', {
-          'dependencies': [
-            'gyp/android_system.gyp:SkiaAndroidApp',
-          ],
-        }],
-
-        # The debugger is not supported for iOS, Android and 32-bit Mac builds.
-        ['skia_os != "ios" and skia_os != "android" and (skia_os != "mac" or skia_arch_width == 64)', {
-          'dependencies': [ 'gyp/debugger.gyp:debugger' ],
-        }],
       ],
     },
   ],
