Enable build and usage on Sparc64

Change-Id: Iae8d0cfd110f6a99a01d53d398f86de0871b4ed3
Reviewed-on: https://gn-review.googlesource.com/c/gn/+/24040
Reviewed-by: Sylvain Defresne <sdefresne@chromium.org>
Commit-Queue: David Turner <digit@google.com>
Reviewed-by: David Turner <digit@google.com>
diff --git a/src/gn/args.cc b/src/gn/args.cc
index 72e96cf..a623f86 100644
--- a/src/gn/args.cc
+++ b/src/gn/args.cc
@@ -373,6 +373,7 @@
   static const char kMips64[] = "mips64el";
   static const char kS390X[] = "s390x";
   static const char kPPC64[] = "ppc64";
+  static const char kSPARC64[] = "sparc64";
   static const char kRISCV32[] = "riscv32";
   static const char kRISCV64[] = "riscv64";
   static const char kE2K[] = "e2k";
@@ -401,6 +402,8 @@
     // This allows us to use the same toolchain as ppc64 BE
     // and specific flags are included using the host_byteorder logic.
     arch = kPPC64;
+  else if (os_arch == "sparc64")
+    arch = kSPARC64;
   else if (os_arch == "riscv32")
     arch = kRISCV32;
   else if (os_arch == "riscv64")
diff --git a/src/util/build_config.h b/src/util/build_config.h
index 52c4f21..b4767f5 100644
--- a/src/util/build_config.h
+++ b/src/util/build_config.h
@@ -173,6 +173,11 @@
 #elif defined(__riscv) && (__riscv_xlen == 64)
 #define ARCH_CPU_64_BITS 1
 #define ARCH_CPU_LITTLE_ENDIAN 1
+#elif defined(__sparc__) && defined(__LP64__)
+#define ARCH_CPU_SPARC_FAMILY 1
+#define ARCH_CPU_SPARC64 1
+#define ARCH_CPU_64_BITS 1
+#define ARCH_CPU_BIG_ENDIAN 1
 #elif defined(__loongarch__)
 #if defined(__LP64__)
 #define ARCH_CPU_LOONG_FAMILY 1