Roll GN, clang and libc++ to match chromium revisions

Updates the GN binary and the libc++, libc++abi and libunwind
to match the most recent versions rolled into chrome.
Has no effect on the Android tree builds.
The new GN version seem to have stricter checks on include
paths. This CL therefore fixes the GN files to make deps
explicit and keep gn check happy (they all seem to make sense).

Change-Id: I0930b957099da78c8d5ebfebfd8dd387638496fd
diff --git a/BUILD.gn b/BUILD.gn
index ca0943d..5c15ed2 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -126,6 +126,7 @@
     deps = [
       ":libtraced_shared",
       "gn:default_deps",
+      "include/perfetto/traced",
     ]
     sources = [
       "src/traced/service/main.cc",
@@ -138,6 +139,7 @@
     deps = [
       ":libtraced_shared",
       "gn:default_deps",
+      "include/perfetto/traced",
     ]
     sources = [
       "src/traced/probes/main.cc",
diff --git a/buildtools/BUILD.gn b/buildtools/BUILD.gn
index 347fed0..ee356d5 100644
--- a/buildtools/BUILD.gn
+++ b/buildtools/BUILD.gn
@@ -458,6 +458,7 @@
       "libcxx/src/utility.cpp",
       "libcxx/src/valarray.cpp",
       "libcxx/src/variant.cpp",
+      "libcxx/src/vector.cpp",
     ]
     configs -= [
       "//gn/standalone:extra_warnings",
diff --git a/gn/ipc_library.gni b/gn/ipc_library.gni
index 3d57ee6..5d0df92 100644
--- a/gn/ipc_library.gni
+++ b/gn/ipc_library.gni
@@ -27,15 +27,14 @@
 
     generate_python = false
     generator_plugin_label =
-        perfetto_root_path + "src/ipc/protoc_plugin:ipc_plugin"
+        "$perfetto_root_path/src/ipc/protoc_plugin:ipc_plugin"
     generator_plugin_suffix = ".ipc"
     deps = [
-      "${perfetto_root_path}src/ipc",
+      "$perfetto_root_path/src/ipc",
     ]
     if (defined(invoker.deps)) {
       deps += invoker.deps
     }
-
     forward_variables_from(invoker,
                            [
                              "defines",
diff --git a/include/perfetto/traced/BUILD.gn b/include/perfetto/traced/BUILD.gn
index ef53c41..fefc5fa 100644
--- a/include/perfetto/traced/BUILD.gn
+++ b/include/perfetto/traced/BUILD.gn
@@ -13,9 +13,6 @@
 # limitations under the License.
 
 source_set("traced") {
-  deps = [
-    "../../../protos/perfetto/trace/filesystem:zero",
-  ]
   sources = [
     "data_source_types.h",
     "traced.h",
diff --git a/src/base/BUILD.gn b/src/base/BUILD.gn
index 5b96dd6..e4a1816 100644
--- a/src/base/BUILD.gn
+++ b/src/base/BUILD.gn
@@ -79,6 +79,7 @@
     ]
     deps = [
       "../../gn:default_deps",
+      "../../include/perfetto/base",
     ]
     if (is_linux || is_android) {
       deps += [ "../../buildtools:libbacktrace" ]
@@ -98,6 +99,7 @@
     "test/vm_test_utils.cc",
     "test/vm_test_utils.h",
   ]
+
   # The Perfetto task runner is not used on Windows.
   if (!is_win) {
     sources += [
diff --git a/src/perfetto_cmd/BUILD.gn b/src/perfetto_cmd/BUILD.gn
index 4026e04..9e893e4 100644
--- a/src/perfetto_cmd/BUILD.gn
+++ b/src/perfetto_cmd/BUILD.gn
@@ -52,6 +52,7 @@
     ":perfetto_cmd",
     "../../gn:default_deps",
     "../../gn:gtest_deps",
+    "../../include/perfetto/base",
   ]
   sources = [
     "rate_limiter_unittest.cc",
diff --git a/src/traced/probes/BUILD.gn b/src/traced/probes/BUILD.gn
index 5d0ae5d..ca58c5a 100644
--- a/src/traced/probes/BUILD.gn
+++ b/src/traced/probes/BUILD.gn
@@ -32,7 +32,9 @@
   ]
   deps = [
     "../../../gn:default_deps",
+    "../../../protos/perfetto/trace/ps:zero",
     "../../base",
+    "../../tracing:ipc",
     "../../tracing:tracing",
     "filesystem",
   ]
diff --git a/src/traced/probes/filesystem/BUILD.gn b/src/traced/probes/filesystem/BUILD.gn
index db17b8c..ecea7ee 100644
--- a/src/traced/probes/filesystem/BUILD.gn
+++ b/src/traced/probes/filesystem/BUILD.gn
@@ -19,6 +19,7 @@
   ]
   deps = [
     "../../../../gn:default_deps",
+    "../../../../include/perfetto/traced",
     "../../../base",
   ]
   sources = [
diff --git a/src/traced/probes/probes_producer.cc b/src/traced/probes/probes_producer.cc
index ce06ab8..52b8c5d 100644
--- a/src/traced/probes/probes_producer.cc
+++ b/src/traced/probes/probes_producer.cc
@@ -31,6 +31,7 @@
 #include "perfetto/tracing/core/ftrace_config.h"
 #include "perfetto/tracing/core/trace_config.h"
 #include "perfetto/tracing/core/trace_packet.h"
+#include "perfetto/tracing/ipc/producer_ipc_client.h"
 #include "src/traced/probes/filesystem/inode_file_data_source.h"
 
 #include "perfetto/trace/filesystem/inode_file_map.pbzero.h"
diff --git a/src/traced/probes/probes_producer.h b/src/traced/probes/probes_producer.h
index cefa582..d52aed5 100644
--- a/src/traced/probes/probes_producer.h
+++ b/src/traced/probes/probes_producer.h
@@ -25,8 +25,8 @@
 #include "perfetto/base/watchdog.h"
 #include "perfetto/ftrace_reader/ftrace_controller.h"
 #include "perfetto/tracing/core/producer.h"
+#include "perfetto/tracing/core/service.h"
 #include "perfetto/tracing/core/trace_writer.h"
-#include "perfetto/tracing/ipc/producer_ipc_client.h"
 #include "src/traced/probes/filesystem/inode_file_data_source.h"
 #include "src/traced/probes/process_stats_data_source.h"
 
diff --git a/src/tracing/BUILD.gn b/src/tracing/BUILD.gn
index 4415938..4386690 100644
--- a/src/tracing/BUILD.gn
+++ b/src/tracing/BUILD.gn
@@ -20,6 +20,7 @@
   public_deps = [
     "../../include/perfetto/tracing/core",
     "../../protos/perfetto/common",
+    "../../protos/perfetto/trace:minimal_lite",
     "../../protos/perfetto/trace:trusted_lite",
     "../../protos/perfetto/trace:zero",
   ]
@@ -28,6 +29,7 @@
     "../../gn:gtest_prod_config",
     "../../protos/perfetto/config",
     "../base",
+    "../protozero",
   ]
   sources = [
     "core/chrome_config.cc",
@@ -114,6 +116,7 @@
     "../../gn:default_deps",
     "../../protos/perfetto/ipc",
     "../base",
+    "../ipc",
   ]
 }
 
@@ -125,6 +128,7 @@
     ":tracing",
     "../../gn:default_deps",
     "../../gn:gtest_deps",
+    "../../protos/perfetto/config",
     "../../protos/perfetto/trace:lite",
     "../../protos/perfetto/trace:zero",
     "../base",
@@ -160,6 +164,7 @@
 source_set("test_support") {
   testonly = true
   public_deps = [
+    "../../include/perfetto/tracing/core",
     "../../protos/perfetto/trace:lite",
     "../../protos/perfetto/trace:zero",
     "../protozero:test_support",
diff --git a/test/BUILD.gn b/test/BUILD.gn
index a69e47b..c140953 100644
--- a/test/BUILD.gn
+++ b/test/BUILD.gn
@@ -30,7 +30,9 @@
     ":test_helper",
     "../gn:default_deps",
     "../gn:gtest_deps",
+    "../include/perfetto/traced",
     "../protos/perfetto/trace:lite",
+    "../protos/perfetto/trace:zero",
     "../src/base:base",
     "../src/base:test_support",
   ]
@@ -56,6 +58,7 @@
       ":task_runner_thread_delegates",
       ":test_helper",
       "../gn:default_deps",
+      "../protos/perfetto/trace:lite",
       "../src/base:test_support",
       "../src/protozero",
       "../src/tracing",
@@ -69,6 +72,7 @@
   testonly = true
   deps = [
     "../gn:default_deps",
+    "../src/base",
     "../src/base:test_support",
   ]
   sources = [
@@ -102,7 +106,9 @@
     ":task_runner_thread",
     ":task_runner_thread_delegates",
     "../gn:default_deps",
+    "../include/perfetto/traced",
     "../protos/perfetto/trace:lite",
+    "../protos/perfetto/trace:zero",
     "../src/base:test_support",
   ]
   sources = [
@@ -122,11 +128,12 @@
       ":task_runner_thread_delegates",
       ":test_helper",
       "../../gn:default_deps",
+      "../buildtools:benchmark",
       "../gn:gtest_deps",
+      "../include/perfetto/traced",
       "../protos/perfetto/trace:lite",
       "../protos/perfetto/trace:zero",
       "../src/base:test_support",
-      "//buildtools:benchmark",
     ]
     sources = [
       "end_to_end_benchmark.cc",
@@ -143,7 +150,7 @@
     testonly = true
     deps = [
       "../../gn:default_deps",
-      "//buildtools:benchmark",
+      "../buildtools:benchmark",
     ]
     sources = [
       "benchmark_main.cc",
diff --git a/test/end_to_end_shared_memory_fuzzer.cc b/test/end_to_end_shared_memory_fuzzer.cc
index b915194..bbde7b1 100644
--- a/test/end_to_end_shared_memory_fuzzer.cc
+++ b/test/end_to_end_shared_memory_fuzzer.cc
@@ -21,9 +21,7 @@
 #include "perfetto/base/logging.h"
 #include "perfetto/base/task_runner.h"
 #include "perfetto/base/utils.h"
-#include "perfetto/ipc/host.h"
 #include "perfetto/trace/test_event.pbzero.h"
-#include "perfetto/traced/traced.h"
 #include "perfetto/tracing/core/data_source_config.h"
 #include "perfetto/tracing/core/data_source_descriptor.h"
 #include "perfetto/tracing/core/producer.h"
diff --git a/tools/install-build-deps b/tools/install-build-deps
index 0435b9a..5e32b5b 100755
--- a/tools/install-build-deps
+++ b/tools/install-build-deps
@@ -44,13 +44,13 @@
 BUILD_DEPS_HOST = [
   # GN
   ('buildtools/mac/gn',
-   'https://storage.googleapis.com/chromium-gn/c2c934d4dda1f470a6511b1015dda9a9fb1ce50b',
-   'c2c934d4dda1f470a6511b1015dda9a9fb1ce50b',
+   'https://storage.googleapis.com/chromium-gn/9be792dd9010ce303a9c3a497a67bcc5ac8c7666',
+   '9be792dd9010ce303a9c3a497a67bcc5ac8c7666',
    'darwin'
   ),
   ('buildtools/linux64/gn',
-   'https://storage.googleapis.com/chromium-gn/b53fa13e950948c6f9a062189b76b34a9610281f',
-   'b53fa13e950948c6f9a062189b76b34a9610281f',
+   'https://storage.googleapis.com/chromium-gn/2f27ff0b6118e5886df976da5effa6003d19d1ce',
+   '2f27ff0b6118e5886df976da5effa6003d19d1ce',
    'linux2'
   ),
 
@@ -102,25 +102,25 @@
   # lib from sources. Keep the SHA1s in sync with Chrome's src/buildtools/DEPS.
   ('buildtools/libcxx',
    'https://chromium.googlesource.com/chromium/llvm-project/libcxx.git',
-   '3a07dd740be63878167a0ea19fe81869954badd7',
+   'ece1de8658d749e19c12cacd4458cc330eca94e3',
    'all'
   ),
   ('buildtools/libcxxabi',
    'https://chromium.googlesource.com/chromium/llvm-project/libcxxabi.git',
-   '4072e8fd76febee37f60aeda76d6d9f5e3791daa',
+   '05a73941f3fb177c4a891d4ff2a4ed5785e3b80c',
    'all'
   ),
   ('buildtools/libunwind',
    'https://chromium.googlesource.com/external/llvm.org/libunwind.git',
-   '41f982e5887185b904a456e20dfcd58e6be6cc19',
+   '0f3cbe4123f8afacd646bd4f5414aa6528ef8129',
    'all'
   ),
 
   # Keep the revision in sync with Chrome's CLANG_REVISION in
   # tools/clang/scripts/update.py.
   ('buildtools/clang.tgz',
-   'https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/clang-321529-1.tgz',
-   '7ca04034ac7e4a956b0084a8bc604bacab94af26',
+   'https://commondatastorage.googleapis.com/chromium-browser-clang/Linux_x64/clang-331747-1.tgz',
+   '973073ca36ae9194019705ec7677852a30c4b54e',
    'linux2'
   ),
 
diff --git a/tools/proto_to_cpp/BUILD.gn b/tools/proto_to_cpp/BUILD.gn
index 3d795b0..00b36f6 100644
--- a/tools/proto_to_cpp/BUILD.gn
+++ b/tools/proto_to_cpp/BUILD.gn
@@ -18,6 +18,7 @@
     deps = [
       "../../gn:default_deps",
       "../../gn:protobuf_full_deps",
+      "../../src/base",
     ]
     sources = [
       "proto_to_cpp.cc",
diff --git a/tools/trace_to_text/BUILD.gn b/tools/trace_to_text/BUILD.gn
index 5de6da9..56b24bc 100644
--- a/tools/trace_to_text/BUILD.gn
+++ b/tools/trace_to_text/BUILD.gn
@@ -19,7 +19,9 @@
   deps = [
     "../../gn:default_deps",
     "../../gn:protobuf_full_deps",
+    "../../include/perfetto/base",
     "../../protos/perfetto/trace:lite",
+    "../../protos/perfetto/trace/ftrace:lite",
   ]
   sources = [
     "ftrace_event_formatter.cc",