Add the ability to run each test in isolation.

This adds a new gtest main that will run each test in its own forked
process. This can avoid problems where some tests do not clean up after
themselves, or a test modifies global state that can change the behavior
of another test.

This is only supported on device and linux.

Test: Passes extensive unit tests.
Change-Id: Iab29bf60b9f5cd9c1af67e85f502ada7efe24b18
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..5153fdd
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,57 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+cc_library {
+    name: "libgtest_isolated",
+    host_supported: true,
+    cflags: ["-Wall", "-Werror"],
+    export_include_dirs: ["include"],
+
+    srcs: [
+        "Color.cpp",
+        "Isolate.cpp",
+        "IsolateMain.cpp",
+        "NanoTime.cpp",
+        "Options.cpp",
+        "Test.cpp",
+    ],
+
+    static_libs: ["libbase", "liblog"],
+    whole_static_libs: ["libgtest"],
+}
+
+cc_library {
+    name: "libgtest_isolated_main",
+    host_supported: true,
+    cflags: ["-Wall", "-Werror"],
+    srcs: [
+        "Main.cpp",
+    ],
+
+    static_libs: ["libbase", "liblog"],
+    whole_static_libs: ["libgtest_isolated"],
+}
+
+cc_test {
+    name: "gtest_isolated_tests",
+    host_supported: true,
+    srcs: [
+        "tests/OptionsTest.cpp",
+        "tests/SystemTests.cpp",
+    ],
+    cflags: ["-Wall", "-Werror"],
+
+    shared_libs: ["libbase"],
+    whole_static_libs: ["libgtest_isolated_main"],
+}