diff --git a/base/files/file_posix.cc b/base/files/file_posix.cc
index 4faf77b..ed9a5e2 100644
--- a/base/files/file_posix.cc
+++ b/base/files/file_posix.cc
@@ -86,14 +86,7 @@
   is_symbolic_link = S_ISLNK(stat_info.st_mode);
   size = stat_info.st_size;
 
-#if defined(OS_LINUX)
-  time_t last_modified_sec = stat_info.st_mtim.tv_sec;
-  int64_t last_modified_nsec = stat_info.st_mtim.tv_nsec;
-  time_t last_accessed_sec = stat_info.st_atim.tv_sec;
-  int64_t last_accessed_nsec = stat_info.st_atim.tv_nsec;
-  time_t creation_time_sec = stat_info.st_ctim.tv_sec;
-  int64_t creation_time_nsec = stat_info.st_ctim.tv_nsec;
-#elif defined(OS_MACOSX)
+#if defined(OS_MACOSX)
   time_t last_modified_sec = stat_info.st_mtimespec.tv_sec;
   int64_t last_modified_nsec = stat_info.st_mtimespec.tv_nsec;
   time_t last_accessed_sec = stat_info.st_atimespec.tv_sec;
@@ -107,6 +100,13 @@
   int64_t last_accessed_nsec = 0;
   time_t creation_time_sec = stat_info.st_ctime;
   int64_t creation_time_nsec = 0;
+#elif defined(OS_POSIX)
+  time_t last_modified_sec = stat_info.st_mtim.tv_sec;
+  int64_t last_modified_nsec = stat_info.st_mtim.tv_nsec;
+  time_t last_accessed_sec = stat_info.st_atim.tv_sec;
+  int64_t last_accessed_nsec = stat_info.st_atim.tv_nsec;
+  time_t creation_time_sec = stat_info.st_ctim.tv_sec;
+  int64_t creation_time_nsec = stat_info.st_ctim.tv_nsec;
 #else
 #error
 #endif
diff --git a/build/gen.py b/build/gen.py
index 77fe5b5..96dafb9 100755
--- a/build/gen.py
+++ b/build/gen.py
@@ -39,6 +39,8 @@
       self._platform = 'aix'
     elif self._platform.startswith('fuchsia'):
       self._platform = 'fuchsia'
+    elif self._platform.startswith('freebsd'):
+      self._platform = 'freebsd'
 
   @staticmethod
   def known_platforms():
@@ -66,7 +68,7 @@
     return self._platform == 'aix'
 
   def is_posix(self):
-    return self._platform in ['linux', 'darwin', 'aix']
+    return self._platform in ['linux', 'freebsd', 'darwin', 'aix']
 
 
 def main(argv):
@@ -169,6 +171,7 @@
       'msvc': 'build_win.ninja.template',
       'darwin': 'build_mac.ninja.template',
       'linux': 'build_linux.ninja.template',
+      'freebsd': 'build_linux.ninja.template',
       'aix': 'build_aix.ninja.template',
   }[platform.platform()])
 
@@ -320,18 +323,18 @@
           '-static-libstdc++',
           '-Wl,--as-needed',
       ])
-      libs.extend([
-          # These are needed by libc++.
-          '-ldl',
-          '-lpthread',
-      ])
+      # This is needed by libc++.
+      libs.append('-ldl')
     elif platform.is_darwin():
       min_mac_version_flag = '-mmacosx-version-min=10.9'
       cflags.append(min_mac_version_flag)
       ldflags.append(min_mac_version_flag)
     elif platform.is_aix():
       cflags_cc.append('-maix64')
-      ldflags.extend(['-maix64', '-pthread'])
+      ldflags.append('-maix64')
+
+    if platform.is_posix():
+      ldflags.append('-pthread')
 
     if options.use_lto:
       cflags.extend(['-flto', '-fwhole-program-vtables'])
diff --git a/tools/gn/args.cc b/tools/gn/args.cc
index aa42ff3..5889c8f 100644
--- a/tools/gn/args.cc
+++ b/tools/gn/args.cc
@@ -294,6 +294,8 @@
   os = "mac";
 #elif defined(OS_LINUX)
   os = "linux";
+#elif defined(OS_FREEBSD)
+  os = "freebsd";
 #elif defined(OS_AIX)
   os = "aix";
 #else
diff --git a/tools/gn/exec_process.cc b/tools/gn/exec_process.cc
index 5c0619c..6c13558 100644
--- a/tools/gn/exec_process.cc
+++ b/tools/gn/exec_process.cc
@@ -21,6 +21,7 @@
 #else
 #include <errno.h>
 #include <fcntl.h>
+#include <sys/signal.h>
 #include <sys/wait.h>
 #include <unistd.h>
 
diff --git a/util/exe_path.cc b/util/exe_path.cc
index f2adab5..2f80d5a 100644
--- a/util/exe_path.cc
+++ b/util/exe_path.cc
@@ -13,6 +13,9 @@
 #include <mach-o/dyld.h>
 #elif defined(OS_WIN)
 #include <windows.h>
+#elif defined(OS_FREEBSD)
+#include <sys/sysctl.h>
+#include <sys/types.h>
 #endif
 
 #if defined(OS_MACOSX)
@@ -46,6 +49,18 @@
   return base::FilePath(system_buffer);
 }
 
+#elif defined(OS_FREEBSD)
+
+base::FilePath GetExePath() {
+  int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
+  char buf[PATH_MAX];
+  size_t buf_size = PATH_MAX;
+  if (sysctl(mib, 4, buf, &buf_size, nullptr, 0) == -1) {
+    return base::FilePath();
+  }
+  return base::FilePath(buf);
+}
+
 #else
 
 base::FilePath GetExePath() {
diff --git a/util/semaphore.cc b/util/semaphore.cc
index 2ae7b7b..d5c82be 100644
--- a/util/semaphore.cc
+++ b/util/semaphore.cc
@@ -36,7 +36,7 @@
   }
 }
 
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
 
 Semaphore::Semaphore(int count) {
   DCHECK_GE(count, 0);
diff --git a/util/semaphore.h b/util/semaphore.h
index 2de2759..92a1df6 100644
--- a/util/semaphore.h
+++ b/util/semaphore.h
@@ -15,7 +15,7 @@
 #include <windows.h>
 #elif defined(OS_MACOSX)
 #include <mach/mach.h>
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
 #include <semaphore.h>
 #else
 #error Port.
@@ -35,7 +35,7 @@
 
 #if defined(OS_MACOSX)
   typedef semaphore_t NativeHandle;
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
   typedef sem_t NativeHandle;
 #elif defined(OS_WIN)
   typedef HANDLE NativeHandle;
diff --git a/util/ticks.cc b/util/ticks.cc
index 2a90c90..f26b5d8 100644
--- a/util/ticks.cc
+++ b/util/ticks.cc
@@ -11,7 +11,7 @@
 #include <windows.h>
 #elif defined(OS_MACOSX)
 #include <mach/mach_time.h>
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
 #include <time.h>
 #else
 #error Port.
@@ -27,7 +27,7 @@
 #elif defined(OS_MACOSX)
 mach_timebase_info_data_t g_timebase;
 uint64_t g_start;
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
 uint64_t g_start;
 #else
 #error Port.
@@ -44,7 +44,7 @@
 #elif defined(OS_MACOSX)
   mach_timebase_info(&g_timebase);
   g_start = (mach_absolute_time() * g_timebase.numer) / g_timebase.denom;
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
   struct timespec ts;
   clock_gettime(CLOCK_MONOTONIC, &ts);
   g_start = static_cast<uint64_t>(ts.tv_sec) * kNano +
@@ -74,7 +74,7 @@
 #elif defined(OS_MACOSX)
   now =
       ((mach_absolute_time() * g_timebase.numer) / g_timebase.denom) - g_start;
-#elif defined(OS_LINUX) || defined(OS_AIX)
+#elif defined(OS_POSIX)
   struct timespec ts;
   clock_gettime(CLOCK_MONOTONIC, &ts);
   now = (static_cast<uint64_t>(ts.tv_sec) * kNano +
