perfetto: update libcxx/libcxxabi/libunwind

This essentially required a rewrite of all the libcxx build rules - all
of thse rules catch up to the current state of Chrome rules (% some
small differences in our flags)

Change-Id: I90612ab32236711ea62539922e2ced42231b014f
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index a05f2f2..48c82ec 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -118,6 +118,7 @@
 
 # Used in buildtools dependencies for standalone builds.
 config("c++14") {
+  visibility = [ "//buildtools:llvm_demangle" ]
   if (is_win) {
     cflags_cc = [ "/std:c++14" ]
   } else {
@@ -127,6 +128,7 @@
 
 # Used in buildtools dependencies for standalone builds.
 config("c++17") {
+  visibility = [ "//buildtools:libunwindstack" ]
   if (is_win) {
     cflags_cc = [ "/std:c++17" ]
   } else {
@@ -134,6 +136,16 @@
   }
 }
 
+# Used in buildtools dependencies for standalone builds.
+config("c++20") {
+  visibility = [ "//buildtools:libc++config" ]
+  if (is_win) {
+    cflags_cc = [ "/std:c++20" ]
+  } else {
+    cflags_cc = [ "-std=c++20" ]
+  }
+}
+
 config("visibility_hidden") {
   if (!is_win) {
     cflags = [ "-fvisibility=hidden" ]
diff --git a/gn/standalone/libc++/BUILD.gn b/gn/standalone/libc++/BUILD.gn
index f6b6131..49d91ba 100644
--- a/gn/standalone/libc++/BUILD.gn
+++ b/gn/standalone/libc++/BUILD.gn
@@ -32,6 +32,7 @@
       "-isystem" + rebase_path("$libcxx_prefix/include", root_build_dir),
       "-isystem" + rebase_path("$libcxxabi_prefix/include", root_build_dir),
     ]
+    include_dirs = [ "//buildtools/libcxx_config" ]
 
     # Avoid linking both libc++ and libstdc++.
     ldflags = [ "-nostdlib++" ]
diff --git a/gn/standalone/libc++/libc++.gni b/gn/standalone/libc++/libc++.gni
index c4290b2..f1802a4 100644
--- a/gn/standalone/libc++/libc++.gni
+++ b/gn/standalone/libc++/libc++.gni
@@ -40,7 +40,7 @@
   #    We still retain libstdc++ coverage on the CI bots by overriding
   #    use_custom_libcxx=false when we target a modern library (see the
   #    GCC target in infra/ci/config.py).
-  use_custom_libcxx = is_linux && is_clang && !is_wasm
+  use_custom_libcxx = is_linux && is_hermetic_clang && !is_wasm
   custom_libcxx_is_static = !using_sanitizer
 }