diff --git a/.travis.yml b/.travis.yml
index be9ec29..8a5efa7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -142,7 +142,7 @@
   - build/ninja -C out/dist -j8 all
   - |
     TEST_TARGETS="
-    base_unittests
+    perfetto_base_unittests
     protozero_unittests
     tracing_unittests
     tracing_benchmarks
diff --git a/BUILD.gn b/BUILD.gn
index 280f760..50df164 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -12,27 +12,32 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("gn/perfetto.gni")
+
 group("all") {
   testonly = true  # allow to build also test targets
   deps = [
     ":tests",
-    "//ftrace_reader:ftrace_reader_demo",
-    "//ipc/src/protoc_plugin:ipc_plugin($host_toolchain)",
-    "//protozero/src/protoc_plugin($host_toolchain)",
-    "//tools/ftrace_proto_gen:ftrace_proto_gen",
+    "ftrace_reader:ftrace_reader_demo",
+    "ipc/src/protoc_plugin:ipc_plugin($host_toolchain)",
+    "protozero/src/protoc_plugin($host_toolchain)",
+    "tools/ftrace_proto_gen:ftrace_proto_gen",
   ]
 }
 
 group("tests") {
   testonly = true
   deps = [
-    "//base:base_unittests",
-    "//ftrace_reader:ftrace_reader_integrationtests",
-    "//ftrace_reader:ftrace_reader_unittests",
-    "//ipc:ipc_unittests",
-    "//protozero:protozero_unittests",
-    "//tools/sanitizers_unittests",
-    "//tracing:tracing_benchmarks",
-    "//tracing:tracing_unittests",
+    "ftrace_reader:ftrace_reader_integrationtests",
+    "ftrace_reader:ftrace_reader_unittests",
+    "ipc:ipc_unittests",
+    "perfetto_base:perfetto_base_unittests",
+    "protozero:protozero_unittests",
+    "tools/sanitizers_unittests",
+    "tracing:tracing_unittests",
   ]
+
+  if (!build_with_chromium) {
+    deps += [ "tracing:tracing_benchmarks" ]
+  }
 }
diff --git a/build/BUILDCONFIG.gn b/build/BUILDCONFIG.gn
index 0c726de..26f5fb0 100644
--- a/build/BUILDCONFIG.gn
+++ b/build/BUILDCONFIG.gn
@@ -60,12 +60,10 @@
 
 set_defaults("source_set") {
   configs = default_configs
-  deps = []
 }
 
 set_defaults("static_library") {
   configs = default_configs
-  deps = []
 }
 
 # Realistically the only shared_library that we build right now is libc++.so
@@ -74,18 +72,11 @@
 set_defaults("shared_library") {
   configs = default_configs
   configs += [ "//build:shared_library" ]
-  deps = [
-    "//build/sanitizers:deps",
-  ]
 }
 
 set_defaults("executable") {
   configs = default_configs
   configs += [ "//build:executable" ]
-  deps = [
-    "//build/libc++:deps",
-    "//build/sanitizers:deps",
-  ]
 }
 
 set_default_toolchain("//build/toolchain:gcc_like")
diff --git a/build_overrides/build.gni b/build_overrides/build.gni
new file mode 100644
index 0000000..fb1ec3d
--- /dev/null
+++ b/build_overrides/build.gni
@@ -0,0 +1,15 @@
+# Copyright (C) 2017 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.
+
+build_with_chromium = false
diff --git a/buildtools/BUILD.gn b/buildtools/BUILD.gn
index b58bb77..814188d 100644
--- a/buildtools/BUILD.gn
+++ b/buildtools/BUILD.gn
@@ -166,7 +166,9 @@
 }
 
 source_set("protobuf_full") {
-  deps += [ ":protobuf_lite" ]
+  deps = [
+    ":protobuf_lite",
+  ]
   sources = [
     "protobuf/src/google/protobuf/any.cc",
     "protobuf/src/google/protobuf/any.pb.cc",
@@ -228,7 +230,9 @@
 
 if (current_toolchain == host_toolchain) {
   source_set("protoc_lib") {
-    deps += [ ":protobuf_full" ]
+    deps = [
+      ":protobuf_full",
+    ]
     sources = [
       "protobuf/src/google/protobuf/compiler/code_generator.cc",
       "protobuf/src/google/protobuf/compiler/command_line_interface.cc",
@@ -327,7 +331,10 @@
   }
 
   executable("protoc") {
-    deps += [ ":protoc_lib" ]
+    deps = [
+      ":protoc_lib",
+      "../gn:default_deps",
+    ]
     sources = [
       "protobuf/src/google/protobuf/compiler/main.cc",
     ]
@@ -410,7 +417,9 @@
       ":libc++config",
       "//build/sanitizers:sanitizer_options_link_helper",
     ]
-    deps += [ ":libunwind" ]
+    deps = [
+      ":libunwind",
+    ]
   }
 
   if (custom_libcxx_is_static) {
@@ -461,7 +470,9 @@
       "//build/sanitizers:sanitizer_options_link_helper",
     ]
     defines = [ "_LIBCPP_BUILDING_LIBRARY" ]
-    deps += [ ":libc++abi" ]
+    deps = [
+      ":libc++abi",
+    ]
   }
 }  # if (use_custom_libcxx)
 
diff --git a/ftrace_reader/BUILD.gn b/ftrace_reader/BUILD.gn
index faf25cb..3ddd116 100644
--- a/ftrace_reader/BUILD.gn
+++ b/ftrace_reader/BUILD.gn
@@ -12,19 +12,29 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//build_overrides/build.gni")
+
 config("ftrace_reader_config") {
-  include_dirs = [ "include" ]
+  include_dirs = [
+    "include",
+    "..",
+  ]
+
+  if (build_with_chromium) {
+    include_dirs += [ "//testing/gtest/include" ]
+  }
 }
 
 executable("ftrace_reader_unittests") {
   testonly = true
-  deps += [
+  deps = [
     ":ftrace_reader",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
-    "//protos/ftrace:full",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
+    "../gn:protobuf_full_deps",
+    "../protos/ftrace:full",
   ]
+
   sources = [
     "src/cpu_reader_unittest.cc",
     "src/format_parser_unittest.cc",
@@ -39,15 +49,14 @@
 # run with sudo.
 executable("ftrace_reader_integrationtests") {
   testonly = true
-  deps += [
+  deps = [
     ":ftrace_reader",
-    "//base",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
-    "//buildtools:protobuf_full",
-    "//protos/ftrace:full",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
+    "../perfetto_base",
+    "../protos/ftrace:full",
   ]
+
   sources = [
     "src/end_to_end_integrationtest.cc",
     "src/ftrace_procfs_integrationtest.cc",
@@ -59,20 +68,27 @@
   sources = [
     "src/main.cc",
   ]
-  deps += [
+  deps = [
     ":ftrace_reader",
-    "//base",
+    "../gn:default_deps",
+    "../perfetto_base",
   ]
 }
 
 source_set("ftrace_reader") {
-  all_dependent_configs = [
-    ":ftrace_reader_config",
-    "//buildtools:googletest_prod_config",
+  all_dependent_configs = [ ":ftrace_reader_config" ]
+
+  deps = [
+    "../perfetto_base",
+    "../protozero",
   ]
-  deps += [ "//base" ]
+
+  if (!build_with_chromium) {
+    all_dependent_configs += [ "//buildtools:googletest_prod_config" ]
+  }
+
   public_deps = [
-    "//protos/ftrace:zero",
+    "../protos/ftrace:zero",
   ]
   sources = [
     "include/ftrace_reader/format_parser.h",
diff --git a/ftrace_reader/include/ftrace_reader/ftrace_controller.h b/ftrace_reader/include/ftrace_reader/ftrace_controller.h
index 4d56657..f5ace93 100644
--- a/ftrace_reader/include/ftrace_reader/ftrace_controller.h
+++ b/ftrace_reader/include/ftrace_reader/ftrace_controller.h
@@ -25,10 +25,10 @@
 #include <string>
 #include <vector>
 
-#include "base/scoped_file.h"
-#include "base/task_runner.h"
-#include "base/weak_ptr.h"
 #include "gtest/gtest_prod.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/weak_ptr.h"
 #include "protozero/protozero_message_handle.h"
 
 namespace perfetto {
diff --git a/ftrace_reader/src/cpu_reader.cc b/ftrace_reader/src/cpu_reader.cc
index 3282ff9..7626185 100644
--- a/ftrace_reader/src/cpu_reader.cc
+++ b/ftrace_reader/src/cpu_reader.cc
@@ -18,7 +18,7 @@
 
 #include <utility>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 #include "proto_translation_table.h"
 
 #include "protos/ftrace/ftrace_event.pbzero.h"
@@ -101,7 +101,7 @@
   long bytes = PERFETTO_EINTR(read(fd_.get(), buffer, kPageSize));
   if (bytes == -1 || bytes == 0)
     return false;
-  PERFETTO_CHECK(bytes <= kPageSize);
+  PERFETTO_CHECK(bytes <= (long)kPageSize);
 
   for (size_t i = 0; i < kMaxSinks; i++) {
     if (!filters[i])
diff --git a/ftrace_reader/src/cpu_reader.h b/ftrace_reader/src/cpu_reader.h
index 3b7f030..3d58a00 100644
--- a/ftrace_reader/src/cpu_reader.h
+++ b/ftrace_reader/src/cpu_reader.h
@@ -23,9 +23,9 @@
 #include <array>
 #include <memory>
 
-#include "base/scoped_file.h"
 #include "ftrace_reader/ftrace_controller.h"
 #include "gtest/gtest_prod.h"
+#include "perfetto_base/scoped_file.h"
 #include "proto_translation_table.h"
 
 namespace perfetto {
diff --git a/ftrace_reader/src/cpu_reader_unittest.cc b/ftrace_reader/src/cpu_reader_unittest.cc
index 5cabd1c..f517785 100644
--- a/ftrace_reader/src/cpu_reader_unittest.cc
+++ b/ftrace_reader/src/cpu_reader_unittest.cc
@@ -123,8 +123,8 @@
   memcpy(&buffer, &expected, 16);
   EXPECT_TRUE(CpuReader::ReadAndAdvance<PlainStruct>(&ptr, ptr + 16, &actual));
   EXPECT_EQ(ptr, start + 16);
-  EXPECT_EQ(actual.timestamp, 42);
-  EXPECT_EQ(actual.length, 999);
+  EXPECT_EQ(actual.timestamp, 42ul);
+  EXPECT_EQ(actual.length, 999ul);
 }
 
 TEST(CpuReaderTest, ReadAndAdvanceComplexStruct) {
@@ -144,9 +144,9 @@
   EXPECT_TRUE(
       CpuReader::ReadAndAdvance<ComplexStruct>(&ptr, ptr + 16, &actual));
   EXPECT_EQ(ptr, start + 16);
-  EXPECT_EQ(actual.timestamp, 42);
+  EXPECT_EQ(actual.timestamp, 42ul);
   EXPECT_EQ(actual.length, 0xabababab);
-  EXPECT_EQ(actual.overwrite, 0xcd);
+  EXPECT_EQ(actual.overwrite, 0xCDu);
 }
 
 TEST(CpuReaderTest, ReadAndAdvanceOverruns) {
@@ -156,7 +156,7 @@
   const uint8_t* ptr = buffer;
   EXPECT_FALSE(CpuReader::ReadAndAdvance<uint64_t>(&ptr, ptr + 7, &result));
   EXPECT_EQ(ptr, start);
-  EXPECT_EQ(result, 42);
+  EXPECT_EQ(result, 42ul);
 }
 
 TEST(CpuReaderTest, ReadAndAdvanceAtEnd) {
@@ -234,10 +234,10 @@
   protos::FtraceEventBundle proto_bundle;
   proto_bundle.ParseFromArray(proto.get(), static_cast<int>(msg_size));
 
-  EXPECT_EQ(proto_bundle.cpu(), 42);
+  EXPECT_EQ(proto_bundle.cpu(), 42u);
   ASSERT_EQ(proto_bundle.event().size(), 1);
   const protos::FtraceEvent& proto_event = proto_bundle.event().Get(0);
-  EXPECT_EQ(proto_event.pid(), 72);
+  EXPECT_EQ(proto_event.pid(), 72u);
   EXPECT_TRUE(proto_event.has_print());
   // TODO(hjd): Check if this is the correct format.
   EXPECT_EQ(proto_event.print().buf(), "Hello, world!\n");
diff --git a/ftrace_reader/src/end_to_end_integrationtest.cc b/ftrace_reader/src/end_to_end_integrationtest.cc
index 1b1a26d..810c27d 100644
--- a/ftrace_reader/src/end_to_end_integrationtest.cc
+++ b/ftrace_reader/src/end_to_end_integrationtest.cc
@@ -17,12 +17,12 @@
 #include <fstream>
 #include <sstream>
 
-#include "base/unix_task_runner.h"
 #include "ftrace_procfs.h"
 #include "ftrace_reader/ftrace_controller.h"
 #include "gmock/gmock.h"
 #include "google/protobuf/text_format.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/unix_task_runner.h"
 #include "protozero/scattered_stream_writer.h"
 #include "scattered_stream_delegate_for_testing.h"
 
diff --git a/ftrace_reader/src/format_parser.cc b/ftrace_reader/src/format_parser.cc
index d986b8e..954ddc3 100644
--- a/ftrace_reader/src/format_parser.cc
+++ b/ftrace_reader/src/format_parser.cc
@@ -23,8 +23,8 @@
 #include <memory>
 #include <vector>
 
-#include "base/utils.h"
 #include "ftrace_reader/ftrace_to_proto.h"
+#include "perfetto_base/utils.h"
 
 namespace perfetto {
 namespace {
diff --git a/ftrace_reader/src/ftrace_controller.cc b/ftrace_reader/src/ftrace_controller.cc
index 1098a65..09b22ea 100644
--- a/ftrace_reader/src/ftrace_controller.cc
+++ b/ftrace_reader/src/ftrace_controller.cc
@@ -25,10 +25,10 @@
 #include <array>
 #include <string>
 
-#include "base/logging.h"
-#include "base/utils.h"
 #include "cpu_reader.h"
 #include "ftrace_procfs.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/utils.h"
 #include "proto_translation_table.h"
 
 #include "protos/ftrace/ftrace_event_bundle.pbzero.h"
diff --git a/ftrace_reader/src/ftrace_procfs.cc b/ftrace_reader/src/ftrace_procfs.cc
index cb7c3f6..332d993 100644
--- a/ftrace_reader/src/ftrace_procfs.cc
+++ b/ftrace_reader/src/ftrace_procfs.cc
@@ -24,8 +24,8 @@
 #include <sstream>
 #include <string>
 
-#include "base/logging.h"
-#include "base/utils.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/utils.h"
 
 namespace perfetto {
 namespace {
diff --git a/ftrace_reader/src/ftrace_procfs.h b/ftrace_reader/src/ftrace_procfs.h
index dc305d9..bf8b2be 100644
--- a/ftrace_reader/src/ftrace_procfs.h
+++ b/ftrace_reader/src/ftrace_procfs.h
@@ -19,7 +19,7 @@
 
 #include <string>
 
-#include "base/scoped_file.h"
+#include "perfetto_base/scoped_file.h"
 
 namespace perfetto {
 
diff --git a/ftrace_reader/src/main.cc b/ftrace_reader/src/main.cc
index 46ec56f..068c046 100644
--- a/ftrace_reader/src/main.cc
+++ b/ftrace_reader/src/main.cc
@@ -24,8 +24,8 @@
 #include <utility>
 #include <vector>
 
-#include "base/unix_task_runner.h"
 #include "ftrace_reader/ftrace_controller.h"
+#include "perfetto_base/unix_task_runner.h"
 #include "protozero/scattered_stream_writer.h"
 #include "scattered_stream_delegate_for_testing.h"
 
diff --git a/ftrace_reader/src/proto_translation_table.h b/ftrace_reader/src/proto_translation_table.h
index 2854ca7..0058527 100644
--- a/ftrace_reader/src/proto_translation_table.h
+++ b/ftrace_reader/src/proto_translation_table.h
@@ -25,7 +25,7 @@
 #include <string>
 #include <vector>
 
-#include "base/scoped_file.h"
+#include "perfetto_base/scoped_file.h"
 
 namespace perfetto {
 
diff --git a/ftrace_reader/src/proto_translation_table_unittest.cc b/ftrace_reader/src/proto_translation_table_unittest.cc
index 848ea3e..797e3ee 100644
--- a/ftrace_reader/src/proto_translation_table_unittest.cc
+++ b/ftrace_reader/src/proto_translation_table_unittest.cc
@@ -50,14 +50,14 @@
   std::string path = "ftrace_reader/test/data/android_seed_N2F62_3.10.49/";
   FtraceProcfs ftrace_procfs(path);
   auto table = ProtoTranslationTable::Create(&ftrace_procfs);
-  EXPECT_EQ(table->largest_id(), 744);
+  EXPECT_EQ(table->largest_id(), 744ul);
   EXPECT_EQ(table->common_fields().at(0).ftrace_offset, 0u);
   EXPECT_EQ(table->common_fields().at(0).ftrace_size, 2u);
 
   auto sched_switch_event = table->GetEventByName("sched_switch");
   EXPECT_EQ(sched_switch_event->name, "sched_switch");
   EXPECT_EQ(sched_switch_event->group, "sched");
-  EXPECT_EQ(sched_switch_event->ftrace_event_id, 68);
+  EXPECT_EQ(sched_switch_event->ftrace_event_id, 68ul);
   EXPECT_EQ(sched_switch_event->fields.at(0).ftrace_offset, 8u);
   EXPECT_EQ(sched_switch_event->fields.at(0).ftrace_size, 16u);
 }
@@ -91,10 +91,10 @@
   }
 
   ProtoTranslationTable table(events, std::move(common_fields));
-  EXPECT_EQ(table.largest_id(), 100);
-  EXPECT_EQ(table.EventNameToFtraceId("foo"), 1);
-  EXPECT_EQ(table.EventNameToFtraceId("baz"), 100);
-  EXPECT_EQ(table.EventNameToFtraceId("no_such_event"), 0);
+  EXPECT_EQ(table.largest_id(), 100ul);
+  EXPECT_EQ(table.EventNameToFtraceId("foo"), 1ul);
+  EXPECT_EQ(table.EventNameToFtraceId("baz"), 100ul);
+  EXPECT_EQ(table.EventNameToFtraceId("no_such_event"), 0ul);
   EXPECT_EQ(table.GetEventById(1)->name, "foo");
   EXPECT_EQ(table.GetEventById(3), nullptr);
   EXPECT_EQ(table.GetEventById(200), nullptr);
diff --git a/gn/BUILD.gn b/gn/BUILD.gn
new file mode 100644
index 0000000..d6b4315
--- /dev/null
+++ b/gn/BUILD.gn
@@ -0,0 +1,68 @@
+# Copyright (C) 2017 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.
+
+import("perfetto.gni")
+
+group("gtest_deps") {
+  testonly = true
+
+  if (!build_with_chromium) {
+    public_deps = [
+      "//buildtools:gmock",
+      "//buildtools:gtest",
+      "//buildtools:gtest_main",
+    ]
+  } else {
+    public_deps = [
+      "//testing/gmock",
+      "//testing/gtest",
+      "//testing/gtest:gtest_main",
+    ]
+  }
+}
+
+group("protoc_lib_deps") {
+  if (!build_with_chromium) {
+    if (current_toolchain == host_toolchain) {
+      public_deps = [
+        "//buildtools:protoc_lib",
+      ]
+    }
+  } else {
+    public_deps = [
+      "//third_party/protobuf:protoc_lib",
+    ]
+  }
+}
+
+group("protobuf_full_deps") {
+  if (!build_with_chromium) {
+    public_deps = [
+      "//buildtools:protobuf_full",
+    ]
+  } else {
+    public_deps = [
+      "//third_party/protobuf:protobuf_full",
+    ]
+  }
+}
+
+group("default_deps") {
+  if (!build_with_chromium) {
+    public_deps = [
+      "//build/libc++:deps",
+      "//build/sanitizers:deps",
+    ]
+  }
+}
diff --git a/gn/perfetto.gni b/gn/perfetto.gni
new file mode 100644
index 0000000..213534a
--- /dev/null
+++ b/gn/perfetto.gni
@@ -0,0 +1,21 @@
+# Copyright (C) 2017 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.
+
+import("//build_overrides/build.gni")
+
+if (!build_with_chromium) {
+  perfetto_root_path = "//"
+} else {
+  perfetto_root_path = "//third_party/perfetto/"
+}
diff --git a/ipc/BUILD.gn b/ipc/BUILD.gn
index 3bfe9e8..854f318 100644
--- a/ipc/BUILD.gn
+++ b/ipc/BUILD.gn
@@ -12,18 +12,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//build/proto_library.gni")
+import("../gn/perfetto.gni")
+import("//build_overrides/build.gni")
 import("ipc_library.gni")
 
+if (!build_with_chromium) {
+  import("//build/proto_library.gni")
+} else {
+  import("//third_party/protobuf/proto_library.gni")
+}
+
 config("config") {
-  include_dirs = [ "include" ]
+  include_dirs = [
+    perfetto_root_path + "ipc/include",
+    perfetto_root_path,
+  ]
 }
 
 source_set("ipc") {
   public_configs = [ ":config" ]
-  deps += [
+  deps = [
     ":wire_protocol",
-    "//base",
+    "../perfetto_base",
   ]
   sources = [
     "include/ipc/async_result.h",
@@ -49,16 +59,16 @@
 
 executable("ipc_unittests") {
   testonly = true
-  deps += [
+  deps = [
     ":ipc",
     ":test_messages",
     ":wire_protocol",
-    "//base",
-    "//base:test_support",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
+    "../perfetto_base",
+    "../perfetto_base:test_support",
   ]
+
   sources = [
     "src/buffered_frame_deserializer_unittest.cc",
     "src/client_impl_unittest.cc",
@@ -73,7 +83,9 @@
   sources = [
     "src/wire_protocol.proto",
   ]
-  include_dirs = [ "include" ]
+
+  extra_configs = [ ":config" ]
+  proto_in_dir = perfetto_root_path
   proto_out_dir = "protos_lite"
 }
 
@@ -83,5 +95,6 @@
     "src/test/deferred_unittest_messages.proto",
     "src/test/greeter_service.proto",
   ]
-  include_dirs = [ "include" ]
+  proto_in_dir = perfetto_root_path
+  extra_configs = [ ":config" ]
 }
diff --git a/ipc/include/ipc/client.h b/ipc/include/ipc/client.h
index 752976f..b703bae 100644
--- a/ipc/include/ipc/client.h
+++ b/ipc/include/ipc/client.h
@@ -20,9 +20,9 @@
 #include <functional>
 #include <memory>
 
-#include "base/scoped_file.h"
-#include "base/weak_ptr.h"
 #include "ipc/basic_types.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/weak_ptr.h"
 
 namespace perfetto {
 
diff --git a/ipc/include/ipc/client_info.h b/ipc/include/ipc/client_info.h
index 09c4945..2af429b 100644
--- a/ipc/include/ipc/client_info.h
+++ b/ipc/include/ipc/client_info.h
@@ -17,8 +17,8 @@
 #ifndef IPC_INCLUDE_IPC_CLIENT_INFO_H_
 #define IPC_INCLUDE_IPC_CLIENT_INFO_H_
 
-#include "base/logging.h"
 #include "ipc/basic_types.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/include/ipc/service.h b/ipc/include/ipc/service.h
index 55e4c19..aebb430 100644
--- a/ipc/include/ipc/service.h
+++ b/ipc/include/ipc/service.h
@@ -17,8 +17,8 @@
 #ifndef IPC_INCLUDE_IPC_SERVICE_H_
 #define IPC_INCLUDE_IPC_SERVICE_H_
 
-#include "base/logging.h"
 #include "ipc/client_info.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/include/ipc/service_proxy.h b/ipc/include/ipc/service_proxy.h
index 9e6ba39..b38cc47 100644
--- a/ipc/include/ipc/service_proxy.h
+++ b/ipc/include/ipc/service_proxy.h
@@ -26,8 +26,8 @@
 #include <memory>
 #include <string>
 
-#include "base/weak_ptr.h"
 #include "ipc/deferred.h"
+#include "perfetto_base/weak_ptr.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/ipc_library.gni b/ipc/ipc_library.gni
index f43f461..7f61f23 100644
--- a/ipc/ipc_library.gni
+++ b/ipc/ipc_library.gni
@@ -12,14 +12,25 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//build/proto_library.gni")
+import("../gn/perfetto.gni")
+import("//build_overrides/build.gni")
+
+if (!build_with_chromium) {
+  import("//build/proto_library.gni")
+} else {
+  import("//third_party/protobuf/proto_library.gni")
+}
 
 # Generates .ipc.{h,cc} stubs for IPC services defined in .proto files.
 template("ipc_library") {
   proto_library(target_name) {
-    generator_plugin_label = "//ipc/src/protoc_plugin:ipc_plugin"
+    perfetto_root_path = invoker.perfetto_root_path
+
+    generator_plugin_label =
+        perfetto_root_path + "ipc/src/protoc_plugin:ipc_plugin"
     generator_plugin_suffix = ".ipc"
-    public_configs = [ "//ipc:config" ]
+
+    #public_configs = [ rebase_path("ipc:config", perfetto_root_path) ]
     deps = [
       "//ipc",
     ]
@@ -27,6 +38,7 @@
     forward_variables_from(invoker,
                            [
                              "defines",
+                             "extra_configs",
                              "include_dirs",
                              "proto_in_dir",
                              "proto_out_dir",
diff --git a/ipc/src/buffered_frame_deserializer.cc b/ipc/src/buffered_frame_deserializer.cc
index 9d7b34f..ab8dca5 100644
--- a/ipc/src/buffered_frame_deserializer.cc
+++ b/ipc/src/buffered_frame_deserializer.cc
@@ -23,9 +23,9 @@
 #include <type_traits>
 #include <utility>
 
-#include "base/logging.h"
-#include "base/utils.h"
 #include "google/protobuf/io/zero_copy_stream_impl_lite.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/utils.h"
 
 #include "ipc/src/wire_protocol.pb.h"
 
@@ -200,7 +200,7 @@
   buf.insert(0, kHeaderSize, 0);  // Reserve the space for the header.
   frame.AppendToString(&buf);
   const uint32_t payload_size = static_cast<uint32_t>(buf.size() - kHeaderSize);
-  PERFETTO_DCHECK(payload_size == frame.GetCachedSize());
+  PERFETTO_DCHECK(payload_size == static_cast<uint32_t>(frame.GetCachedSize()));
   char header[kHeaderSize];
   memcpy(header, base::AssumeLittleEndian(&payload_size), kHeaderSize);
   buf.replace(0, kHeaderSize, header, kHeaderSize);
diff --git a/ipc/src/buffered_frame_deserializer.h b/ipc/src/buffered_frame_deserializer.h
index 0aca5e7..17a43dc 100644
--- a/ipc/src/buffered_frame_deserializer.h
+++ b/ipc/src/buffered_frame_deserializer.h
@@ -22,7 +22,7 @@
 #include <list>
 #include <memory>
 
-#include "base/utils.h"
+#include "perfetto_base/utils.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/src/buffered_frame_deserializer_unittest.cc b/ipc/src/buffered_frame_deserializer_unittest.cc
index a796b69..f459b61 100644
--- a/ipc/src/buffered_frame_deserializer_unittest.cc
+++ b/ipc/src/buffered_frame_deserializer_unittest.cc
@@ -19,9 +19,9 @@
 #include <algorithm>
 #include <string>
 
-#include "base/logging.h"
-#include "base/utils.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/utils.h"
 
 #include "ipc/src/wire_protocol.pb.h"
 
@@ -62,7 +62,7 @@
     }
     frame.add_data_for_testing(padding.data(), padding_size);
   }
-  PERFETTO_CHECK(frame.ByteSize() == payload_size);
+  PERFETTO_CHECK(frame.ByteSize() == static_cast<int>(payload_size));
   std::vector<char> encoded_frame;
   encoded_frame.resize(size);
   char* enc_buf = encoded_frame.data();
@@ -107,7 +107,8 @@
     // Excactly one frame should be decoded, with no leftover buffer.
     auto decoded_frame = bfd.PopNextFrame();
     ASSERT_TRUE(decoded_frame);
-    ASSERT_EQ(size - kHeaderSize, decoded_frame->ByteSize());
+    ASSERT_EQ(static_cast<int32_t>(size - kHeaderSize),
+              decoded_frame->ByteSize());
     ASSERT_FALSE(bfd.PopNextFrame());
     ASSERT_EQ(0u, bfd.size());
   }
@@ -161,7 +162,7 @@
   // Validate the received frame2.
   std::unique_ptr<Frame> decoded_simple_frame = bfd.PopNextFrame();
   ASSERT_TRUE(decoded_simple_frame);
-  ASSERT_EQ(simple_frame.size() - kHeaderSize,
+  ASSERT_EQ(static_cast<int32_t>(simple_frame.size() - kHeaderSize),
             decoded_simple_frame->ByteSize());
 
   std::unique_ptr<Frame> decoded_frame = bfd.PopNextFrame();
@@ -236,7 +237,8 @@
     for (size_t expected_size : batch) {
       auto frame = bfd.PopNextFrame();
       ASSERT_TRUE(frame);
-      ASSERT_EQ(expected_size - kHeaderSize, frame->ByteSize());
+      ASSERT_EQ(static_cast<int32_t>(expected_size - kHeaderSize),
+                frame->ByteSize());
     }
     ASSERT_FALSE(bfd.PopNextFrame());
     ASSERT_EQ(0u, bfd.size());
@@ -298,7 +300,8 @@
       ASSERT_FALSE(decoded_frame);
     } else {
       ASSERT_TRUE(decoded_frame);
-      ASSERT_EQ(size - kHeaderSize, decoded_frame->ByteSize());
+      ASSERT_EQ(static_cast<int32_t>(size - kHeaderSize),
+                decoded_frame->ByteSize());
     }
     ASSERT_EQ(0u, bfd.size());
   }
diff --git a/ipc/src/client_impl.cc b/ipc/src/client_impl.cc
index b70fe2b..229056b 100644
--- a/ipc/src/client_impl.cc
+++ b/ipc/src/client_impl.cc
@@ -18,10 +18,10 @@
 
 #include <inttypes.h>
 
-#include "base/task_runner.h"
-#include "base/utils.h"
 #include "ipc/service_descriptor.h"
 #include "ipc/service_proxy.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/utils.h"
 
 // TODO(primiano): Add ThreadChecker everywhere.
 
diff --git a/ipc/src/client_impl.h b/ipc/src/client_impl.h
index 30c8e34..f2762ca 100644
--- a/ipc/src/client_impl.h
+++ b/ipc/src/client_impl.h
@@ -17,11 +17,11 @@
 #ifndef IPC_SRC_CLIENT_IMPL_H_
 #define IPC_SRC_CLIENT_IMPL_H_
 
-#include "base/scoped_file.h"
-#include "base/task_runner.h"
 #include "ipc/client.h"
 #include "ipc/src/buffered_frame_deserializer.h"
 #include "ipc/src/unix_socket.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/task_runner.h"
 
 #include "ipc/src/wire_protocol.pb.h"
 
diff --git a/ipc/src/client_impl_unittest.cc b/ipc/src/client_impl_unittest.cc
index 01ebe8c..4645443 100644
--- a/ipc/src/client_impl_unittest.cc
+++ b/ipc/src/client_impl_unittest.cc
@@ -21,14 +21,14 @@
 
 #include <string>
 
-#include "base/test/test_task_runner.h"
-#include "base/utils.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include "ipc/service_descriptor.h"
 #include "ipc/service_proxy.h"
 #include "ipc/src/buffered_frame_deserializer.h"
 #include "ipc/src/unix_socket.h"
+#include "perfetto_base/test/test_task_runner.h"
+#include "perfetto_base/utils.h"
 
 #include "ipc/src/test/client_unittest_messages.pb.h"
 
@@ -154,10 +154,12 @@
         Frame reply;
         reply.set_request_id(req.request_id());
         for (const auto& svc : services) {
-          if (svc.second->id != req.msg_invoke_method().service_id())
+          if (static_cast<int32_t>(svc.second->id) !=
+              req.msg_invoke_method().service_id())
             continue;
           for (const auto& method : svc.second->methods) {
-            if (method.second->id != req.msg_invoke_method().method_id())
+            if (static_cast<int32_t>(method.second->id) !=
+                req.msg_invoke_method().method_id())
               continue;
             method.second->OnInvoke(req.msg_invoke_method(),
                                     reply.mutable_msg_invoke_method_reply());
@@ -341,7 +343,8 @@
   ASSERT_TRUE(rx_fd);
   char buf[sizeof(kFileContent)] = {};
   ASSERT_EQ(0, lseek(*rx_fd, 0, SEEK_SET));
-  ASSERT_EQ(sizeof(buf), PERFETTO_EINTR(read(*rx_fd, buf, sizeof(buf))));
+  ASSERT_EQ(static_cast<long>(sizeof(buf)),
+            PERFETTO_EINTR(read(*rx_fd, buf, sizeof(buf))));
   ASSERT_STREQ(kFileContent, buf);
 }
 
diff --git a/ipc/src/deferred.cc b/ipc/src/deferred.cc
index 2cd01ed..3862115 100644
--- a/ipc/src/deferred.cc
+++ b/ipc/src/deferred.cc
@@ -16,8 +16,8 @@
 
 #include "ipc/deferred.h"
 
-#include "base/logging.h"
 #include "google/protobuf/message_lite.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/src/deferred_unittest.cc b/ipc/src/deferred_unittest.cc
index b52bf20..51472ed 100644
--- a/ipc/src/deferred_unittest.cc
+++ b/ipc/src/deferred_unittest.cc
@@ -16,8 +16,8 @@
 
 #include "ipc/deferred.h"
 
-#include "base/logging.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/logging.h"
 
 #include "ipc/src/test/deferred_unittest_messages.pb.h"
 
diff --git a/ipc/src/host_impl.cc b/ipc/src/host_impl.cc
index 6c4a32a..2c15519 100644
--- a/ipc/src/host_impl.cc
+++ b/ipc/src/host_impl.cc
@@ -21,10 +21,10 @@
 #include <algorithm>
 #include <utility>
 
-#include "base/task_runner.h"
-#include "base/utils.h"
 #include "ipc/service.h"
 #include "ipc/service_descriptor.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/utils.h"
 
 #include "ipc/src/wire_protocol.pb.h"
 
@@ -149,7 +149,8 @@
   Service* service = svc_it->second.instance.get();
   const ServiceDescriptor& svc = service->GetDescriptor();
   const auto& methods = svc.methods;
-  if (req.method_id() <= 0 || req.method_id() > methods.size())
+  if (req.method_id() <= 0 ||
+      static_cast<uint32_t>(req.method_id()) > methods.size())
     return SendFrame(client, reply_frame);
 
   const ServiceDescriptor::Method& method = methods[req.method_id() - 1];
diff --git a/ipc/src/host_impl.h b/ipc/src/host_impl.h
index 61d88a3..bbb6a33 100644
--- a/ipc/src/host_impl.h
+++ b/ipc/src/host_impl.h
@@ -22,12 +22,12 @@
 #include <string>
 #include <vector>
 
-#include "base/task_runner.h"
-#include "base/thread_checker.h"
 #include "ipc/deferred.h"
 #include "ipc/host.h"
 #include "ipc/src/buffered_frame_deserializer.h"
 #include "ipc/src/unix_socket.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/thread_checker.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/src/host_impl_unittest.cc b/ipc/src/host_impl_unittest.cc
index c3b8b6f..a98efb7 100644
--- a/ipc/src/host_impl_unittest.cc
+++ b/ipc/src/host_impl_unittest.cc
@@ -18,14 +18,14 @@
 
 #include <memory>
 
-#include "base/scoped_file.h"
-#include "base/test/test_task_runner.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include "ipc/service.h"
 #include "ipc/service_descriptor.h"
 #include "ipc/src/buffered_frame_deserializer.h"
 #include "ipc/src/unix_socket.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/test/test_task_runner.h"
 
 #include "ipc/src/test/client_unittest_messages.pb.h"
 #include "ipc/src/wire_protocol.pb.h"
@@ -297,7 +297,8 @@
       .WillOnce(Invoke([on_fd_received](int fd) {
         char buf[sizeof(kFileContent)] = {};
         ASSERT_EQ(0, lseek(fd, 0, SEEK_SET));
-        ASSERT_EQ(sizeof(buf), PERFETTO_EINTR(read(fd, buf, sizeof(buf))));
+        ASSERT_EQ(static_cast<int32_t>(sizeof(buf)),
+                  PERFETTO_EINTR(read(fd, buf, sizeof(buf))));
         ASSERT_STREQ(kFileContent, buf);
         on_fd_received();
       }));
diff --git a/ipc/src/protoc_plugin/BUILD.gn b/ipc/src/protoc_plugin/BUILD.gn
index 4a72ace..6350637 100644
--- a/ipc/src/protoc_plugin/BUILD.gn
+++ b/ipc/src/protoc_plugin/BUILD.gn
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//build_overrides/build.gni")
+
 if (current_toolchain == host_toolchain) {
   executable("ipc_plugin") {
     sources = [
@@ -19,7 +21,13 @@
       "ipc_generator.h",
       "ipc_plugin.cc",
     ]
-    deps += [ "//buildtools:protoc_lib" ]
+
+    deps = [
+      "../../../gn:default_deps",
+      "../../../gn:protoc_lib_deps",
+    ]
+    public_configs = [ "../../../perfetto_base:base_config" ]
+
     if (is_clang) {
       # Internal protobuf headers hit this.
       cflags = [ "-Wno-unreachable-code" ]
diff --git a/ipc/src/service_proxy.cc b/ipc/src/service_proxy.cc
index 39be416..bce6bfc 100644
--- a/ipc/src/service_proxy.cc
+++ b/ipc/src/service_proxy.cc
@@ -18,11 +18,11 @@
 
 #include <utility>
 
-#include "base/logging.h"
-#include "base/weak_ptr.h"
 #include "google/protobuf/message_lite.h"
 #include "ipc/service_descriptor.h"
 #include "ipc/src/client_impl.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/weak_ptr.h"
 
 namespace perfetto {
 namespace ipc {
diff --git a/ipc/src/test/ipc_integrationtest.cc b/ipc/src/test/ipc_integrationtest.cc
index 66053e9..815bf35 100644
--- a/ipc/src/test/ipc_integrationtest.cc
+++ b/ipc/src/test/ipc_integrationtest.cc
@@ -14,11 +14,11 @@
  * limitations under the License.
  */
 
-#include "base/test/test_task_runner.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 #include "ipc/client.h"
 #include "ipc/host.h"
+#include "perfetto_base/test/test_task_runner.h"
 
 #include "ipc/src/test/greeter_service.ipc.h"
 #include "ipc/src/test/greeter_service.pb.h"
diff --git a/ipc/src/unix_socket.cc b/ipc/src/unix_socket.cc
index 60986bd..54e3a40 100644
--- a/ipc/src/unix_socket.cc
+++ b/ipc/src/unix_socket.cc
@@ -29,10 +29,10 @@
 #include <algorithm>
 #include <memory>
 
-#include "base/build_config.h"
-#include "base/logging.h"
-#include "base/task_runner.h"
-#include "base/utils.h"
+#include "perfetto_base/build_config.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/utils.h"
 
 #if BUILDFLAG(OS_MACOSX)
 #include <sys/ucred.h>
diff --git a/ipc/src/unix_socket.h b/ipc/src/unix_socket.h
index 9f9deeb..b192381 100644
--- a/ipc/src/unix_socket.h
+++ b/ipc/src/unix_socket.h
@@ -23,9 +23,9 @@
 #include <memory>
 #include <string>
 
-#include "base/logging.h"
-#include "base/scoped_file.h"
-#include "base/weak_ptr.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/weak_ptr.h"
 
 namespace perfetto {
 
diff --git a/ipc/src/unix_socket_unittest.cc b/ipc/src/unix_socket_unittest.cc
index eea9e12..ec18ea9 100644
--- a/ipc/src/unix_socket_unittest.cc
+++ b/ipc/src/unix_socket_unittest.cc
@@ -20,12 +20,12 @@
 
 #include <list>
 
-#include "base/build_config.h"
-#include "base/logging.h"
-#include "base/test/test_task_runner.h"
-#include "base/utils.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/build_config.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/test/test_task_runner.h"
+#include "perfetto_base/utils.h"
 
 namespace perfetto {
 namespace ipc {
@@ -252,7 +252,7 @@
     EXPECT_CALL(event_listener_, OnNewIncomingConnection(srv.get(), _))
         .WillOnce(Invoke(
             [this, tmp_fd, checkpoint, mem](UnixSocket*, UnixSocket* new_conn) {
-              ASSERT_EQ(geteuid(), new_conn->peer_uid());
+              ASSERT_EQ(geteuid(), static_cast<uint32_t>(new_conn->peer_uid()));
               ASSERT_TRUE(new_conn->Send("txfd", 5, tmp_fd));
               // Wait for the client to change this again.
               EXPECT_CALL(event_listener_, OnDataAvailable(new_conn))
@@ -357,7 +357,7 @@
           Invoke([cli_connected](UnixSocket*, bool) { cli_connected(); }));
   task_runner_.RunUntilCheckpoint("cli_connected");
   ASSERT_TRUE(cli->is_connected());
-  ASSERT_EQ(geteuid(), cli->peer_uid());
+  ASSERT_EQ(geteuid(), static_cast<uint32_t>(cli->peer_uid()));
 
   bool did_requeue = false;
   for (int i = 0; i < kNumFrames; i++)
@@ -382,7 +382,7 @@
       .WillOnce(Invoke(
           [&srv_client_conn, srv_connected](UnixSocket*, UnixSocket* srv_conn) {
             srv_client_conn = srv_conn;
-            EXPECT_EQ(geteuid(), srv_conn->peer_uid());
+            EXPECT_EQ(geteuid(), static_cast<uint32_t>(srv_conn->peer_uid()));
             srv_connected();
           }));
   auto cli_connected = task_runner_.CreateCheckpoint("cli_connected");
@@ -410,7 +410,7 @@
   cli.reset();
   task_runner_.RunUntilCheckpoint("cli_disconnected");
   ASSERT_FALSE(srv_client_conn->is_connected());
-  EXPECT_EQ(geteuid(), srv_client_conn->peer_uid());
+  EXPECT_EQ(geteuid(), static_cast<uint32_t>(srv_client_conn->peer_uid()));
 }
 
 // TODO(primiano): add a test to check that in the case of a peer sending a fd
diff --git a/base/BUILD.gn b/perfetto_base/BUILD.gn
similarity index 83%
rename from base/BUILD.gn
rename to perfetto_base/BUILD.gn
index c58a552..acc70d1 100644
--- a/base/BUILD.gn
+++ b/perfetto_base/BUILD.gn
@@ -12,7 +12,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-source_set("base") {
+import("//build_overrides/build.gni")
+
+config("base_config") {
+  include_dirs = [ ".." ]
+}
+
+source_set("perfetto_base") {
+  public_configs = [ ":base_config" ]
+
   sources = [
     "build_config.h",
     "logging.h",
@@ -55,22 +63,24 @@
 
 source_set("test_support") {
   testonly = true
-  deps += [ ":base" ]
+  deps = [
+    ":perfetto_base",
+  ]
   sources = [
     "test/test_task_runner.cc",
     "test/test_task_runner.h",
   ]
 }
 
-executable("base_unittests") {
+executable("perfetto_base_unittests") {
   testonly = true
-  deps += [
-    ":base",
+  deps = [
+    ":perfetto_base",
     ":test_support",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
   ]
+
   sources = [
     "scoped_file_unittest.cc",
     "task_runner_unittest.cc",
diff --git a/base/android_task_runner.cc b/perfetto_base/android_task_runner.cc
similarity index 98%
rename from base/android_task_runner.cc
rename to perfetto_base/android_task_runner.cc
index 4b2c3f9..c16f80f 100644
--- a/base/android_task_runner.cc
+++ b/perfetto_base/android_task_runner.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/android_task_runner.h"
+#include "perfetto_base/android_task_runner.h"
 
 #include <sys/eventfd.h>
 #include <sys/timerfd.h>
diff --git a/base/android_task_runner.h b/perfetto_base/android_task_runner.h
similarity index 92%
rename from base/android_task_runner.h
rename to perfetto_base/android_task_runner.h
index 0c00aa1..f5f8199 100644
--- a/base/android_task_runner.h
+++ b/perfetto_base/android_task_runner.h
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
-#define PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
+#ifndef PERFETTO_PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
+#define PERFETTO_PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
 
-#include "base/scoped_file.h"
-#include "base/task_runner.h"
-#include "base/thread_checker.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/thread_checker.h"
 
 #include <poll.h>
 #include <chrono>
@@ -116,4 +116,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
+#endif  // PERFETTO_PERFETTO_BASE_ANDROID_TASK_RUNNER_H_
diff --git a/base/build_config.h b/perfetto_base/build_config.h
similarity index 90%
rename from base/build_config.h
rename to perfetto_base/build_config.h
index 797d68a..213f2f5 100644
--- a/base/build_config.h
+++ b/perfetto_base/build_config.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_BUILD_CONFIG_H_
-#define PERFETTO_BASE_BUILD_CONFIG_H_
+#ifndef PERFETTO_PERFETTO_BASE_BUILD_CONFIG_H_
+#define PERFETTO_PERFETTO_BASE_BUILD_CONFIG_H_
 
 // DO NOT include this file in public headers (include/) to avoid collisions.
 
@@ -41,4 +41,4 @@
 #error OS not supported (see build_config.h)
 #endif
 
-#endif  // PERFETTO_BASE_BUILD_CONFIG_H_
+#endif  // PERFETTO_PERFETTO_BASE_BUILD_CONFIG_H_
diff --git a/base/debug_crash_stack_trace.cc b/perfetto_base/debug_crash_stack_trace.cc
similarity index 100%
rename from base/debug_crash_stack_trace.cc
rename to perfetto_base/debug_crash_stack_trace.cc
diff --git a/base/logging.h b/perfetto_base/logging.h
similarity index 92%
rename from base/logging.h
rename to perfetto_base/logging.h
index bcb7e4d..ad50ce5 100644
--- a/base/logging.h
+++ b/perfetto_base/logging.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_LOGGING_H_
-#define PERFETTO_BASE_LOGGING_H_
+#ifndef PERFETTO_PERFETTO_BASE_LOGGING_H_
+#define PERFETTO_PERFETTO_BASE_LOGGING_H_
 
 #include <errno.h>
 #include <stdlib.h>
@@ -29,7 +29,7 @@
 #include <string.h>  // For strerror.
 #endif
 
-#include "base/utils.h"
+#include "perfetto_base/utils.h"
 
 #if PERFETTO_DCHECK_IS_ON()
 #define PERFETTO_DLOG(fmt, ...)                                               \
@@ -60,4 +60,4 @@
   } while (0)
 #endif  // PERFETTO_DCHECK_IS_ON()
 
-#endif  // PERFETTO_BASE_LOGGING_H_
+#endif  // PERFETTO_PERFETTO_BASE_LOGGING_H_
diff --git a/base/scoped_file.h b/perfetto_base/scoped_file.h
similarity index 90%
rename from base/scoped_file.h
rename to perfetto_base/scoped_file.h
index 83507b4..d9ba25b 100644
--- a/base/scoped_file.h
+++ b/perfetto_base/scoped_file.h
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_SCOPED_FILE_H_
-#define PERFETTO_BASE_SCOPED_FILE_H_
+#ifndef PERFETTO_PERFETTO_BASE_SCOPED_FILE_H_
+#define PERFETTO_PERFETTO_BASE_SCOPED_FILE_H_
 
 #include <dirent.h>
 #include <unistd.h>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace base {
@@ -64,4 +64,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_SCOPED_FILE_H_
+#endif  // PERFETTO_PERFETTO_BASE_SCOPED_FILE_H_
diff --git a/base/scoped_file_unittest.cc b/perfetto_base/scoped_file_unittest.cc
similarity index 98%
rename from base/scoped_file_unittest.cc
rename to perfetto_base/scoped_file_unittest.cc
index 174f220..10aa72c 100644
--- a/base/scoped_file_unittest.cc
+++ b/perfetto_base/scoped_file_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/scoped_file.h"
+#include "perfetto_base/scoped_file.h"
 
 #include <fcntl.h>
 #include <unistd.h>
diff --git a/base/task_runner.h b/perfetto_base/task_runner.h
similarity index 94%
rename from base/task_runner.h
rename to perfetto_base/task_runner.h
index 1575a8c..1ae69bb 100644
--- a/base/task_runner.h
+++ b/perfetto_base/task_runner.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_TASK_RUNNER_H_
-#define PERFETTO_BASE_TASK_RUNNER_H_
+#ifndef PERFETTO_PERFETTO_BASE_TASK_RUNNER_H_
+#define PERFETTO_PERFETTO_BASE_TASK_RUNNER_H_
 
 #include <functional>
 
@@ -62,4 +62,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_TASK_RUNNER_H_
+#endif  // PERFETTO_PERFETTO_BASE_TASK_RUNNER_H_
diff --git a/base/task_runner_unittest.cc b/perfetto_base/task_runner_unittest.cc
similarity index 98%
rename from base/task_runner_unittest.cc
rename to perfetto_base/task_runner_unittest.cc
index 5d60816..5a6e230 100644
--- a/base/task_runner_unittest.cc
+++ b/perfetto_base/task_runner_unittest.cc
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include "base/unix_task_runner.h"
+#include "perfetto_base/unix_task_runner.h"
 
-#include "base/build_config.h"
-#include "base/scoped_file.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/build_config.h"
+#include "perfetto_base/scoped_file.h"
 
 #if BUILDFLAG(OS_ANDROID)
-#include "base/android_task_runner.h"
+#include "perfetto_base/android_task_runner.h"
 #endif
 
 #include <thread>
diff --git a/base/test/test_task_runner.cc b/perfetto_base/test/test_task_runner.cc
similarity index 97%
rename from base/test/test_task_runner.cc
rename to perfetto_base/test/test_task_runner.cc
index ef7aa09..fdc3859 100644
--- a/base/test/test_task_runner.cc
+++ b/perfetto_base/test/test_task_runner.cc
@@ -14,14 +14,14 @@
  * limitations under the License.
  */
 
-#include "base/test/test_task_runner.h"
+#include "perfetto_base/test/test_task_runner.h"
 
 #include <stdio.h>
 #include <unistd.h>
 
 #include <chrono>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace base {
diff --git a/base/test/test_task_runner.h b/perfetto_base/test/test_task_runner.h
similarity index 91%
rename from base/test/test_task_runner.h
rename to perfetto_base/test/test_task_runner.h
index 45609ee..6c56594 100644
--- a/base/test/test_task_runner.h
+++ b/perfetto_base/test/test_task_runner.h
@@ -24,12 +24,12 @@
 #include <map>
 #include <string>
 
-#include "base/build_config.h"
-#include "base/thread_checker.h"
-#include "base/unix_task_runner.h"
+#include "perfetto_base/build_config.h"
+#include "perfetto_base/thread_checker.h"
+#include "perfetto_base/unix_task_runner.h"
 
 #if BUILDFLAG(OS_ANDROID)
-#include "base/android_task_runner.h"
+#include "perfetto_base/android_task_runner.h"
 #endif
 
 namespace perfetto {
diff --git a/base/thread_checker.cc b/perfetto_base/thread_checker.cc
similarity index 96%
rename from base/thread_checker.cc
rename to perfetto_base/thread_checker.cc
index 9d37640..ab15ee8 100644
--- a/base/thread_checker.cc
+++ b/perfetto_base/thread_checker.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/thread_checker.h"
+#include "perfetto_base/thread_checker.h"
 
 namespace perfetto {
 namespace base {
diff --git a/base/thread_checker.h b/perfetto_base/thread_checker.h
similarity index 88%
rename from base/thread_checker.h
rename to perfetto_base/thread_checker.h
index bc323a6..988d3d8 100644
--- a/base/thread_checker.h
+++ b/perfetto_base/thread_checker.h
@@ -14,13 +14,13 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_THREAD_CHECKER_H_
-#define PERFETTO_BASE_THREAD_CHECKER_H_
+#ifndef PERFETTO_PERFETTO_BASE_THREAD_CHECKER_H_
+#define PERFETTO_PERFETTO_BASE_THREAD_CHECKER_H_
 
 #include <pthread.h>
 #include <atomic>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 namespace base {
@@ -52,4 +52,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_THREAD_CHECKER_H_
+#endif  // PERFETTO_PERFETTO_BASE_THREAD_CHECKER_H_
diff --git a/base/thread_checker_unittest.cc b/perfetto_base/thread_checker_unittest.cc
similarity index 98%
rename from base/thread_checker_unittest.cc
rename to perfetto_base/thread_checker_unittest.cc
index 8cc6433..69b65aa 100644
--- a/base/thread_checker_unittest.cc
+++ b/perfetto_base/thread_checker_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/thread_checker.h"
+#include "perfetto_base/thread_checker.h"
 
 #include <pthread.h>
 
diff --git a/base/unix_task_runner.cc b/perfetto_base/unix_task_runner.cc
similarity index 98%
rename from base/unix_task_runner.cc
rename to perfetto_base/unix_task_runner.cc
index a7cb307..ba162ab 100644
--- a/base/unix_task_runner.cc
+++ b/perfetto_base/unix_task_runner.cc
@@ -14,9 +14,9 @@
  * limitations under the License.
  */
 
-#include "base/unix_task_runner.h"
+#include "perfetto_base/unix_task_runner.h"
 
-#include "base/build_config.h"
+#include "perfetto_base/build_config.h"
 
 #include <fcntl.h>
 #include <stdlib.h>
diff --git a/base/unix_task_runner.h b/perfetto_base/unix_task_runner.h
similarity index 89%
rename from base/unix_task_runner.h
rename to perfetto_base/unix_task_runner.h
index 554de63..e804308 100644
--- a/base/unix_task_runner.h
+++ b/perfetto_base/unix_task_runner.h
@@ -14,12 +14,12 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_UNIX_TASK_RUNNER_H_
-#define PERFETTO_BASE_UNIX_TASK_RUNNER_H_
+#ifndef PERFETTO_PERFETTO_BASE_UNIX_TASK_RUNNER_H_
+#define PERFETTO_PERFETTO_BASE_UNIX_TASK_RUNNER_H_
 
-#include "base/scoped_file.h"
-#include "base/task_runner.h"
-#include "base/thread_checker.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/task_runner.h"
+#include "perfetto_base/thread_checker.h"
 
 #include <poll.h>
 #include <chrono>
@@ -95,4 +95,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_UNIX_TASK_RUNNER_H_
+#endif  // PERFETTO_PERFETTO_BASE_UNIX_TASK_RUNNER_H_
diff --git a/base/utils.h b/perfetto_base/utils.h
similarity index 90%
rename from base/utils.h
rename to perfetto_base/utils.h
index 5c1c6f1..368c253 100644
--- a/base/utils.h
+++ b/perfetto_base/utils.h
@@ -14,8 +14,8 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_UTILS_H_
-#define PERFETTO_BASE_UTILS_H_
+#ifndef PERFETTO_PERFETTO_BASE_UTILS_H_
+#define PERFETTO_PERFETTO_BASE_UTILS_H_
 
 #include <errno.h>
 #include <stddef.h>
@@ -47,9 +47,7 @@
 // std::unique_ptr<int, base::FreeDeleter> foo_ptr(
 //     static_cast<int*>(malloc(sizeof(int))));
 struct FreeDeleter {
-  inline void operator()(void* ptr) const {
-    free(ptr);
-  }
+  inline void operator()(void* ptr) const { free(ptr); }
 };
 
 template <typename T>
@@ -62,4 +60,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_UTILS_H_
+#endif  // PERFETTO_PERFETTO_BASE_UTILS_H_
diff --git a/base/utils_unittest.cc b/perfetto_base/utils_unittest.cc
similarity index 98%
rename from base/utils_unittest.cc
rename to perfetto_base/utils_unittest.cc
index 5495fd7..0848701 100644
--- a/base/utils_unittest.cc
+++ b/perfetto_base/utils_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/utils.h"
+#include "perfetto_base/utils.h"
 
 #include <fcntl.h>
 #include <signal.h>
diff --git a/base/weak_ptr.h b/perfetto_base/weak_ptr.h
similarity index 93%
rename from base/weak_ptr.h
rename to perfetto_base/weak_ptr.h
index 1a22a5a..e18212d 100644
--- a/base/weak_ptr.h
+++ b/perfetto_base/weak_ptr.h
@@ -14,10 +14,10 @@
  * limitations under the License.
  */
 
-#ifndef PERFETTO_BASE_WEAK_PTR_H_
-#define PERFETTO_BASE_WEAK_PTR_H_
+#ifndef PERFETTO_PERFETTO_BASE_WEAK_PTR_H_
+#define PERFETTO_PERFETTO_BASE_WEAK_PTR_H_
 
-#include "base/thread_checker.h"
+#include "perfetto_base/thread_checker.h"
 
 #include <memory>
 
@@ -100,4 +100,4 @@
 }  // namespace base
 }  // namespace perfetto
 
-#endif  // PERFETTO_BASE_WEAK_PTR_H_
+#endif  // PERFETTO_PERFETTO_BASE_WEAK_PTR_H_
diff --git a/base/weak_ptr_unittest.cc b/perfetto_base/weak_ptr_unittest.cc
similarity index 97%
rename from base/weak_ptr_unittest.cc
rename to perfetto_base/weak_ptr_unittest.cc
index 16b32a9..009df4a 100644
--- a/base/weak_ptr_unittest.cc
+++ b/perfetto_base/weak_ptr_unittest.cc
@@ -14,7 +14,7 @@
  * limitations under the License.
  */
 
-#include "base/weak_ptr.h"
+#include "perfetto_base/weak_ptr.h"
 
 #include "gtest/gtest.h"
 
diff --git a/protos/ftrace/BUILD.gn b/protos/ftrace/BUILD.gn
index 76e011a..d7e81a1 100644
--- a/protos/ftrace/BUILD.gn
+++ b/protos/ftrace/BUILD.gn
@@ -12,7 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//protozero/protozero_library.gni")
+import("../../gn/perfetto.gni")
+import("../../protozero/protozero_library.gni")
 import("all_protos.gni")
 
 # Create a copy of all the protos listed in all_protos.gni with the
@@ -24,7 +25,7 @@
 
 action_foreach("generate_full_protos") {
   visibility = [ ":*" ]
-  script = "//build/generate_full_protos.py"
+  script = "../../build/generate_full_protos.py"
   sources = ftrace_proto_names
 
   # TODO(hjd): Add support for subdirectories.
@@ -47,8 +48,8 @@
   ]
   sources = []
   use_protobuf_full = true
+  proto_in_dir = "$full_protos_base_dir/" + perfetto_root_path
   proto_out_dir = "protos_full"
-  proto_in_dir = full_protos_base_dir
   foreach(proto, ftrace_proto_names) {
     sources += [ "$full_protos_target_dir/$proto" ]
   }
@@ -56,11 +57,13 @@
 
 proto_library("lite") {
   sources = ftrace_proto_names
+  proto_in_dir = perfetto_root_path
   proto_out_dir = "protos_lite"
 }
 
 protozero_library("zero") {
   sources = ftrace_proto_names
+  proto_in_dir = perfetto_root_path
   proto_out_dir = "protos_zero"
   generator_plugin_options = "wrapper_namespace=pbzero"
 }
diff --git a/protozero/BUILD.gn b/protozero/BUILD.gn
index 0f01f26..1ebfaca 100644
--- a/protozero/BUILD.gn
+++ b/protozero/BUILD.gn
@@ -12,7 +12,16 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//build/proto_library.gni")
+import("../gn/perfetto.gni")
+import("//build_overrides/build.gni")
+
+if (!build_with_chromium) {
+  import("//build/proto_library.gni")
+} else {
+  import("//third_party/protobuf/proto_library.gni")
+}
+
+import("../gn/perfetto.gni")
 import("protozero_library.gni")
 
 config("protozero_config") {
@@ -21,8 +30,15 @@
 
 source_set("protozero") {
   all_dependent_configs = [ ":protozero_config" ]
-  configs += [ "//buildtools:googletest_prod_config" ]
-  deps += [ "//base" ]
+
+  deps = [
+    "../perfetto_base",
+  ]
+
+  if (!build_with_chromium) {
+    configs += [ "//buildtools:googletest_prod_config" ]
+  }
+
   sources = [
     "include/protozero/contiguous_memory_range.h",
     "include/protozero/proto_field_descriptor.h",
@@ -38,15 +54,15 @@
 
 executable("protozero_unittests") {
   testonly = true
-  deps += [
+  deps = [
     ":protozero",
     ":testing_messages_lite",
     ":testing_messages_zero",
-    "//base",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
+    "../perfetto_base",
   ]
+
   sources = [
     "src/proto_utils_unittest.cc",
     "src/protozero_message_unittest.cc",
@@ -67,14 +83,16 @@
 ]
 
 protozero_library("testing_messages_zero") {
-  include_dirs = [ "include" ]
+  #include_dirs = [ "include" ]
   sources = testing_proto_sources
+  proto_in_dir = perfetto_root_path
   proto_out_dir = "protos_zero"
   generator_plugin_options = "wrapper_namespace=pbzero"
 }
 
 proto_library("testing_messages_lite") {
-  include_dirs = [ "include" ]
+  #include_dirs = [ "include" ]
   sources = testing_proto_sources
+  proto_in_dir = perfetto_root_path
   proto_out_dir = "protos_lite"
 }
diff --git a/protozero/protozero_library.gni b/protozero/protozero_library.gni
index 9192fb9..8698052 100644
--- a/protozero/protozero_library.gni
+++ b/protozero/protozero_library.gni
@@ -12,23 +12,40 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//build/proto_library.gni")
+import("//build_overrides/build.gni")
 
-# Equivalent to proto_library (generation of .h/.cc form .proto files) but
+if (!build_with_chromium) {
+  import("//build/proto_library.gni")
+} else {
+  import("//third_party/protobuf/proto_library.gni")
+}
+
+# Equivalent to proto_library (generation of .h/.cc from .proto files) but
 # enables also generation using the protozero plugin.
-# The generated files will have the .pbzero.{cc,h} suffix, as opposite to the
+# The generated files will have the .pbzero.{cc,h} suffix, as opposed to the
 # .pb.{cc,h} of the official proto library.
 template("protozero_library") {
   proto_library(target_name) {
+    perfetto_root_path = invoker.perfetto_root_path
+
     generate_cc = false
-    generator_plugin_label = "//protozero/src/protoc_plugin"
+    generator_plugin_label = perfetto_root_path + "protozero/src/protoc_plugin"
     generator_plugin_suffix = ".pbzero"
-    public_configs = [ "//protozero:protozero_config" ]
-    deps = []
+
+    if (!defined(invoker.public_configs)) {
+      public_configs = []
+    }
+
     if (defined(invoker.deps)) {
       deps = invoker.deps
+    } else {
+      deps = []
     }
-    deps += [ "//protozero" ]
+
+    deps += [ perfetto_root_path + "protozero" ]
+
+    public_configs += [ "//protozero:protozero_config" ]
+
     forward_variables_from(invoker,
                            [
                              "defines",
diff --git a/protozero/src/proto_utils.cc b/protozero/src/proto_utils.cc
index 4e2ead8..833dfdd 100644
--- a/protozero/src/proto_utils.cc
+++ b/protozero/src/proto_utils.cc
@@ -20,7 +20,7 @@
 
 #include <limits>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 #define PERFETTO_CHECK_PTR_LE(a, b)                \
   PERFETTO_CHECK(reinterpret_cast<uintptr_t>(a) <= \
diff --git a/protozero/src/proto_utils_unittest.cc b/protozero/src/proto_utils_unittest.cc
index e1b3f2b..2d8f3fc 100644
--- a/protozero/src/proto_utils_unittest.cc
+++ b/protozero/src/proto_utils_unittest.cc
@@ -18,9 +18,9 @@
 
 #include <limits>
 
-#include "base/logging.h"
-#include "base/utils.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/utils.h"
 
 namespace protozero {
 namespace proto_utils {
diff --git a/protozero/src/protoc_plugin/BUILD.gn b/protozero/src/protoc_plugin/BUILD.gn
index 7ab92fb..0f8cc4d 100644
--- a/protozero/src/protoc_plugin/BUILD.gn
+++ b/protozero/src/protoc_plugin/BUILD.gn
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import("//build_overrides/build.gni")
+
 if (current_toolchain == host_toolchain) {
   executable("protoc_plugin") {
     sources = [
@@ -19,7 +21,18 @@
       "protozero_generator.h",
       "protozero_plugin.cc",
     ]
-    deps += [ "//buildtools:protoc_lib" ]
+
+    if (!build_with_chromium) {
+      deps = [
+        "../../../gn:default_deps",
+        "//buildtools:protoc_lib",
+      ]
+    } else {
+      deps = [
+        "//third_party/protobuf:protoc_lib",
+      ]
+    }
+
     if (is_clang) {
       # Internal protobuf headers hit this.
       cflags = [ "-Wno-unreachable-code" ]
diff --git a/protozero/src/protozero_message.cc b/protozero/src/protozero_message.cc
index 3e053f4..c88cb8c 100644
--- a/protozero/src/protozero_message.cc
+++ b/protozero/src/protozero_message.cc
@@ -18,7 +18,7 @@
 
 #include <type_traits>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
 // The memcpy() for float and double below needs to be adjusted if we want to
diff --git a/protozero/src/protozero_message_handle.cc b/protozero/src/protozero_message_handle.cc
index e44a1fc..5c4b838 100644
--- a/protozero/src/protozero_message_handle.cc
+++ b/protozero/src/protozero_message_handle.cc
@@ -18,7 +18,7 @@
 
 #include <utility>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 #include "protozero/protozero_message.h"
 
 namespace protozero {
diff --git a/protozero/src/protozero_message_unittest.cc b/protozero/src/protozero_message_unittest.cc
index dd8ae76..ffad3c7 100644
--- a/protozero/src/protozero_message_unittest.cc
+++ b/protozero/src/protozero_message_unittest.cc
@@ -21,8 +21,8 @@
 #include <utility>
 #include <vector>
 
-#include "base/logging.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/logging.h"
 #include "protozero/src/test/fake_scattered_buffer.h"
 
 namespace protozero {
diff --git a/protozero/src/scattered_stream_writer.cc b/protozero/src/scattered_stream_writer.cc
index 3dc738d..292c461 100644
--- a/protozero/src/scattered_stream_writer.cc
+++ b/protozero/src/scattered_stream_writer.cc
@@ -18,7 +18,7 @@
 
 #include <algorithm>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace protozero {
 
diff --git a/protozero/src/scattered_stream_writer_unittest.cc b/protozero/src/scattered_stream_writer_unittest.cc
index d1d37e1..65951b5 100644
--- a/protozero/src/scattered_stream_writer_unittest.cc
+++ b/protozero/src/scattered_stream_writer_unittest.cc
@@ -20,8 +20,8 @@
 
 #include <memory>
 
-#include "base/logging.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/logging.h"
 #include "protozero/src/test/fake_scattered_buffer.h"
 
 namespace protozero {
diff --git a/tools/ftrace_proto_gen/BUILD.gn b/tools/ftrace_proto_gen/BUILD.gn
index 003c6e9..87b89ec 100644
--- a/tools/ftrace_proto_gen/BUILD.gn
+++ b/tools/ftrace_proto_gen/BUILD.gn
@@ -16,8 +16,9 @@
   sources = [
     "main.cc",
   ]
-  deps += [
-    "//base",
-    "//ftrace_reader",
+  deps = [
+    "../../ftrace_reader",
+    "../../gn:default_deps",
+    "../../perfetto_base",
   ]
 }
diff --git a/tools/sanitizers_unittests/BUILD.gn b/tools/sanitizers_unittests/BUILD.gn
index 62925b1..9053395 100644
--- a/tools/sanitizers_unittests/BUILD.gn
+++ b/tools/sanitizers_unittests/BUILD.gn
@@ -14,10 +14,12 @@
 
 executable("sanitizers_unittests") {
   testonly = true
-  deps += [
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
+
+  deps = [
+    "../../gn:default_deps",
+    "../../gn:gtest_deps",
   ]
+
   sources = [
     "sanitizers_unittest.cc",
   ]
diff --git a/tracing/BUILD.gn b/tracing/BUILD.gn
index 698721b..f25c654 100644
--- a/tracing/BUILD.gn
+++ b/tracing/BUILD.gn
@@ -12,16 +12,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import("//ipc//ipc_library.gni")
+import("../gn/perfetto.gni")
+import("//build_overrides/build.gni")
+import("../ipc//ipc_library.gni")
 
 config("tracing_config") {
-  include_dirs = [ "include" ]
+  include_dirs = [
+    "include",
+    perfetto_root_path,
+  ]
 }
 
 # Core tracing library, platform independent, no transport layer.
 source_set("tracing") {
   all_dependent_configs = [ ":tracing_config" ]
-  deps += [ "//base" ]
+  deps = [
+    "../perfetto_base",
+  ]
   sources = [
     "include/tracing/core/basic_types.h",
     "include/tracing/core/data_source_config.h",
@@ -36,6 +43,8 @@
 
 # IPC service definitions.
 ipc_library("ipc_protos") {
+  proto_in_dir = perfetto_root_path
+  extra_configs = [ "../ipc:config" ]
   sources = [
     "src/ipc/data_source_config.proto",
     "src/ipc/data_source_descriptor.proto",
@@ -61,21 +70,22 @@
   deps = [
     ":ipc_protos",
     ":tracing",
-    "//base",
+    "../ipc",
+    "../perfetto_base",
   ]
 }
 
 executable("tracing_unittests") {
   testonly = true
-  deps += [
+  deps = [
     ":ipc",
     ":tracing",
-    "//base",
-    "//base:test_support",
-    "//buildtools:gmock",
-    "//buildtools:gtest",
-    "//buildtools:gtest_main",
+    "../gn:default_deps",
+    "../gn:gtest_deps",
+    "../perfetto_base",
+    "../perfetto_base:test_support",
   ]
+
   sources = [
     "src/core/service_impl_unittest.cc",
     "src/ipc/posix_shared_memory_unittest.cc",
@@ -86,23 +96,31 @@
 
 executable("tracing_test") {
   testonly = true
-  deps += [
+  deps = [
     ":ipc",
     ":ipc_protos",
     ":tracing",
-    "//base",
-    "//base:test_support",
-    "//ipc",
+    "../gn:default_deps",
+    "../ipc",
+    "../perfetto_base",
+    "../perfetto_base:test_support",
   ]
   sources = [
     "src/test/ipc_test.cc",
   ]
 }
 
-executable("tracing_benchmarks") {
-  testonly = true
-  deps += [ "//buildtools:benchmark" ]
-  sources = [
-    "src/test/hello_world_benchmark.cc",
-  ]
+if (!build_with_chromium) {
+  executable("tracing_benchmarks") {
+    testonly = true
+
+    deps = [
+      "../gn:default_deps",
+      "//buildtools:benchmark",
+    ]
+
+    sources = [
+      "src/test/hello_world_benchmark.cc",
+    ]
+  }
 }
diff --git a/tracing/src/core/service_impl.cc b/tracing/src/core/service_impl.cc
index 23bb873..9a56e62 100644
--- a/tracing/src/core/service_impl.cc
+++ b/tracing/src/core/service_impl.cc
@@ -20,8 +20,8 @@
 
 #include <algorithm>
 
-#include "base/logging.h"
-#include "base/task_runner.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/task_runner.h"
 #include "tracing/core/data_source_config.h"
 #include "tracing/core/producer.h"
 #include "tracing/core/shared_memory.h"
diff --git a/tracing/src/core/service_impl_unittest.cc b/tracing/src/core/service_impl_unittest.cc
index e2914a8..804bbf6 100644
--- a/tracing/src/core/service_impl_unittest.cc
+++ b/tracing/src/core/service_impl_unittest.cc
@@ -18,9 +18,9 @@
 
 #include <string.h>
 
-#include "base/test/test_task_runner.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/test/test_task_runner.h"
 #include "tracing/core/data_source_config.h"
 #include "tracing/core/data_source_descriptor.h"
 #include "tracing/core/producer.h"
diff --git a/tracing/src/ipc/posix_shared_memory.cc b/tracing/src/ipc/posix_shared_memory.cc
index 77bcaf0..6d22600 100644
--- a/tracing/src/ipc/posix_shared_memory.cc
+++ b/tracing/src/ipc/posix_shared_memory.cc
@@ -27,7 +27,7 @@
 #include <memory>
 #include <utility>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 
diff --git a/tracing/src/ipc/posix_shared_memory.h b/tracing/src/ipc/posix_shared_memory.h
index 2f783cf..89c5eb8 100644
--- a/tracing/src/ipc/posix_shared_memory.h
+++ b/tracing/src/ipc/posix_shared_memory.h
@@ -21,7 +21,7 @@
 
 #include <memory>
 
-#include "base/scoped_file.h"
+#include "perfetto_base/scoped_file.h"
 #include "tracing/core/shared_memory.h"
 
 namespace perfetto {
diff --git a/tracing/src/ipc/posix_shared_memory_unittest.cc b/tracing/src/ipc/posix_shared_memory_unittest.cc
index e66ded1..016014a 100644
--- a/tracing/src/ipc/posix_shared_memory_unittest.cc
+++ b/tracing/src/ipc/posix_shared_memory_unittest.cc
@@ -24,11 +24,11 @@
 #include <sys/stat.h>
 #include <unistd.h>
 
-#include "base/build_config.h"
-#include "base/scoped_file.h"
-#include "base/test/test_task_runner.h"
-#include "base/utils.h"
 #include "gtest/gtest.h"
+#include "perfetto_base/build_config.h"
+#include "perfetto_base/scoped_file.h"
+#include "perfetto_base/test/test_task_runner.h"
+#include "perfetto_base/utils.h"
 
 namespace perfetto {
 namespace {
diff --git a/tracing/src/ipc/producer/producer_ipc_client_impl.cc b/tracing/src/ipc/producer/producer_ipc_client_impl.cc
index ff3094e..fd5814f 100644
--- a/tracing/src/ipc/producer/producer_ipc_client_impl.cc
+++ b/tracing/src/ipc/producer/producer_ipc_client_impl.cc
@@ -19,8 +19,8 @@
 #include <inttypes.h>
 #include <string.h>
 
-#include "base/task_runner.h"
 #include "ipc/client.h"
+#include "perfetto_base/task_runner.h"
 #include "tracing/core/data_source_config.h"
 #include "tracing/core/data_source_descriptor.h"
 #include "tracing/core/producer.h"
diff --git a/tracing/src/ipc/service/producer_ipc_service.cc b/tracing/src/ipc/service/producer_ipc_service.cc
index bd8e2ed..f4e8d4e 100644
--- a/tracing/src/ipc/service/producer_ipc_service.cc
+++ b/tracing/src/ipc/service/producer_ipc_service.cc
@@ -18,9 +18,9 @@
 
 #include <inttypes.h>
 
-#include "base/logging.h"
-#include "base/task_runner.h"
 #include "ipc/host.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/task_runner.h"
 #include "tracing/core/data_source_config.h"
 #include "tracing/core/data_source_descriptor.h"
 #include "tracing/core/service.h"
diff --git a/tracing/src/ipc/service/producer_ipc_service.h b/tracing/src/ipc/service/producer_ipc_service.h
index 70b92f9..4bd4c0f 100644
--- a/tracing/src/ipc/service/producer_ipc_service.h
+++ b/tracing/src/ipc/service/producer_ipc_service.h
@@ -21,8 +21,8 @@
 #include <memory>
 #include <string>
 
-#include "base/weak_ptr.h"
 #include "ipc/basic_types.h"
+#include "perfetto_base/weak_ptr.h"
 #include "tracing/core/producer.h"
 #include "tracing/core/service.h"
 
diff --git a/tracing/src/ipc/service/service_ipc_host_impl.cc b/tracing/src/ipc/service/service_ipc_host_impl.cc
index d11f5d5..3f19347 100644
--- a/tracing/src/ipc/service/service_ipc_host_impl.cc
+++ b/tracing/src/ipc/service/service_ipc_host_impl.cc
@@ -16,9 +16,9 @@
 
 #include "tracing/src/ipc/service/service_ipc_host_impl.h"
 
-#include "base/logging.h"
-#include "base/task_runner.h"
 #include "ipc/host.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/task_runner.h"
 #include "tracing/core/service.h"
 #include "tracing/src/ipc/posix_shared_memory.h"
 #include "tracing/src/ipc/service/producer_ipc_service.h"
diff --git a/tracing/src/test/ipc_test.cc b/tracing/src/test/ipc_test.cc
index 3a2d1cf..8bda6b2 100644
--- a/tracing/src/test/ipc_test.cc
+++ b/tracing/src/test/ipc_test.cc
@@ -19,8 +19,8 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "base/logging.h"
-#include "base/test/test_task_runner.h"
+#include "perfetto_base/logging.h"
+#include "perfetto_base/test/test_task_runner.h"
 #include "tracing/core/data_source_config.h"
 #include "tracing/core/data_source_descriptor.h"
 #include "tracing/core/producer.h"
diff --git a/tracing/src/test/test_shared_memory.cc b/tracing/src/test/test_shared_memory.cc
index 6bda050..d71de52 100644
--- a/tracing/src/test/test_shared_memory.cc
+++ b/tracing/src/test/test_shared_memory.cc
@@ -18,7 +18,7 @@
 
 #include <string.h>
 
-#include "base/logging.h"
+#include "perfetto_base/logging.h"
 
 namespace perfetto {
 
