gyp: generate "everything" and "most" targets instead of "all"
"make all" at the toplevel now chains to "make everything"

BUG=http://code.google.com/p/skia/issues/detail?id=932
Review URL: https://codereview.appspot.com/6651064

git-svn-id: http://skia.googlecode.com/svn/trunk@6116 2bbb7eff-a529-9590-31e7-b0007b416f81
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' ],
-        }],
       ],
     },
   ],