diff --git a/build/gen.py b/build/gen.py
index 9353fb1..c4effa8 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -49,10 +49,12 @@
       self._platform = 'openbsd'
     elif self._platform.startswith('haiku'):
       self._platform = 'haiku'
+    elif self._platform.startswith('sunos'):
+      self._platform = 'solaris'
 
   @staticmethod
   def known_platforms():
-    return ['linux', 'darwin', 'mingw', 'msvc', 'aix', 'fuchsia', 'freebsd', 'openbsd', 'haiku']
+    return ['linux', 'darwin', 'mingw', 'msvc', 'aix', 'fuchsia', 'freebsd', 'openbsd', 'haiku', 'solaris']
 
   def platform(self):
     return self._platform
@@ -78,8 +80,11 @@
   def is_haiku(self):
     return self._platform == 'haiku'
 
+  def is_solaris(self):
+    return self._platform == 'solaris'
+
   def is_posix(self):
-    return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd', 'haiku']
+    return self._platform in ['linux', 'freebsd', 'darwin', 'aix', 'openbsd', 'haiku', 'solaris']
 
 
 def main(argv):
@@ -203,6 +208,7 @@
       'aix': 'build_aix.ninja.template',
       'openbsd': 'build_openbsd.ninja.template',
       'haiku': 'build_haiku.ninja.template',
+      'solaris': 'build_linux.ninja.template',
   }[platform.platform()])
 
   with open(template_filename) as f:
@@ -318,7 +324,7 @@
       ldflags.extend(['-fdata-sections', '-ffunction-sections'])
       if platform.is_darwin():
         ldflags.append('-Wl,-dead_strip')
-      elif not platform.is_aix():
+      elif not platform.is_aix() and not platform.is_solaris():
         # Garbage collection is done by default on aix.
         ldflags.append('-Wl,--gc-sections')
 
@@ -328,6 +334,8 @@
           ldflags.append('-Wl,-S')
         elif platform.is_aix():
           ldflags.append('-Wl,-s')
+        elif platform.is_solaris():
+          ldflags.append('-Wl,--strip-all')
         else:
           ldflags.append('-Wl,-strip-all')
 
diff --git a/src/gn/args.cc b/src/gn/args.cc
index 4d5a720..bba3eca 100644
--- a/src/gn/args.cc
+++ b/src/gn/args.cc
@@ -316,6 +316,8 @@
   os = "openbsd";
 #elif defined(OS_HAIKU)
   os = "haiku";
+#elif defined(OS_SOLARIS)
+  os = "solaris";
 #else
 #error Unknown OS type.
 #endif
diff --git a/src/gn/function_write_file_unittest.cc b/src/gn/function_write_file_unittest.cc
index 78eefc5..7113526 100644
--- a/src/gn/function_write_file_unittest.cc
+++ b/src/gn/function_write_file_unittest.cc
@@ -89,7 +89,7 @@
   FILETIME last_modified_filetime = {};
   ASSERT_TRUE(::SetFileTime(foo_file.GetPlatformFile(), nullptr,
                             &last_access_filetime, &last_modified_filetime));
-#elif defined(OS_AIX) || defined(OS_HAIKU)
+#elif defined(OS_AIX) || defined(OS_HAIKU) || defined(OS_SOLARIS)
   struct timeval times[2] = {};
   ASSERT_EQ(utimes(foo_name.value().c_str(), times), 0);
 #else
diff --git a/src/util/exe_path.cc b/src/util/exe_path.cc
index 3b66a7b..0a91bcc 100644
--- a/src/util/exe_path.cc
+++ b/src/util/exe_path.cc
@@ -22,6 +22,8 @@
 #elif defined(OS_HAIKU)
 #include <OS.h>
 #include <image.h>
+#elif defined(OS_SOLARIS)
+#include <stdlib.h>
 #endif
 
 #if defined(OS_MACOSX)
@@ -80,6 +82,16 @@
   return base::FilePath(std::string(i_info.name));
 }
 
+#elif defined(OS_SOLARIS)
+
+base::FilePath GetExePath() {
+  const char *raw = getexecname();
+  if (raw == NULL) {
+    return base::FilePath();
+  }
+  return base::FilePath(raw);
+}
+
 #else
 
 base::FilePath GetExePath() {
diff --git a/src/util/sys_info.cc b/src/util/sys_info.cc
index 5fefc9b..082d2d6 100644
--- a/src/util/sys_info.cc
+++ b/src/util/sys_info.cc
@@ -26,6 +26,11 @@
   std::string arch(info.machine);
   if (arch == "i386" || arch == "i486" || arch == "i586" || arch == "i686") {
     arch = "x86";
+  } else if (arch == "i86pc") {
+    // Solaris and illumos systems report 'i86pc' (an Intel x86 PC) as their
+    // machine for both 32-bit and 64-bit x86 systems.  Considering the rarity
+    // of 32-bit systems at this point, it is safe to assume 64-bit.
+    arch = "x86_64";
   } else if (arch == "amd64") {
     arch = "x86_64";
   } else if (std::string(info.sysname) == "AIX") {
