[go: nahoru, domu]

Port most of the remainder of //tools/android from GYP to GN

BUG=535389
TEST=None

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

Cr-Commit-Position: refs/heads/master@{#352282}
diff --git a/BUILD.gn b/BUILD.gn
index 1ede840..fb831ba6 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -228,6 +228,7 @@
       "//build/android/rezip",
       "//third_party/errorprone:chromium_errorprone",
       "//tools/android:android_tools",
+      "//tools/android/heap_profiler:heap_profiler_unittests",
       "//tools/imagediff($host_toolchain)",
 
       # TODO(GYP): Remove these when the components_unittests work.
@@ -734,6 +735,7 @@
       "//media/mojo/services:cdm_service",
       "//media/mojo:tests",
       "//mojo:tests",
+
       # TODO(use-new-edk):
       #"//mojo/edk/js/test:js_integration_tests",
       #"//mojo/edk/js/tests:js_to_cpp_bindings_python",
diff --git a/build/gn_migration.gypi b/build/gn_migration.gypi
index 03fc48bc..609f4318 100644
--- a/build/gn_migration.gypi
+++ b/build/gn_migration.gypi
@@ -290,6 +290,7 @@
             '../breakpad/breakpad.gyp:dump_syms',
             '../build/android/rezip.gyp:rezip_apk_jar',
             #"//clank" TODO(GYP) - conditional somehow?
+            '../tools/android/heap_profiler/heap_profiler_unittests_apk',
             '../tools/imagediff/image_diff.gyp:image_diff#host',
             '../tools/telemetry/telemetry.gyp:bitmaptools#host',
 
diff --git a/tools/android/BUILD.gn b/tools/android/BUILD.gn
index 5347bf4..0804c19d 100644
--- a/tools/android/BUILD.gn
+++ b/tools/android/BUILD.gn
@@ -5,10 +5,36 @@
 # Intermediate target grouping the android tools needed to run native
 # unittests and instrumentation test apks.
 #
-# GYP: //android/tools/android_tools.gyp:android_tools
+# GYP: //tools/android/android_tools.gyp:android_tools
 group("android_tools") {
   deps = [
+    "//tools/android/adb_reboot",
+    "//tools/android/file_poller",
     "//tools/android/forwarder2",
     "//tools/android/md5sum",
+    "//tools/android/purge_ashmem",
+    "//tools/telemetry:bitmaptools($host_toolchain)",
+  ]
+}
+
+# GYP: //tools/android/android_tools.gyp:heap_profiler
+group("heap_profiler") {
+  deps = [
+    "//tools/android/heap_profiler:heap_dump",
+    "//tools/android/heap_profiler:heap_profiler",
+  ]
+}
+
+# GYP: //tools/android/android_tools.gyp:memdump
+group("memdump") {
+  deps = [
+    "//tools/android/memdump",
+  ]
+}
+
+# GYP: //tools/android/android_tools.gyp:ps_ext
+group("ps_ext") {
+  deps = [
+    "//tools/android/ps_ext",
   ]
 }
diff --git a/tools/android/adb_reboot/BUILD.gn b/tools/android/adb_reboot/BUILD.gn
new file mode 100644
index 0000000..9c59f949
--- /dev/null
+++ b/tools/android/adb_reboot/BUILD.gn
@@ -0,0 +1,9 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+executable("adb_reboot") {
+  sources = [
+    "adb_reboot.c",
+  ]
+}
diff --git a/tools/android/android_tools.gyp b/tools/android/android_tools.gyp
index b2907159..e48fc29 100644
--- a/tools/android/android_tools.gyp
+++ b/tools/android/android_tools.gyp
@@ -21,6 +21,7 @@
       ],
     },
     {
+      # GN: //tools/android:heap_profiler
       'target_name': 'heap_profiler',
       'type': 'none',
       'dependencies': [
@@ -29,6 +30,7 @@
       ],
     },
     {
+      # GN: //tools/android:memdump
       'target_name': 'memdump',
       'type': 'none',
       'dependencies': [
@@ -43,6 +45,7 @@
       ],
     },
     {
+      # GN: //tools/android:ps_ext
       'target_name': 'ps_ext',
       'type': 'none',
       'dependencies': [
@@ -50,6 +53,7 @@
       ],
     },
     {
+      # GN: //tools/android:customtabs_benchmark
       'target_name': 'customtabs_benchmark',
       'type': 'none',
       'dependencies': [
diff --git a/tools/android/file_poller/BUILD.gn b/tools/android/file_poller/BUILD.gn
new file mode 100644
index 0000000..828dc56
--- /dev/null
+++ b/tools/android/file_poller/BUILD.gn
@@ -0,0 +1,15 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+executable("file_poller") {
+  sources = [
+    "file_poller.cc",
+  ]
+  deps = [
+    "//base",
+  ]
+
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ "//build/config/compiler:no_chromium_code" ]
+}
diff --git a/tools/android/heap_profiler/BUILD.gn b/tools/android/heap_profiler/BUILD.gn
new file mode 100644
index 0000000..dd8da99e
--- /dev/null
+++ b/tools/android/heap_profiler/BUILD.gn
@@ -0,0 +1,63 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//testing/test.gni")
+
+shared_library("heap_profiler") {
+  sources = [
+    "heap_profiler_hooks_android.c",
+  ]
+  public_deps = [
+    ":heap_profiler_core",
+  ]
+}
+
+source_set("heap_profiler_core") {
+  sources = [
+    "heap_profiler.c",
+    "heap_profiler.h",
+  ]
+
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ "//build/config/compiler:no_chromium_code" ]
+}
+
+executable("heap_dump") {
+  sources = [
+    "heap_dump.c",
+  ]
+
+  deps = [
+    ":heap_profiler_core",
+  ]
+
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ "//build/config/compiler:no_chromium_code" ]
+}
+
+test("heap_profiler_unittests") {
+  sources = [
+    "heap_profiler_unittest.cc",
+  ]
+  deps = [
+    ":heap_profiler_core",
+    "//testing/gtest",
+    "//testing/gtest:gtest_main",
+  ]
+}
+
+executable("heap_profiler_integrationtest") {
+  testonly = true
+
+  sources = [
+    "heap_profiler_integrationtest.cc",
+  ]
+  deps = [
+    "//testing/gtest",
+    ":heap_profiler",
+  ]
+
+  configs -= [ "//build/config/compiler:chromium_code" ]
+  configs += [ "//build/config/compiler:no_chromium_code" ]
+}
diff --git a/tools/android/heap_profiler/heap_profiler_integrationtest.cc b/tools/android/heap_profiler/heap_profiler_integrationtest.cc
index ba7ebea..5dac5c32 100644
--- a/tools/android/heap_profiler/heap_profiler_integrationtest.cc
+++ b/tools/android/heap_profiler/heap_profiler_integrationtest.cc
@@ -10,7 +10,6 @@
 #include <unistd.h>
 #include <map>
 
-#include "base/compiler_specific.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "tools/android/heap_profiler/heap_profiler.h"
 
diff --git a/tools/android/heap_profiler/heap_profiler_unittest.cc b/tools/android/heap_profiler/heap_profiler_unittest.cc
index 1771a88a..64b92b8 100644
--- a/tools/android/heap_profiler/heap_profiler_unittest.cc
+++ b/tools/android/heap_profiler/heap_profiler_unittest.cc
@@ -6,7 +6,6 @@
 #include <string.h>
 #include <map>
 
-#include "base/compiler_specific.h"
 #include "testing/gtest/include/gtest/gtest.h"
 #include "tools/android/heap_profiler/heap_profiler.h"
 
@@ -74,7 +73,7 @@
       if (st->alloc_bytes == 0)
         continue;
       ++stack_traces_seen;
-      EXPECT_EQ(1, stacktrace_bytes_by_alloc.count(st));
+      EXPECT_EQ(1u, stacktrace_bytes_by_alloc.count(st));
       EXPECT_EQ(stacktrace_bytes_by_alloc[st], st->alloc_bytes);
     }
 
@@ -90,9 +89,9 @@
   heap_profiler_alloc((void*)0x1000, 1024, st1.frames, st1.depth, 0);
   heap_profiler_alloc((void*)0x2000, 2048, st1.frames, st1.depth, 0);
 
-  EXPECT_EQ(2, stats_.num_allocs);
-  EXPECT_EQ(1, stats_.num_stack_traces);
-  EXPECT_EQ(1024 + 2048, stats_.total_alloc_bytes);
+  EXPECT_EQ(2u, stats_.num_allocs);
+  EXPECT_EQ(1u, stats_.num_stack_traces);
+  EXPECT_EQ(1024u + 2048, stats_.total_alloc_bytes);
   ExpectAlloc(0x1000, 0x13ff, st1, 0);
   ExpectAlloc(0x2000, 0x27ff, st1, 0);
 }
@@ -104,9 +103,9 @@
   heap_profiler_alloc((void*)0x2000, 2048, st2.frames, st2.depth, 0);
   heap_profiler_alloc((void*)0x3000, 32, st1.frames, st1.depth, 0);
 
-  EXPECT_EQ(3, stats_.num_allocs);
-  EXPECT_EQ(2, stats_.num_stack_traces);
-  EXPECT_EQ(1024 + 2048 + 32, stats_.total_alloc_bytes);
+  EXPECT_EQ(3u, stats_.num_allocs);
+  EXPECT_EQ(2u, stats_.num_stack_traces);
+  EXPECT_EQ(1024u + 2048 + 32, stats_.total_alloc_bytes);
   ExpectAlloc(0x1000, 0x13ff, st1, 0);
   ExpectAlloc(0x2000, 0x27ff, st2, 0);
   ExpectAlloc(0x3000, 0x301f, st1, 0);
@@ -117,9 +116,9 @@
   heap_profiler_alloc((void*)0x1000, 1024, st1.frames, st1.depth, 0);
   heap_profiler_free((void*)0x1000, 1024, NULL);
 
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, Realloc) {
@@ -139,9 +138,9 @@
   heap_profiler_free((void*)0x1000, 1024, NULL);
   heap_profiler_free((void*)0x3000, 32, NULL);
 
-  EXPECT_EQ(2, stats_.num_allocs);
-  EXPECT_EQ(2, stats_.num_stack_traces);
-  EXPECT_EQ(2048 + 64, stats_.total_alloc_bytes);
+  EXPECT_EQ(2u, stats_.num_allocs);
+  EXPECT_EQ(2u, stats_.num_stack_traces);
+  EXPECT_EQ(2048u + 64, stats_.total_alloc_bytes);
   ExpectAlloc(0x2000, 0x27ff, st1, 0);
   ExpectAlloc(0x4000, 0x403f, st2, 0);
 }
@@ -159,9 +158,9 @@
   heap_profiler_free((void*)0x3000, 32, NULL);
   heap_profiler_free((void*)0x4000, 64, NULL);
 
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, AllocAndFreeWithZeroSize) {
@@ -172,9 +171,9 @@
 
   heap_profiler_free((void*)0x1000, 0, NULL);
 
-  EXPECT_EQ(1, stats_.num_allocs);
-  EXPECT_EQ(1, stats_.num_stack_traces);
-  EXPECT_EQ(2048, stats_.total_alloc_bytes);
+  EXPECT_EQ(1u, stats_.num_allocs);
+  EXPECT_EQ(1u, stats_.num_stack_traces);
+  EXPECT_EQ(2048u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, AllocAndFreeContiguous) {
@@ -185,9 +184,9 @@
 
   heap_profiler_free((void*)0x1000, 8192, NULL);
 
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, SparseAllocsOneLargeOuterFree) {
@@ -200,9 +199,9 @@
   heap_profiler_alloc((void*)0x9000, 4096, st2.frames, st2.depth, 0);
 
   heap_profiler_free((void*)0x0800, 8192, NULL);
-  EXPECT_EQ(1, stats_.num_allocs);
-  EXPECT_EQ(1, stats_.num_stack_traces);
-  EXPECT_EQ(4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(1u, stats_.num_allocs);
+  EXPECT_EQ(1u, stats_.num_stack_traces);
+  EXPECT_EQ(4096u, stats_.total_alloc_bytes);
   ExpectAlloc(0x9000, 0x9fff, st2, 0);
 }
 
@@ -223,9 +222,9 @@
   heap_profiler_alloc((void*)0x3000, 1024, st3.frames, st3.depth, 0);
 
   heap_profiler_free((void*)0x2040, 4096 - 64 - 64, NULL);
-  EXPECT_EQ(4, stats_.num_allocs);
-  EXPECT_EQ(3, stats_.num_stack_traces);
-  EXPECT_EQ(1024 + 64 + 64 + 1024, stats_.total_alloc_bytes);
+  EXPECT_EQ(4u, stats_.num_allocs);
+  EXPECT_EQ(3u, stats_.num_stack_traces);
+  EXPECT_EQ(1024u + 64 + 64 + 1024, stats_.total_alloc_bytes);
 
   ExpectAlloc(0x1000, 0x13ff, st1, 0);
   ExpectAlloc(0x2000, 0x203f, st2, 0);
@@ -241,25 +240,25 @@
   heap_profiler_alloc((void*)0x4000, 4096, st1.frames, st1.depth, 0);
 
   heap_profiler_free((void*)0x800, 4096, NULL);
-  EXPECT_EQ(4, stats_.num_allocs);
-  EXPECT_EQ(2048 + 4096 + 4096 + 4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(4u, stats_.num_allocs);
+  EXPECT_EQ(2048u + 4096 + 4096 + 4096, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x1800, 4096, NULL);
-  EXPECT_EQ(3, stats_.num_allocs);
-  EXPECT_EQ(2048 + 4096 + 4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(3u, stats_.num_allocs);
+  EXPECT_EQ(2048u + 4096 + 4096, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x2800, 4096, NULL);
-  EXPECT_EQ(2, stats_.num_allocs);
-  EXPECT_EQ(2048 + 4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(2u, stats_.num_allocs);
+  EXPECT_EQ(2048u + 4096, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x3800, 4096, NULL);
-  EXPECT_EQ(1, stats_.num_allocs);
-  EXPECT_EQ(2048, stats_.total_alloc_bytes);
+  EXPECT_EQ(1u, stats_.num_allocs);
+  EXPECT_EQ(2048u, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x4800, 4096, NULL);
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, AllocAndOverFreeContiguous) {
@@ -270,9 +269,9 @@
 
   heap_profiler_free((void*)0, 16834, NULL);
 
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, AllocContiguousAndPunchHole) {
@@ -284,9 +283,9 @@
   // Punch a 4k hole in the middle of the two contiguous 4k allocs.
   heap_profiler_free((void*)0x1800, 4096, NULL);
 
-  EXPECT_EQ(2, stats_.num_allocs);
-  EXPECT_EQ(2, stats_.num_stack_traces);
-  EXPECT_EQ(4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(2u, stats_.num_allocs);
+  EXPECT_EQ(2u, stats_.num_stack_traces);
+  EXPECT_EQ(4096u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, AllocAndPartialFree) {
@@ -305,9 +304,9 @@
   heap_profiler_free((void*)0x4000, 512, NULL);  // Free up the 4th alloc...
   heap_profiler_free((void*)0x4200, 512, NULL);  // ...but do it in two halves.
 
-  EXPECT_EQ(4, stats_.num_allocs);  // 1 + 2 + two sides around the hole 3.
-  EXPECT_EQ(3, stats_.num_stack_traces);  // st4 should be gone.
-  EXPECT_EQ(896 + 896 + 512, stats_.total_alloc_bytes);
+  EXPECT_EQ(4u, stats_.num_allocs);  // 1 + 2 + two sides around the hole 3.
+  EXPECT_EQ(3u, stats_.num_stack_traces);  // st4 should be gone.
+  EXPECT_EQ(896u + 896 + 512, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, RandomIndividualAllocAndFrees) {
@@ -364,21 +363,21 @@
 
 TEST_F(HeapProfilerTest, NoUnwindShouldNotCrashButNoop) {
   heap_profiler_alloc((void*)0x1000, 1024, NULL, 0, 0);
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, FreeNonExisting) {
   StackTrace st1 = GenStackTrace(5, 0x0);
   heap_profiler_free((void*)0x1000, 1024, NULL);
   heap_profiler_free((void*)0x1400, 1024, NULL);
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
   heap_profiler_alloc((void*)0x1000, 1024, st1.frames, st1.depth, 0);
-  EXPECT_EQ(1, stats_.num_allocs);
-  EXPECT_EQ(1024, stats_.total_alloc_bytes);
+  EXPECT_EQ(1u, stats_.num_allocs);
+  EXPECT_EQ(1024u, stats_.total_alloc_bytes);
 }
 
 TEST_F(HeapProfilerTest, FlagsConsistency) {
@@ -395,11 +394,11 @@
 
   ExpectAlloc(0x1000, 0x17ff, st1, 42);
   heap_profiler_free((void*)0x1000, 2048, &flags);
-  EXPECT_EQ(42, flags);
+  EXPECT_EQ(42u, flags);
 
   ExpectAlloc(0x2800, 0x2fff, st1, 142);
   heap_profiler_free((void*)0x2800, 2048, &flags);
-  EXPECT_EQ(142, flags);
+  EXPECT_EQ(142u, flags);
 }
 
 TEST_F(HeapProfilerTest, BeConsistentOnOOM) {
@@ -419,9 +418,9 @@
   for (uintptr_t i = 0; i < NUM_ALLOCS; ++i)
     heap_profiler_free((void*)(i * 32), 32, NULL);
 
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
-  EXPECT_EQ(0, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
 }
 
 #ifdef __LP64__
@@ -436,22 +435,22 @@
       (void*)0xfffffffffffff000L, 4096, st3.frames, st3.depth, 0);
   EXPECT_EQ(3, stats_.num_allocs);
   EXPECT_EQ(3, stats_.num_stack_traces);
-  EXPECT_EQ(4096 + 4096 + 4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(4096u + 4096 + 4096, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x1000, 4096, NULL);
-  EXPECT_EQ(2, stats_.num_allocs);
-  EXPECT_EQ(2, stats_.num_stack_traces);
-  EXPECT_EQ(4096 + 4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(2u, stats_.num_allocs);
+  EXPECT_EQ(2u, stats_.num_stack_traces);
+  EXPECT_EQ(4096u + 4096, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0x7ffffffffffff000L, 4096, NULL);
-  EXPECT_EQ(1, stats_.num_allocs);
-  EXPECT_EQ(1, stats_.num_stack_traces);
-  EXPECT_EQ(4096, stats_.total_alloc_bytes);
+  EXPECT_EQ(1u, stats_.num_allocs);
+  EXPECT_EQ(1u, stats_.num_stack_traces);
+  EXPECT_EQ(4096u, stats_.total_alloc_bytes);
 
   heap_profiler_free((void*)0xfffffffffffff000L, 4096, NULL);
-  EXPECT_EQ(0, stats_.num_allocs);
-  EXPECT_EQ(0, stats_.num_stack_traces);
-  EXPECT_EQ(0, stats_.total_alloc_bytes);
+  EXPECT_EQ(0u, stats_.num_allocs);
+  EXPECT_EQ(0u, stats_.num_stack_traces);
+  EXPECT_EQ(0u, stats_.total_alloc_bytes);
 }
 #endif
 
diff --git a/tools/android/memdump/BUILD.gn b/tools/android/memdump/BUILD.gn
new file mode 100644
index 0000000..dafc7ec
--- /dev/null
+++ b/tools/android/memdump/BUILD.gn
@@ -0,0 +1,12 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+executable("memdump") {
+  sources = [
+    "memdump.cc",
+  ]
+  deps = [
+    "//base",
+  ]
+}
diff --git a/tools/android/memdump/memdump.cc b/tools/android/memdump/memdump.cc
index 27271576..33539e9 100644
--- a/tools/android/memdump/memdump.cc
+++ b/tools/android/memdump/memdump.cc
@@ -216,7 +216,7 @@
   for (uint64 addr = memory_map.start_address, page_index = 0;
        addr < memory_map.end_address;
        addr += kPageSize, ++page_index) {
-    DCHECK_EQ(0, addr % kPageSize);
+    DCHECK_EQ(0u, addr % kPageSize);
     PageMapEntry page_map_entry = {};
     static_assert(sizeof(PageMapEntry) == sizeof(uint64), "unexpected size");
     ssize_t bytes = read(pagemap_fd, &page_map_entry, sizeof(page_map_entry));
diff --git a/tools/android/ps_ext/BUILD.gn b/tools/android/ps_ext/BUILD.gn
new file mode 100644
index 0000000..6fbba19
--- /dev/null
+++ b/tools/android/ps_ext/BUILD.gn
@@ -0,0 +1,9 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+executable("ps_ext") {
+  sources = [
+    "ps_ext.c",
+  ]
+}
diff --git a/tools/android/purge_ashmem/BUILD.gn b/tools/android/purge_ashmem/BUILD.gn
new file mode 100644
index 0000000..e717fb13
--- /dev/null
+++ b/tools/android/purge_ashmem/BUILD.gn
@@ -0,0 +1,12 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+executable("purge_ashmem") {
+  sources = [
+    "purge_ashmem.c",
+  ]
+  deps = [
+    "//third_party/ashmem",
+  ]
+}