build iOS with 'make all'

This builds all skia tests by treating iOS tools
as executable applications. A few warnings were
fixed as well.

Removed old trace draw code and remnants.
Review URL: https://codereview.appspot.com/6597063

git-svn-id: http://skia.googlecode.com/svn/trunk@5776 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/bench/benchmain.cpp b/bench/benchmain.cpp
index dc9b257..eb8c4ed 100644
--- a/bench/benchmain.cpp
+++ b/bench/benchmain.cpp
@@ -397,7 +397,8 @@
     SkDebugf("    -h|--help : Show this help message.\n");
 }
 
-int main (int argc, char * const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
 #ifdef SK_ENABLE_INST_COUNT
     gPrintInstCount = true;
 #endif
@@ -907,3 +908,10 @@
 
     return 0;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
+
diff --git a/experimental/SimpleiOSApp/SimpleApp.mm b/experimental/SimpleiOSApp/SimpleApp.mm
index 12dff34..dba8bcc 100644
--- a/experimental/SimpleiOSApp/SimpleApp.mm
+++ b/experimental/SimpleiOSApp/SimpleApp.mm
@@ -3,6 +3,10 @@
 #import "SkWindow.h"
 #include "SkGraphics.h"
 #include "SkCGUtils.h"
+
+extern void tool_main(int argc, char *argv[]);
+void save_args(int argc, char *argv[]);
+
 class SkSampleView : public SkView {
 public:
     SkSampleView() {
@@ -15,7 +19,7 @@
         SkPaint p;
         p.setTextSize(20);
         p.setAntiAlias(true);
-        canvas->drawText("Hello World!", 13, 50, 30, p);
+        canvas->drawText("finished", 13, 50, 30, p);
         SkRect r = {50, 50, 80, 80};
         p.setColor(0xAA11EEAA);
         canvas->drawRect(r, p);
@@ -34,6 +38,14 @@
     SkEvent::Term();
 }
 
+int saved_argc;
+char** saved_argv;
+
+void save_args(int argc, char *argv[]) {
+    saved_argc = argc;
+    saved_argv = argv;
+}
+
 class FillLayout : public SkView::Layout {
 protected:
     virtual void onLayoutChildren(SkView* parent) {
@@ -46,6 +58,7 @@
 @implementation SimpleApp
 
 - (id)initWithDefaults {
+    (void) tool_main(saved_argc, saved_argv);
     if (self = [super initWithDefaults]) {
         fWind = new SkOSWindow(self);
         fWind->setLayout(new FillLayout, false);
diff --git a/experimental/SimpleiOSApp/tool-Info.plist b/experimental/SimpleiOSApp/tool-Info.plist
new file mode 100644
index 0000000..6f8c6d8
--- /dev/null
+++ b/experimental/SimpleiOSApp/tool-Info.plist
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleDisplayName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundleExecutable</key>
+	<string>${EXECUTABLE_NAME}</string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>com.google.${EXECUTABLE_NAME}</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>${PRODUCT_NAME}</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>LSRequiresIPhoneOS</key>
+	<true/>
+	<key>NSMainNibFile</key>
+	<string>MainWindow_iPhone</string>
+	<key>NSMainNibFile~ipad</key>
+	<string>MainWindow_iPad</string>
+	<key>UISupportedInterfaceOrientations</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+	</array>
+	<key>UISupportedInterfaceOrientations~ipad</key>
+	<array>
+		<string>UIInterfaceOrientationPortrait</string>
+		<string>UIInterfaceOrientationPortraitUpsideDown</string>
+		<string>UIInterfaceOrientationLandscapeLeft</string>
+		<string>UIInterfaceOrientationLandscapeRight</string>
+	</array>
+</dict>
+</plist>
diff --git a/experimental/iOSSampleApp/Shared/skia_ios.mm b/experimental/iOSSampleApp/Shared/skia_ios.mm
index 4e49786..65b3e8a 100644
--- a/experimental/iOSSampleApp/Shared/skia_ios.mm
+++ b/experimental/iOSSampleApp/Shared/skia_ios.mm
@@ -1,9 +1,13 @@
 #import <UIKit/UIKit.h>
 #include "SkApplication.h"
+
+extern void save_args(int argc, char *argv[]);
+
 int main(int argc, char *argv[]) {
     signal(SIGPIPE, SIG_IGN);
     NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
     application_init();
+    save_args(argc, argv);
     int retVal = UIApplicationMain(argc, argv, nil, nil);
     application_term();
     [pool release];
diff --git a/experimental/iOSSampleApp/SkSampleUIView.mm b/experimental/iOSSampleApp/SkSampleUIView.mm
index b716402..b08414e 100644
--- a/experimental/iOSSampleApp/SkSampleUIView.mm
+++ b/experimental/iOSSampleApp/SkSampleUIView.mm
@@ -7,15 +7,18 @@
 
 #define FORCE_REDRAW
 
+#include "SkCanvas.h"
+#include "SkCGUtils.h"
+#include "SampleApp.h"
+
+#if SK_SUPPORT_GPU
 //#define USE_GL_1
 #define USE_GL_2
 
-#include "SkCanvas.h"
-#include "GrContext.h"
 #include "gl/GrGLInterface.h"
+#include "GrContext.h"
 #include "SkGpuDevice.h"
-#include "SkCGUtils.h"
-#include "SampleApp.h"
+#endif
 
 class SkiOSDeviceManager : public SampleWindow::DeviceManager {
 public:
@@ -151,9 +154,11 @@
     virtual void publishCanvas(SampleWindow::DeviceType dType,
                                SkCanvas* canvas,
                                SampleWindow* win) SK_OVERRIDE {
+#if SK_SUPPORT_GPU
         if (NULL != fCurContext) {
             fCurContext->flush();
         }
+#endif
         win->present();
     }
     
@@ -219,18 +224,12 @@
 #include "SkEvent.h"
 #include "SkWindow.h"
 
-#define kREDRAW_UIVIEW_GL "sk_redraw_uiview_gl_iOS"
-
-extern bool gDoTraceDraw;
-#define DO_TRACE_DRAW_MAX   100
-
 struct FPSState {
     static const int FRAME_COUNT = 60;
     
     CFTimeInterval fNow0, fNow1;
     CFTimeInterval fTime0, fTime1, fTotalTime;
     int fFrameCounter;
-    int fDrawCounter;
     SkString str;
     FPSState() {
         fTime0 = fTime1 = fTotalTime = 0;
@@ -239,22 +238,10 @@
     
     void startDraw() {
         fNow0 = CACurrentMediaTime();
-        
-        if (0 == fDrawCounter && false) {
-            gDoTraceDraw = true;
-            SkDebugf("\n");
-        }
     }
     
     void endDraw() {
         fNow1 = CACurrentMediaTime();
-        
-        if (0 == fDrawCounter) {
-            gDoTraceDraw = true;
-        }
-        if (DO_TRACE_DRAW_MAX == ++fDrawCounter) {
-            fDrawCounter = 0;
-        }
     }
     
     void flush(SkOSWindow* hwnd) {
@@ -335,7 +322,7 @@
         fRasterLayer.opaque = TRUE;
         [self.layer addSublayer:fRasterLayer];
         
-        NSMutableDictionary *newActions = [[NSDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"onOrderIn",
+        NSMutableDictionary *newActions = [[NSMutableDictionary alloc] initWithObjectsAndKeys:[NSNull null], @"onOrderIn",
                                            [NSNull null], @"onOrderOut",
                                            [NSNull null], @"sublayers",
                                            [NSNull null], @"contents",
@@ -346,7 +333,7 @@
         [newActions release];
         
         fDevManager = new SkiOSDeviceManager(fGL.fFramebuffer);
-        static char* kDummyArgv = "dummyExecutableName";
+        static char* kDummyArgv = const_cast<char*>("dummyExecutableName");
         fWind = new SampleWindow(self, 1, &kDummyArgv, fDevManager);
 
         fWind->resize(self.frame.size.width, self.frame.size.height, SKWIND_CONFIG);
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index 1b56bf1..f0de5bd 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -862,7 +862,8 @@
 #endif
 }
 
-int main(int argc, char * const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
 
 #ifdef SK_ENABLE_INST_COUNT
     gPrintInstCount = true;
@@ -1172,3 +1173,10 @@
 
     return (0 == testsFailed) ? 0 : -1;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
+
diff --git a/gyp/apptype_console.gypi b/gyp/apptype_console.gypi
index 229db0d..9e28061 100644
--- a/gyp/apptype_console.gypi
+++ b/gyp/apptype_console.gypi
@@ -17,6 +17,55 @@
           'android_deps.gyp:Android_EntryPoint',
         ],
       }],
+      ['skia_os == "ios"', {
+        'target_conditions': [
+          ['_type == "executable"', {
+            'mac_bundle' : 1,
+          }],
+        ],
+        'include_dirs' : [
+          '../experimental/iOSSampleApp/Shared',
+          '../include/views',
+          '../include/xml',
+          '../include/utils/mac',
+        ],
+        'sources': [
+          '../src/views/ios/SkOSWindow_iOS.mm',
+          '../src/views/mac/SkEventNotifier.h',
+          '../src/views/mac/SkEventNotifier.mm',
+          '../experimental/iOSSampleApp/iPad/AppDelegate_iPad.h',
+          '../experimental/iOSSampleApp/iPad/AppDelegate_iPad.mm',
+          '../experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.h',
+          '../experimental/iOSSampleApp/iPhone/AppDelegate_iPhone.mm',
+          '../experimental/iOSSampleApp/Shared/SkUIView.h',
+          '../experimental/iOSSampleApp/Shared/SkUIView.mm',
+          '../experimental/iOSSampleApp/Shared/skia_ios.mm',
+          '../experimental/SimpleiOSApp/SimpleApp.h',
+          '../experimental/SimpleiOSApp/SimpleApp.mm',
+        ],
+        'dependencies': [
+          'views.gyp:views',
+          'xml.gyp:xml',
+        ],
+        'link_settings': {
+          'libraries': [
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/CoreGraphics.framework',
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/CoreText.framework',
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/Foundation.framework',
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/ImageIO.framework',
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/MobileCoreServices.framework',
+            '<(ios_sdk_dir)<(ios_sdk_version).sdk/System/Library/Frameworks/UIKit.framework',
+          ],
+        },
+        'xcode_config_file': '../experimental/iOSSampleApp/SkiOSSampleApp-Base.xcconfig',
+        'mac_bundle_resources' : [
+          '../experimental/SimpleiOSApp/iPad/MainWindow_iPad.xib',
+          '../experimental/SimpleiOSApp/iPhone/MainWindow_iPhone.xib',
+        ],
+        'xcode_settings' : {
+          'INFOPLIST_FILE' : '../experimental/SimpleiOSApp/tool-Info.plist',
+        },
+      }],
     ],
   },
 }
diff --git a/gyp/common_variables.gypi b/gyp/common_variables.gypi
index b59bd11..6a0fc6b 100644
--- a/gyp/common_variables.gypi
+++ b/gyp/common_variables.gypi
@@ -69,11 +69,6 @@
         }, {
           'skia_static_initializers%': 1,
         }],
-        [ 'skia_arch_type == "x86"', {
-            'ios_sdk_dir%': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator',
-        }, {
-            'ios_sdk_dir%': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS',
-        }],
       ],
 
       'skia_scalar%': 'float',
@@ -84,7 +79,8 @@
       'android_make_apk%': 1,
       'skia_nacl%': 0,
       'skia_gpu%': 1,
-      'ios_sdk_version%': '5.1',
+      'ios_sdk_dir%': '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS',
+      'ios_sdk_version%': '6.0',
       'skia_osx_sdkroot%': 'macosx10.6',
     },
 
diff --git a/samplecode/SampleApp.cpp b/samplecode/SampleApp.cpp
index c55a5c0..6c81041 100644
--- a/samplecode/SampleApp.cpp
+++ b/samplecode/SampleApp.cpp
@@ -2456,6 +2456,11 @@
     *height = 480;
 }
 
+#ifdef SK_BUILD_FOR_IOS
+void save_args(int argc, char *argv[]) {
+}
+#endif
+
 // FIXME: this should be in a header
 void application_init();
 void application_init() {
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 506db0e..7088a94 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -1718,8 +1718,9 @@
     SkAutoMutexAcquire ama(gMaskGammaCacheMutex);
 
     SkSafeUnref(gLinearMaskGamma);
-
+    gLinearMaskGamma = NULL;
     SkSafeUnref(gMaskGamma);
+    gMaskGamma = NULL;
     SkDEBUGCODE(gContrast = SK_ScalarMin;)
     SkDEBUGCODE(gPaintGamma = SK_ScalarMin;)
     SkDEBUGCODE(gDeviceGamma = SK_ScalarMin;)
diff --git a/tests/skia_test.cpp b/tests/skia_test.cpp
index 5c80a01..f884a64 100644
--- a/tests/skia_test.cpp
+++ b/tests/skia_test.cpp
@@ -106,7 +106,8 @@
     bool fAndroidMode;
 };
 
-int main (int argc, char * const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
 #ifdef SK_ENABLE_INST_COUNT
     gPrintInstCount = true;
 #endif
@@ -188,3 +189,10 @@
 
     return (failCount == 0) ? 0 : 1;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
+
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index 7c313cf..76d5ad3 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -443,7 +443,8 @@
     return failures;
 }
 
-int main(int argc, char* const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
 #ifdef SK_ENABLE_INST_COUNT
     gPrintInstCount = true;
 #endif
@@ -466,3 +467,9 @@
         return 1;
     }
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/tools/pinspect.cpp b/tools/pinspect.cpp
index 975eda5..b82bd33 100644
--- a/tools/pinspect.cpp
+++ b/tools/pinspect.cpp
@@ -44,7 +44,8 @@
     canvas.drawPicture(*pic);
 }
 
-int main(int argc, char* const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
     if (argc < 2) {
         printf("Usage: pinspect [--dump-ops] filename [filename ...]\n");
         return 1;
@@ -69,3 +70,9 @@
     }
     return 0;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/tools/render_pictures_main.cpp b/tools/render_pictures_main.cpp
index 764bea0..55ecf38 100644
--- a/tools/render_pictures_main.cpp
+++ b/tools/render_pictures_main.cpp
@@ -287,7 +287,8 @@
     renderer->setDeviceType(deviceType);
 }
 
-int main(int argc, char* const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
     SkAutoGraphics ag;
     SkTArray<SkString> inputs;
     sk_tools::PictureRenderer* renderer = NULL;
@@ -316,3 +317,9 @@
 
     SkDELETE(renderer);
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/tools/skdiff_main.cpp b/tools/skdiff_main.cpp
index 5fbf3ff..46d4f00 100644
--- a/tools/skdiff_main.cpp
+++ b/tools/skdiff_main.cpp
@@ -1270,7 +1270,8 @@
 const int kNoError = 0;
 const int kGenericError = -1;
 
-int main (int argc, char ** argv) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
     DiffMetricProc diffProc = compute_diff_pmcolor;
     int (*sortProc)(const void*, const void*) = compare<CompareDiffMetrics>;
 
@@ -1446,3 +1447,9 @@
     // make sure that we only return 0 when there were no failures.
     return (num_failing_results > 255) ? 255 : num_failing_results;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/tools/skhello.cpp b/tools/skhello.cpp
index 82abf80..465806f 100644
--- a/tools/skhello.cpp
+++ b/tools/skhello.cpp
@@ -14,7 +14,8 @@
     SkDebugf("usage: skhello [-o out-dir] [-t 'hello']\n  default output: skhello.png\n");
 }
 
-int main(int argc, char* const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
     SkAutoGraphics ag;
     SkString path("skhello.png");
     SkString text("Hello");
@@ -68,3 +69,9 @@
     }
     return !success;
 }
+
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
diff --git a/tools/skimage_main.cpp b/tools/skimage_main.cpp
index 504bc30..83f115c 100644
--- a/tools/skimage_main.cpp
+++ b/tools/skimage_main.cpp
@@ -54,7 +54,8 @@
     dst->append(".png");
 }
 
-int main (int argc, char * const argv[]) {
+int tool_main(int argc, char** argv);
+int tool_main(int argc, char** argv) {
     SkAutoGraphics ag;
     int i, outDirIndex = 0;
     SkString outDir;
@@ -102,3 +103,9 @@
     return 0;
 }
 
+#if !defined SK_BUILD_FOR_IOS
+int main(int argc, char * const argv[]) {
+    return tool_main(argc, (char**) argv);
+}
+#endif
+