Generate Android.mk for DM.

ifdef out code that won't build where we don't have jsoncpp.

Include ctype instead of string.h for tolower.

Depends on https://codereview.chromium.org/282053002/

BUG=skia:2447
R=mtklein@google.com

Author: scroggo@google.com

Review URL: https://codereview.chromium.org/290603002

git-svn-id: http://skia.googlecode.com/svn/trunk@14768 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/dm/DM.cpp b/dm/DM.cpp
index f4eefa6..8df0ab1 100644
--- a/dm/DM.cpp
+++ b/dm/DM.cpp
@@ -21,7 +21,7 @@
 #include "DMTestTask.h"
 #include "DMWriteTask.h"
 
-#include <string.h>
+#include <ctype.h>
 
 using skiagm::GM;
 using skiagm::GMRegistry;
@@ -32,7 +32,10 @@
 DEFINE_int32(gpuThreads, 1, "Threads for GPU work.");
 DEFINE_string2(expectations, r, "",
                "If a directory, compare generated images against images under this path. "
-               "If a file, compare generated images against JSON expectations at this path.");
+#ifdef SK_BUILD_JSON_WRITER
+               "If a file, compare generated images against JSON expectations at this path."
+#endif
+);
 DEFINE_string2(resources, i, "resources", "Path to resources directory.");
 DEFINE_string(match, "",  "[~][^]substring[$] [...] of GM name to run.\n"
                           "Multiple matches may be separated by spaces.\n"
@@ -225,7 +228,9 @@
             if (sk_isdir(path)) {
                 expectations.reset(SkNEW_ARGS(DM::WriteTask::Expectations, (path)));
             } else {
+#ifdef SK_BUILD_JSON_WRITER
                 expectations.reset(SkNEW_ARGS(DM::JsonExpectations, (path)));
+#endif
             }
         }
     }