Fix win32 build.

Follow up to aosp/1711913.
Fix a copy/paste mistake in platform_windows.cc
(PerfettoOnThreadExit vs OnThreadExit) which caused
a failure in the win32-archive-dbg/rel chromium
bots (https://ci.chromium.org/b/8846610513401740704).
This CL also makes it possible to build for win32
setting target_cpu=host_cpu="x86" in our standalone
build.
Also temporarily exclude some tests that fail on MSVC.

Bug: 174454879
Change-Id: I038b252020c68a4f3344441f3797f4786d94dd0b
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index 31941ed..ffe5725 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -209,10 +209,10 @@
     ldflags += [ "-flto=full" ]
   }
 
-  # We support only x64 builds on Windows.
-  assert(!is_win || current_cpu == "x64")
-
-  if (current_cpu == "arm") {
+  if (is_win) {
+    # We support only x86/x64 builds on Windows.
+    assert(current_cpu == "x64" || current_cpu == "x86")
+  } else if (current_cpu == "arm") {
     cflags += [
       "-march=armv7-a",
       "-mfpu=neon",
diff --git a/gn/standalone/toolchain/BUILD.gn b/gn/standalone/toolchain/BUILD.gn
index d7f54db..ca8f247 100644
--- a/gn/standalone/toolchain/BUILD.gn
+++ b/gn/standalone/toolchain/BUILD.gn
@@ -376,10 +376,7 @@
 toolchain("msvc") {
   lib_switch = ""
   lib_dir_switch = "/LIBPATH:"
-
-  sys_lib_flags = "/LIBPATH:\"${win_sdk_lib_dir}\\ucrt\\x64\" "
-  sys_lib_flags += "/LIBPATH:\"${win_sdk_lib_dir}\\um\\x64\" "
-  sys_lib_flags += "/LIBPATH:\"${win_msvc_lib_dir}\" "
+  sys_lib_flags = string_join(" ", win_msvc_sys_lib_flags)
 
   # Note: /showIncludes below is required for ninja, to build a complete
   # dependency graph for headers. Removing it breaks incremental builds.
diff --git a/gn/standalone/toolchain/msvc.gni b/gn/standalone/toolchain/msvc.gni
index 34c0a50..7ec7313 100644
--- a/gn/standalone/toolchain/msvc.gni
+++ b/gn/standalone/toolchain/msvc.gni
@@ -36,22 +36,28 @@
 
   # These variables are required both for clang-cl.exe and MSVC (cl.exe).
   win_sdk_lib_dir = _win_sdk_base + "\\Lib\\" + _win_sdk_ver
-  win_msvc_lib_dir = _win_msvc_base + "\\lib\\x64"
+  win_msvc_lib_dir = _win_msvc_base + "\\lib\\${target_cpu}"
 
   # These variables are only required when building with MSVC.
   # Clang is clever enough to figure out the right include path by querying the
   # registry and detect the Windows SDK path (it still needs the /LIBPATH
   # though, hence the _lib_dir above).
-  win_msvc_bin_dir = _win_msvc_base + "\\bin\\Hostx64\\x64"
+  win_msvc_bin_dir = _win_msvc_base + "\\bin\\Host${host_cpu}\\${target_cpu}"
   win_msvc_inc_dirs = [
     _win_msvc_base + "\\include",
     _win_sdk_base + "\\Include\\" + _win_sdk_ver + "\\ucrt",
     _win_sdk_base + "\\Include\\" + _win_sdk_ver + "\\um",
     _win_sdk_base + "\\Include\\" + _win_sdk_ver + "\\shared",
   ]
+  win_msvc_sys_lib_flags = [
+    "/LIBPATH:\"${win_sdk_lib_dir}\\ucrt\\${target_cpu}\"",
+    "/LIBPATH:\"${win_sdk_lib_dir}\\um\\${target_cpu}\"",
+    "/LIBPATH:\"${win_msvc_lib_dir}\"",
+  ]
 } else {
   win_sdk_lib_dir = ""
   win_msvc_lib_dir = ""
   win_msvc_bin_dir = ""
   win_msvc_inc_dirs = []
+  win_msvc_sys_lib_flags = []
 }