Import Cobalt 21.master.0.260628
diff --git a/src/starboard/evergreen/__init__.py b/src/starboard/evergreen/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/__init__.py
diff --git a/src/starboard/evergreen/arm/__init__.py b/src/starboard/evergreen/arm/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm/__init__.py
diff --git a/src/starboard/evergreen/arm/hardfp/__init__.py b/src/starboard/evergreen/arm/hardfp/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/__init__.py
diff --git a/src/starboard/evergreen/arm/hardfp/atomic_public.h b/src/starboard/evergreen/arm/hardfp/atomic_public.h
new file mode 100644
index 0000000..d9786c1
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/atomic_public.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef STARBOARD_EVERGREEN_ARM_HARDFP_ATOMIC_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_HARDFP_ATOMIC_PUBLIC_H_
+
+#include "starboard/atomic.h"
+#include "starboard/shared/gcc/atomic_gcc_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM_HARDFP_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm/hardfp/configuration_public.h b/src/starboard/evergreen/arm/hardfp/configuration_public.h
new file mode 100644
index 0000000..b813c19
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/configuration_public.h
@@ -0,0 +1,200 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The Starboard configuration for X86_64. Other devices will have
+// specific Starboard implementations.
+
+// Other source files should never include this header directly, but should
+// include the generic "starboard/configuration.h" instead.
+
+#ifndef STARBOARD_EVERGREEN_ARM_HARDFP_CONFIGURATION_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_HARDFP_CONFIGURATION_PUBLIC_H_
+
+// --- System Header Configuration -------------------------------------------
+
+// Any system headers listed here that are not provided by the platform will be
+// emulated in starboard/types.h.
+
+// Whether the current platform provides the standard header stdarg.h.
+#define SB_HAS_STDARG_H 1
+
+// Whether the current platform provides the standard header stdbool.h.
+#define SB_HAS_STDBOOL_H 1
+
+// Whether the current platform provides the standard header stddef.h.
+#define SB_HAS_STDDEF_H 1
+
+// Whether the current platform provides the standard header stdint.h.
+#define SB_HAS_STDINT_H 1
+
+// Whether the current platform provides the standard header inttypes.h.
+#define SB_HAS_INTTYPES_H 1
+
+// Whether the current platform provides the standard header sys/types.h.
+#define SB_HAS_SYS_TYPES_H 1
+
+// Whether the current platform provides the standard header wchar.h.
+#define SB_HAS_WCHAR_H 1
+
+// Whether the current platform provides the standard header limits.h.
+#define SB_HAS_LIMITS_H 1
+
+// Whether the current platform provides the standard header float.h.
+#define SB_HAS_FLOAT_H 1
+
+// Whether the current platform provides ssize_t.
+#define SB_HAS_SSIZE_T 1
+
+// Type detection for wchar_t.
+#if defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
+#define SB_IS_WCHAR_T_UTF32 1
+#elif defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
+#define SB_IS_WCHAR_T_UTF16 1
+#endif
+
+// Chrome only defines these two if ARMEL or MIPSEL are defined.
+#if defined(__ARMEL__)
+// Chrome has an exclusion for iOS here, we should too when we support iOS.
+#define SB_IS_WCHAR_T_UNSIGNED 1
+#elif defined(__MIPSEL__)
+#define SB_IS_WCHAR_T_SIGNED 1
+#endif
+
+// --- Compiler Configuration ------------------------------------------------
+
+// The platform's annotation for forcing a C function to be inlined.
+#define SB_C_FORCE_INLINE __inline__ __attribute__((always_inline))
+
+// The platform's annotation for marking a C function as suggested to be
+// inlined.
+#define SB_C_INLINE inline
+
+// The platform's annotation for marking a C function as forcibly not
+// inlined.
+#define SB_C_NOINLINE __attribute__((noinline))
+
+// The platform's annotation for marking a symbol as exported outside of the
+// current shared library.
+#define SB_EXPORT_PLATFORM __attribute__((visibility("default")))
+
+// The platform's annotation for marking a symbol as imported from outside of
+// the current linking unit.
+#define SB_IMPORT_PLATFORM
+
+// --- Extensions Configuration ----------------------------------------------
+
+// Do not use <unordered_map> and <unordered_set> for the hash table types.
+#define SB_HAS_STD_UNORDERED_HASH 0
+
+// GCC/Clang doesn't define a long long hash function, except for Android and
+// Game consoles.
+#define SB_HAS_LONG_LONG_HASH 0
+
+// GCC/Clang doesn't define a string hash function, except for Game Consoles.
+#define SB_HAS_STRING_HASH 0
+
+// Desktop Linux needs a using statement for the hash functions.
+#define SB_HAS_HASH_USING 0
+
+// Set this to 1 if hash functions for custom types can be defined as a
+// hash_value() function. Otherwise, they need to be placed inside a
+// partially-specified hash struct template with an operator().
+#define SB_HAS_HASH_VALUE 0
+
+// Set this to 1 if use of hash_map or hash_set causes a deprecation warning
+// (which then breaks the build).
+#define SB_HAS_HASH_WARNING 1
+
+// The location to include hash_map on this platform.
+#define SB_HASH_MAP_INCLUDE <ext/hash_map>
+
+// C++'s hash_map and hash_set are often found in different namespaces depending
+// on the compiler.
+#define SB_HASH_NAMESPACE __gnu_cxx
+
+// The location to include hash_set on this platform.
+#define SB_HASH_SET_INCLUDE <ext/hash_set>
+
+// Define this to how this platform copies varargs blocks.
+#define SB_VA_COPY(dest, source) va_copy(dest, source)
+
+// --- Graphics Configuration ------------------------------------------------
+
+// Specifies whether this platform supports a performant accelerated blitter
+// API. The basic requirement is a scaled, clipped, alpha-blended blit.
+#define SB_HAS_BLITTER 0
+
+// Indicates whether or not the given platform supports bilinear filtering.
+// This can be checked to enable/disable renderer tests that verify that this is
+// working properly.
+#define SB_HAS_BILINEAR_FILTERING_SUPPORT 1
+
+// Indicates whether or not the given platform supports rendering of NV12
+// textures. These textures typically originate from video decoders.
+#define SB_HAS_NV12_TEXTURE_SUPPORT 1
+
+// --- I/O Configuration -----------------------------------------------------
+
+// Whether the current platform implements the on screen keyboard interface.
+#define SB_HAS_ON_SCREEN_KEYBOARD 0
+
+// Whether the current platform has speech recognizer.
+#define SB_HAS_SPEECH_RECOGNIZER 0
+
+// Whether the current platform has speech synthesis.
+#define SB_HAS_SPEECH_SYNTHESIS 0
+
+// --- Decoder-only Params ---
+
+// --- Memory Configuration --------------------------------------------------
+
+// Whether this platform has and should use an MMAP function to map physical
+// memory to the virtual address space.
+#if SB_API_VERSION < SB_MMAP_REQUIRED_VERSION
+#define SB_HAS_MMAP 1
+#endif
+
+// Whether this platform can map executable memory. Implies SB_HAS_MMAP. This is
+// required for platforms that want to JIT.
+#define SB_CAN_MAP_EXECUTABLE_MEMORY 1
+
+// --- Network Configuration -------------------------------------------------
+
+// Specifies whether this platform supports IPV6.
+#define SB_HAS_IPV6 1
+
+// Specifies whether this platform supports pipe.
+#define SB_HAS_PIPE 1
+
+// --- Thread Configuration --------------------------------------------------
+
+// --- Timing API ------------------------------------------------------------
+
+// Whether this platform has an API to retrieve how long the current thread
+// has spent in the executing state.
+#define SB_HAS_TIME_THREAD_NOW 1
+
+// --- Tuneable Parameters ---------------------------------------------------
+
+// --- User Configuration ----------------------------------------------------
+
+// --- Platform Specific Audits ----------------------------------------------
+
+#if !defined(__GNUC__)
+#error "Evergreen-arm builds need a GCC-like compiler (for the moment)."
+#endif
+
+#endif  // STARBOARD_EVERGREEN_ARM_HARDFP_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm/hardfp/gyp_configuration.gypi b/src/starboard/evergreen/arm/hardfp/gyp_configuration.gypi
new file mode 100644
index 0000000..4ba76c1
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/gyp_configuration.gypi
@@ -0,0 +1,42 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'sb_target_platform': 'evergreen-arm-hardfp',
+  },
+  'target_defaults': {
+    'default_configuration': 'evergreen-arm-hardfp_debug',
+    'configurations': {
+      'evergreen-arm-hardfp_debug': {
+        'inherit_from': ['debug_base'],
+      },
+      'evergreen-arm-hardfp_devel': {
+        'inherit_from': ['devel_base'],
+      },
+      'evergreen-arm-hardfp_qa': {
+        'inherit_from': ['qa_base'],
+      },
+      'evergreen-arm-hardfp_gold': {
+        'inherit_from': ['gold_base'],
+      },
+    }, # end of configurations
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/arm/shared/gyp_configuration.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/arm/hardfp/gyp_configuration.py b/src/starboard/evergreen/arm/hardfp/gyp_configuration.py
new file mode 100644
index 0000000..467ce05
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/gyp_configuration.py
@@ -0,0 +1,25 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+"""Starboard evergreen-arm-hardfp platform configuration for gyp_cobalt."""
+
+from starboard.evergreen.arm.shared import gyp_configuration as parent_configuration
+
+
+def CreatePlatformConfig():
+  return parent_configuration.EvergreenArmConfiguration(
+      'evergreen-arm-hardfp',
+      sabi_json_path='starboard/sabi/arm/hardfp/sabi.json')
diff --git a/src/starboard/evergreen/arm/hardfp/starboard_platform.gyp b/src/starboard/evergreen/arm/hardfp/starboard_platform.gyp
new file mode 100644
index 0000000..8787f61
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/starboard_platform.gyp
@@ -0,0 +1,25 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'includes': [
+    # Note that we are 'includes'ing a 'gyp' file, not a 'gypi' file.  The idea
+    # is that we just want this file to *be* the parent gyp file.
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gyp',
+  ],
+}
+
diff --git a/src/starboard/evergreen/arm/hardfp/thread_types_public.h b/src/starboard/evergreen/arm/hardfp/thread_types_public.h
new file mode 100644
index 0000000..fda18eb
--- /dev/null
+++ b/src/starboard/evergreen/arm/hardfp/thread_types_public.h
@@ -0,0 +1,23 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file was initially generated by starboard/tools/create_derived_build.py,
+// though it may have been modified since its creation.
+
+#ifndef STARBOARD_EVERGREEN_ARM_HARDFP_THREAD_TYPES_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_HARDFP_THREAD_TYPES_PUBLIC_H_
+
+#include "starboard/shared/pthread/types_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM_HARDFP_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm/shared/__init__.py b/src/starboard/evergreen/arm/shared/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/__init__.py
diff --git a/src/starboard/evergreen/arm/shared/cobalt/__init__.py b/src/starboard/evergreen/arm/shared/cobalt/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/cobalt/__init__.py
diff --git a/src/starboard/evergreen/arm/shared/cobalt/configuration.gypi b/src/starboard/evergreen/arm/shared/cobalt/configuration.gypi
new file mode 100644
index 0000000..89aca9a
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/cobalt/configuration.gypi
@@ -0,0 +1,21 @@
+# Copyright 2020 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Cobalt Evergreen ARM specific configuration.
+
+{
+  'variables': {
+    'in_app_dial%': 0,
+  }, # end of variables
+}
diff --git a/src/starboard/evergreen/arm/shared/cobalt/configuration.py b/src/starboard/evergreen/arm/shared/cobalt/configuration.py
new file mode 100644
index 0000000..0d71086
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/cobalt/configuration.py
@@ -0,0 +1,83 @@
+# Copyright 2020 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard Cobalt Evergreen ARM configuration."""
+
+import os
+
+from cobalt.build import cobalt_configuration
+from starboard.tools.testing import test_filter
+
+
+class CobaltARMConfiguration(cobalt_configuration.CobaltConfiguration):
+  """Starboard Cobalt Evergreen ARM configuration."""
+
+  def __init__(self, platform_configuration, application_name,
+               application_directory):
+    super(CobaltARMConfiguration,
+          self).__init__(platform_configuration, application_name,
+                         application_directory)
+
+  def GetPostIncludes(self):
+    # If there isn't a configuration.gypi found in the usual place, we'll
+    # supplement with our shared implementation.
+    includes = super(CobaltARMConfiguration, self).GetPostIncludes()
+    for include in includes:
+      if os.path.basename(include) == 'configuration.gypi':
+        return includes
+
+    shared_gypi_path = os.path.join(
+        os.path.dirname(__file__), 'configuration.gypi')
+    if os.path.isfile(shared_gypi_path):
+      includes.append(shared_gypi_path)
+    return includes
+
+  def WebdriverBenchmarksEnabled(self):
+    return True
+
+  def GetTestFilters(self):
+    filters = super(CobaltARMConfiguration, self).GetTestFilters()
+    for target, tests in self.__FILTERED_TESTS.iteritems():
+      filters.extend(test_filter.TestFilter(target, test) for test in tests)
+    return filters
+
+  def GetWebPlatformTestFilters(self):
+    filters = super(CobaltARMConfiguration, self).GetWebPlatformTestFilters()
+    filters += [
+        ('csp/WebPlatformTest.Run/'
+         'content_security_policy_media_src_media_src_allowed_html'),
+        ('websockets/WebPlatformTest.Run/websockets_*'),
+    ]
+    return filters
+
+  def GetTestEnvVariables(self):
+    return {
+        'base_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        },
+        'crypto_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        },
+        'net_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        }
+    }
+
+  __FILTERED_TESTS = {
+      'base_unittests': [test_filter.FILTER_ALL],
+      'bindings_test': ['DateBindingsTest.PosixEpoch'],
+      'net_unittests': [test_filter.FILTER_ALL],
+      'renderer_test': [
+          'PixelTest.CircularSubPixelBorder', 'PixelTest.FilterBlurred100PxText'
+      ],
+  }
diff --git a/src/starboard/evergreen/arm/shared/gyp_configuration.gypi b/src/starboard/evergreen/arm/shared/gyp_configuration.gypi
new file mode 100644
index 0000000..404d3a3
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/gyp_configuration.gypi
@@ -0,0 +1,50 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'yasm_exists': 1,
+
+    'compiler_flags': [
+      '-isystem<(cobalt_repo_root)/third_party/musl/arch/arm',
+
+      # Force char to be signed.
+      '-fsigned-char',
+    ],
+
+    'linker_flags': [
+      '-fuse-ld=lld',
+    ],
+  },
+  'target_defaults': {
+    'defines' : [
+      # Ensure that the Starboardized __external_threading file is included.
+      '_LIBCPP_HAS_THREAD_API_EXTERNAL',
+
+      # Ensure that only the forward declarations and type definitions are included
+      # in __external_threading.
+      '_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL',
+
+      # Enable GNU extensions to get prototypes like ffsl.
+      '_GNU_SOURCE=1',
+    ],
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/shared/compiler_flags.gypi',
+    '<(DEPTH)/starboard/evergreen/shared/gyp_configuration.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/arm/shared/gyp_configuration.py b/src/starboard/evergreen/arm/shared/gyp_configuration.py
new file mode 100644
index 0000000..d442333
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/gyp_configuration.py
@@ -0,0 +1,103 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard Evergreen ARM shared platform configuration for gyp_cobalt."""
+
+import os.path
+
+from starboard.build import clang as clang_build
+from starboard.evergreen.shared import gyp_configuration as shared_configuration
+from starboard.tools import build
+from starboard.tools.testing import test_filter
+from starboard.tools.toolchain import ar
+from starboard.tools.toolchain import bash
+from starboard.tools.toolchain import clang
+from starboard.tools.toolchain import clangxx
+from starboard.tools.toolchain import cp
+from starboard.tools.toolchain import evergreen_linker
+from starboard.tools.toolchain import touch
+
+
+class EvergreenArmConfiguration(shared_configuration.EvergreenConfiguration):
+  """Starboard Evergreen ARM platform configuration."""
+
+  def __init__(self,
+               platform_name='evergreen-arm',
+               asan_enabled_by_default=False,
+               goma_supports_compiler=True,
+               sabi_json_path=None):
+    # pylint: disable=useless-super-delegation
+    super(EvergreenArmConfiguration,
+          self).__init__(platform_name, asan_enabled_by_default,
+                         goma_supports_compiler, sabi_json_path)
+    self.AppendApplicationConfigurationPath(os.path.dirname(__file__))
+    self._host_toolchain = None
+
+  def GetTargetToolchain(self):
+    return self.GetHostToolchain()
+
+  def GetHostToolchain(self):
+    if not self._host_toolchain:
+      if not hasattr(self, 'host_compiler_environment'):
+        self.host_compiler_environment = build.GetHostCompilerEnvironment(
+            clang_build.GetClangSpecification(), False)
+      cc_path = self.host_compiler_environment['CC_host']
+      cxx_path = self.host_compiler_environment['CXX_host']
+
+      # Takes the provided value of CXX_HOST with a prepended 'gomacc' and an
+      # appended 'bin/clang++' and strips them off, leaving us with an absolute
+      # path to the root directory of our toolchain.
+      begin_path_index = cxx_path.find('/')
+      end_path_index = cxx_path.rfind('/', 0, cxx_path.rfind('/')) + 1
+
+      cxx_path_root = cxx_path[begin_path_index:end_path_index]
+
+      self._host_toolchain = [
+          clang.CCompiler(path=cc_path),
+          clang.CxxCompiler(path=cxx_path),
+          clang.AssemblerWithCPreprocessor(path=cc_path),
+          ar.StaticThinLinker(),
+          ar.StaticLinker(),
+          clangxx.ExecutableLinker(path=cxx_path),
+          evergreen_linker.SharedLibraryLinker(
+              path=cxx_path_root, extra_flags=['-m armelf']),
+          cp.Copy(),
+          touch.Stamp(),
+          bash.Shell(),
+      ]
+    return self._host_toolchain
+
+  def GetTestFilters(self):
+    filters = super(EvergreenArmConfiguration, self).GetTestFilters()
+    for target, tests in self.__FILTERED_TESTS.iteritems():
+      filters.extend(test_filter.TestFilter(target, test) for test in tests)
+    return filters
+
+  def GetVariables(self, configuration):
+    variables = super(EvergreenArmConfiguration, self).GetVariables(configuration)
+    variables.update({
+        'include_path_platform_deploy_gypi':
+            'starboard/evergreen/arm/shared/platform_deploy.gypi',
+    })
+    return variables
+
+  __FILTERED_TESTS = {  # pylint: disable=invalid-name
+      'nplb': ['SbSystemGetStackTest.SunnyDayStackDirection',
+               'SbSystemGetStackTest.SunnyDay',
+               'SbSystemGetStackTest.SunnyDayShortStack',
+               'SbSystemSymbolizeTest.SunnyDay'],
+  }
+
+
+def CreatePlatformConfig():
+  return EvergreenArmConfiguration()
diff --git a/src/starboard/evergreen/arm/shared/platform_deploy.gypi b/src/starboard/evergreen/arm/shared/platform_deploy.gypi
new file mode 100644
index 0000000..fef9168
--- /dev/null
+++ b/src/starboard/evergreen/arm/shared/platform_deploy.gypi
@@ -0,0 +1,37 @@
+# Copyright 2020 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'variables': {
+    'deploy_executable_file': '<(target_deploy_dir)/lib/lib<(executable_name).so',
+    'executable_file': '<(PRODUCT_DIR)/lib/lib<(executable_name).so',
+  },
+  'includes': [ '<(DEPTH)/starboard/build/collect_deploy_content.gypi' ],
+  'actions': [
+    {
+      'action_name': 'deploy_executable',
+      'message': 'Strip executable: <(deploy_executable_file)',
+      'inputs': [
+        '<(executable_file)',
+        '<(content_deploy_stamp_file)',
+      ],
+      'outputs': [ '<(deploy_executable_file)' ],
+      'action': [
+        'arm-linux-gnueabi-strip',
+        '-o', '<(deploy_executable_file)',
+        '<(executable_file)',
+      ],
+    },
+  ],
+}
diff --git a/src/starboard/evergreen/arm/softfp/__init__.py b/src/starboard/evergreen/arm/softfp/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/__init__.py
diff --git a/src/starboard/evergreen/arm/softfp/atomic_public.h b/src/starboard/evergreen/arm/softfp/atomic_public.h
new file mode 100644
index 0000000..48e2e37
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/atomic_public.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef STARBOARD_EVERGREEN_ARM_SOFTFP_ATOMIC_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_SOFTFP_ATOMIC_PUBLIC_H_
+
+#include "starboard/atomic.h"
+#include "starboard/shared/gcc/atomic_gcc_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM_SOFTFP_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm/softfp/configuration_public.h b/src/starboard/evergreen/arm/softfp/configuration_public.h
new file mode 100644
index 0000000..1743bba
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/configuration_public.h
@@ -0,0 +1,203 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The Starboard configuration for X86_64. Other devices will have
+// specific Starboard implementations.
+
+// Other source files should never include this header directly, but should
+// include the generic "starboard/configuration.h" instead.
+
+#ifndef STARBOARD_EVERGREEN_ARM_SOFTFP_CONFIGURATION_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_SOFTFP_CONFIGURATION_PUBLIC_H_
+
+// --- System Header Configuration -------------------------------------------
+
+// Any system headers listed here that are not provided by the platform will be
+// emulated in starboard/types.h.
+
+// Whether the current platform provides the standard header stdarg.h.
+#define SB_HAS_STDARG_H 1
+
+// Whether the current platform provides the standard header stdbool.h.
+#define SB_HAS_STDBOOL_H 1
+
+// Whether the current platform provides the standard header stddef.h.
+#define SB_HAS_STDDEF_H 1
+
+// Whether the current platform provides the standard header stdint.h.
+#define SB_HAS_STDINT_H 1
+
+// Whether the current platform provides the standard header inttypes.h.
+#define SB_HAS_INTTYPES_H 1
+
+// Whether the current platform provides the standard header sys/types.h.
+#define SB_HAS_SYS_TYPES_H 1
+
+// Whether the current platform provides the standard header wchar.h.
+#define SB_HAS_WCHAR_H 1
+
+// Whether the current platform provides the standard header limits.h.
+#define SB_HAS_LIMITS_H 1
+
+// Whether the current platform provides the standard header float.h.
+#define SB_HAS_FLOAT_H 1
+
+// Whether the current platform provides ssize_t.
+#define SB_HAS_SSIZE_T 1
+
+// Type detection for wchar_t.
+#if defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
+#define SB_IS_WCHAR_T_UTF32 1
+#elif defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
+#define SB_IS_WCHAR_T_UTF16 1
+#endif
+
+// Chrome only defines these two if ARMEL or MIPSEL are defined.
+#if defined(__ARMEL__)
+// Chrome has an exclusion for iOS here, we should too when we support iOS.
+#define SB_IS_WCHAR_T_UNSIGNED 1
+#elif defined(__MIPSEL__)
+#define SB_IS_WCHAR_T_SIGNED 1
+#endif
+
+// --- Compiler Configuration ------------------------------------------------
+
+// The platform's annotation for forcing a C function to be inlined.
+#define SB_C_FORCE_INLINE __inline__ __attribute__((always_inline))
+
+// The platform's annotation for marking a C function as suggested to be
+// inlined.
+#define SB_C_INLINE inline
+
+// The platform's annotation for marking a C function as forcibly not
+// inlined.
+#define SB_C_NOINLINE __attribute__((noinline))
+
+// The platform's annotation for marking a symbol as exported outside of the
+// current shared library.
+#define SB_EXPORT_PLATFORM __attribute__((visibility("default")))
+
+// The platform's annotation for marking a symbol as imported from outside of
+// the current linking unit.
+#define SB_IMPORT_PLATFORM
+
+// --- Extensions Configuration ----------------------------------------------
+
+// Do not use <unordered_map> and <unordered_set> for the hash table types.
+#define SB_HAS_STD_UNORDERED_HASH 0
+
+// GCC/Clang doesn't define a long long hash function, except for Android and
+// Game consoles.
+#define SB_HAS_LONG_LONG_HASH 0
+
+// GCC/Clang doesn't define a string hash function, except for Game Consoles.
+#define SB_HAS_STRING_HASH 0
+
+// Desktop Linux needs a using statement for the hash functions.
+#define SB_HAS_HASH_USING 0
+
+// Set this to 1 if hash functions for custom types can be defined as a
+// hash_value() function. Otherwise, they need to be placed inside a
+// partially-specified hash struct template with an operator().
+#define SB_HAS_HASH_VALUE 0
+
+// Set this to 1 if use of hash_map or hash_set causes a deprecation warning
+// (which then breaks the build).
+#define SB_HAS_HASH_WARNING 1
+
+// The location to include hash_map on this platform.
+#define SB_HASH_MAP_INCLUDE <ext/hash_map>
+
+// C++'s hash_map and hash_set are often found in different namespaces depending
+// on the compiler.
+#define SB_HASH_NAMESPACE __gnu_cxx
+
+// The location to include hash_set on this platform.
+#define SB_HASH_SET_INCLUDE <ext/hash_set>
+
+// Define this to how this platform copies varargs blocks.
+#define SB_VA_COPY(dest, source) va_copy(dest, source)
+
+// --- Graphics Configuration ------------------------------------------------
+
+// Specifies whether this platform supports a performant accelerated blitter
+// API. The basic requirement is a scaled, clipped, alpha-blended blit.
+#define SB_HAS_BLITTER 0
+
+// Indicates whether or not the given platform supports bilinear filtering.
+// This can be checked to enable/disable renderer tests that verify that this is
+// working properly.
+#define SB_HAS_BILINEAR_FILTERING_SUPPORT 1
+
+// Indicates whether or not the given platform supports rendering of NV12
+// textures. These textures typically originate from video decoders.
+#define SB_HAS_NV12_TEXTURE_SUPPORT 1
+
+// --- I/O Configuration -----------------------------------------------------
+
+// Whether the current platform has microphone supported.
+#define SB_HAS_MICROPHONE 0
+
+// Whether the current platform implements the on screen keyboard interface.
+#define SB_HAS_ON_SCREEN_KEYBOARD 0
+
+// Whether the current platform has speech recognizer.
+#define SB_HAS_SPEECH_RECOGNIZER 0
+
+// Whether the current platform has speech synthesis.
+#define SB_HAS_SPEECH_SYNTHESIS 0
+
+// --- Decoder-only Params ---
+
+// --- Memory Configuration --------------------------------------------------
+
+// Whether this platform has and should use an MMAP function to map physical
+// memory to the virtual address space.
+#if SB_API_VERSION < SB_MMAP_REQUIRED_VERSION
+#define SB_HAS_MMAP 1
+#endif
+
+// Whether this platform can map executable memory. Implies SB_HAS_MMAP. This is
+// required for platforms that want to JIT.
+#define SB_CAN_MAP_EXECUTABLE_MEMORY 1
+
+// --- Network Configuration -------------------------------------------------
+
+// Specifies whether this platform supports IPV6.
+#define SB_HAS_IPV6 1
+
+// Specifies whether this platform supports pipe.
+#define SB_HAS_PIPE 1
+
+// --- Thread Configuration --------------------------------------------------
+
+// --- Timing API ------------------------------------------------------------
+
+// Whether this platform has an API to retrieve how long the current thread
+// has spent in the executing state.
+#define SB_HAS_TIME_THREAD_NOW 1
+
+// --- Tuneable Parameters ---------------------------------------------------
+
+// --- User Configuration ----------------------------------------------------
+
+// --- Platform Specific Audits ----------------------------------------------
+
+#if !defined(__GNUC__)
+#error "Evergreen-arm builds need a GCC-like compiler (for the moment)."
+#endif
+
+#endif  // STARBOARD_EVERGREEN_ARM_SOFTFP_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm/softfp/gyp_configuration.gypi b/src/starboard/evergreen/arm/softfp/gyp_configuration.gypi
new file mode 100644
index 0000000..cd963f7
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/gyp_configuration.gypi
@@ -0,0 +1,42 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'sb_target_platform': 'evergreen-arm-softfp',
+  },
+  'target_defaults': {
+    'default_configuration': 'evergreen-arm-softfp_debug',
+    'configurations': {
+      'evergreen-arm-softfp_debug': {
+        'inherit_from': ['debug_base'],
+      },
+      'evergreen-arm-softfp_devel': {
+        'inherit_from': ['devel_base'],
+      },
+      'evergreen-arm-softfp_qa': {
+        'inherit_from': ['qa_base'],
+      },
+      'evergreen-arm-softfp_gold': {
+        'inherit_from': ['gold_base'],
+      },
+    }, # end of configurations
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/arm/shared/gyp_configuration.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/arm/softfp/gyp_configuration.py b/src/starboard/evergreen/arm/softfp/gyp_configuration.py
new file mode 100644
index 0000000..8c649b9
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/gyp_configuration.py
@@ -0,0 +1,25 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+"""Starboard evergreen-arm-softfp platform configuration for gyp_cobalt."""
+
+from starboard.evergreen.arm.shared import gyp_configuration as parent_configuration
+
+
+def CreatePlatformConfig():
+  return parent_configuration.EvergreenArmConfiguration(
+      'evergreen-arm-softfp',
+      sabi_json_path='starboard/sabi/arm/softfp/sabi.json')
diff --git a/src/starboard/evergreen/arm/softfp/starboard_platform.gyp b/src/starboard/evergreen/arm/softfp/starboard_platform.gyp
new file mode 100644
index 0000000..8787f61
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/starboard_platform.gyp
@@ -0,0 +1,25 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'includes': [
+    # Note that we are 'includes'ing a 'gyp' file, not a 'gypi' file.  The idea
+    # is that we just want this file to *be* the parent gyp file.
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gyp',
+  ],
+}
+
diff --git a/src/starboard/evergreen/arm/softfp/thread_types_public.h b/src/starboard/evergreen/arm/softfp/thread_types_public.h
new file mode 100644
index 0000000..d739119
--- /dev/null
+++ b/src/starboard/evergreen/arm/softfp/thread_types_public.h
@@ -0,0 +1,23 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file was initially generated by starboard/tools/create_derived_build.py,
+// though it may have been modified since its creation.
+
+#ifndef STARBOARD_EVERGREEN_ARM_SOFTFP_THREAD_TYPES_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM_SOFTFP_THREAD_TYPES_PUBLIC_H_
+
+#include "starboard/shared/pthread/types_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM_SOFTFP_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm64/__init__.py b/src/starboard/evergreen/arm64/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/arm64/__init__.py
diff --git a/src/starboard/evergreen/arm64/atomic_public.h b/src/starboard/evergreen/arm64/atomic_public.h
new file mode 100644
index 0000000..1b5fd76
--- /dev/null
+++ b/src/starboard/evergreen/arm64/atomic_public.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef STARBOARD_EVERGREEN_ARM64_ATOMIC_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM64_ATOMIC_PUBLIC_H_
+
+#include "starboard/atomic.h"
+#include "starboard/shared/gcc/atomic_gcc_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM64_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm64/configuration_public.h b/src/starboard/evergreen/arm64/configuration_public.h
new file mode 100644
index 0000000..9d5aac5
--- /dev/null
+++ b/src/starboard/evergreen/arm64/configuration_public.h
@@ -0,0 +1,219 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The Starboard configuration for X86_64. Other devices will have
+// specific Starboard implementations.
+
+// Other source files should never include this header directly, but should
+// include the generic "starboard/configuration.h" instead.
+
+#ifndef STARBOARD_EVERGREEN_ARM64_CONFIGURATION_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM64_CONFIGURATION_PUBLIC_H_
+
+// Configuration parameters that allow the application to make some general
+// compile-time decisions with respect to the the number of cores likely to be
+// available on this platform. For a definitive measure, the application should
+// still call SbSystemGetNumberOfProcessors at runtime.
+
+// Whether the current platform's thread scheduler will automatically balance
+// threads between cores, as opposed to systems where threads will only ever run
+// on the specifically pinned core.
+#define SB_HAS_CROSS_CORE_SCHEDULER 1
+
+// Indicates that there is no support for alignment at greater than 16 bytes for
+// items on the stack.
+#define SB_HAS_QUIRK_DOES_NOT_STACK_ALIGN_OVER_16_BYTES 1
+
+// This quirk is used to fix an issue caused by the rewriting of memset to
+// SbMemorySet in third_party/protobuf/src/google/protobuf/stubs/port.h.
+#define SB_HAS_QUIRK_MEMSET_IN_SYSTEM_HEADERS 1
+
+// --- System Header Configuration -------------------------------------------
+
+// Any system headers listed here that are not provided by the platform will be
+// emulated in starboard/types.h.
+
+// Whether the current platform provides the standard header stdarg.h.
+#define SB_HAS_STDARG_H 1
+
+// Whether the current platform provides the standard header stdbool.h.
+#define SB_HAS_STDBOOL_H 1
+
+// Whether the current platform provides the standard header stddef.h.
+#define SB_HAS_STDDEF_H 1
+
+// Whether the current platform provides the standard header stdint.h.
+#define SB_HAS_STDINT_H 1
+
+// Whether the current platform provides the standard header inttypes.h.
+#define SB_HAS_INTTYPES_H 1
+
+// Whether the current platform provides the standard header limits.h.
+#define SB_HAS_LIMITS_H 1
+
+// Whether the current platform provides the standard header float.h.
+#define SB_HAS_FLOAT_H 1
+
+// Whether the current platform provides ssize_t.
+#define SB_HAS_SSIZE_T 0
+
+// Type detection for wchar_t.
+#if defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
+#define SB_IS_WCHAR_T_UTF32 1
+#elif defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
+#define SB_IS_WCHAR_T_UTF16 1
+#endif
+
+// Chrome only defines these two if ARMEL or MIPSEL are defined.
+#if defined(__ARMEL__)
+// Chrome has an exclusion for iOS here, we should too when we support iOS.
+#define SB_IS_WCHAR_T_UNSIGNED 1
+#elif defined(__MIPSEL__)
+#define SB_IS_WCHAR_T_SIGNED 1
+#endif
+
+// This quirk is used to fix an issue caused by the rewriting of memset to
+// SbMemorySet in third_party/protobuf/src/google/protobuf/stubs/port.h.
+#define SB_HAS_QUIRK_MEMSET_IN_SYSTEM_HEADERS 1
+
+// --- Compiler Configuration ------------------------------------------------
+
+// The platform's annotation for forcing a C function to be inlined.
+#define SB_C_FORCE_INLINE __inline__ __attribute__((always_inline))
+
+// The platform's annotation for marking a C function as suggested to be
+// inlined.
+#define SB_C_INLINE inline
+
+// The platform's annotation for marking a C function as forcibly not
+// inlined.
+#define SB_C_NOINLINE __attribute__((noinline))
+
+// The platform's annotation for marking a symbol as exported outside of the
+// current shared library.
+#define SB_EXPORT_PLATFORM __attribute__((visibility("default")))
+
+// The platform's annotation for marking a symbol as imported from outside of
+// the current linking unit.
+#define SB_IMPORT_PLATFORM
+
+// --- Extensions Configuration ----------------------------------------------
+
+// Do not use <unordered_map> and <unordered_set> for the hash table types.
+#define SB_HAS_STD_UNORDERED_HASH 0
+
+// GCC/Clang doesn't define a long long hash function, except for Android and
+// Game consoles.
+#define SB_HAS_LONG_LONG_HASH 0
+
+// GCC/Clang doesn't define a string hash function, except for Game Consoles.
+#define SB_HAS_STRING_HASH 0
+
+// Desktop Linux needs a using statement for the hash functions.
+#define SB_HAS_HASH_USING 0
+
+// Set this to 1 if hash functions for custom types can be defined as a
+// hash_value() function. Otherwise, they need to be placed inside a
+// partially-specified hash struct template with an operator().
+#define SB_HAS_HASH_VALUE 0
+
+// Set this to 1 if use of hash_map or hash_set causes a deprecation warning
+// (which then breaks the build).
+#define SB_HAS_HASH_WARNING 1
+
+// The location to include hash_map on this platform.
+#define SB_HASH_MAP_INCLUDE <ext/hash_map>
+
+// C++'s hash_map and hash_set are often found in different namespaces depending
+// on the compiler.
+#define SB_HASH_NAMESPACE __gnu_cxx
+
+// The location to include hash_set on this platform.
+#define SB_HASH_SET_INCLUDE <ext/hash_set>
+
+// Define this to how this platform copies varargs blocks.
+#define SB_VA_COPY(dest, source) va_copy(dest, source)
+
+// --- Graphics Configuration ------------------------------------------------
+
+// Specifies whether this platform supports a performant accelerated blitter
+// API. The basic requirement is a scaled, clipped, alpha-blended blit.
+#define SB_HAS_BLITTER 0
+
+// Indicates whether or not the given platform supports bilinear filtering.
+// This can be checked to enable/disable renderer tests that verify that this is
+// working properly.
+#define SB_HAS_BILINEAR_FILTERING_SUPPORT 1
+
+// Indicates whether or not the given platform supports rendering of NV12
+// textures. These textures typically originate from video decoders.
+#define SB_HAS_NV12_TEXTURE_SUPPORT 1
+
+// --- I/O Configuration -----------------------------------------------------
+
+// Whether the current platform has microphone supported.
+#define SB_HAS_MICROPHONE 1
+
+// Whether the current platform implements the on screen keyboard interface.
+#define SB_HAS_ON_SCREEN_KEYBOARD 0
+
+// Whether the current platform has speech recognizer.
+#define SB_HAS_SPEECH_RECOGNIZER 0
+
+// Whether the current platform has speech synthesis.
+#define SB_HAS_SPEECH_SYNTHESIS 0
+
+// --- Decoder-only Params ---
+
+// --- Memory Configuration --------------------------------------------------
+
+// Whether this platform has and should use an MMAP function to map physical
+// memory to the virtual address space.
+#if SB_API_VERSION < SB_MMAP_REQUIRED_VERSION
+#define SB_HAS_MMAP 1
+#endif
+
+// Whether this platform can map executable memory. Implies SB_HAS_MMAP. This is
+// required for platforms that want to JIT.
+#define SB_CAN_MAP_EXECUTABLE_MEMORY 1
+
+// --- Network Configuration -------------------------------------------------
+
+// Specifies whether this platform supports IPV6.
+#define SB_HAS_IPV6 1
+
+// Specifies whether this platform supports pipe.
+#define SB_HAS_PIPE 1
+
+// --- Thread Configuration --------------------------------------------------
+
+// --- Timing API ------------------------------------------------------------
+
+// Whether this platform has an API to retrieve how long the current thread
+// has spent in the executing state.
+#define SB_HAS_TIME_THREAD_NOW 1
+
+// --- Tuneable Parameters ---------------------------------------------------
+
+// --- User Configuration ----------------------------------------------------
+
+// --- Platform Specific Audits ----------------------------------------------
+
+#if !defined(__GNUC__)
+#error "Evergreen-arm64 builds need a GCC-like compiler (for the moment)."
+#endif
+
+#endif  // STARBOARD_EVERGREEN_ARM64_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/evergreen/arm64/gyp_configuration.gypi b/src/starboard/evergreen/arm64/gyp_configuration.gypi
new file mode 100644
index 0000000..b2a0525
--- /dev/null
+++ b/src/starboard/evergreen/arm64/gyp_configuration.gypi
@@ -0,0 +1,58 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'yasm_exists': 1,
+    'sb_target_platform': 'evergreen-arm64',
+
+    'compiler_flags': [
+      '-isystem<(cobalt_repo_root)/third_party/musl/arch/aarch64',
+    ],
+  },
+
+  'target_defaults': {
+    'defines' : [
+      # Ensure that the Starboardized __external_threading file is included.
+      '_LIBCPP_HAS_THREAD_API_EXTERNAL',
+      # Ensure that only the forward declarations and type definitions are included
+      # in __external_threading.
+      '_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL',
+      # Enable GNU extensions to get prototypes like ffsl.
+      '_GNU_SOURCE=1',
+    ],
+    'default_configuration': 'evergreen-arm64_debug',
+    'configurations': {
+      'evergreen-arm64_debug': {
+        'inherit_from': ['debug_base'],
+      },
+      'evergreen-arm64_devel': {
+        'inherit_from': ['devel_base'],
+      },
+      'evergreen-arm64_qa': {
+        'inherit_from': ['qa_base'],
+      },
+      'evergreen-arm64_gold': {
+        'inherit_from': ['gold_base'],
+      },
+    }, # end of configurations
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/shared/compiler_flags.gypi',
+    '<(DEPTH)/starboard/evergreen/shared/gyp_configuration.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/arm64/gyp_configuration.py b/src/starboard/evergreen/arm64/gyp_configuration.py
new file mode 100644
index 0000000..a607170
--- /dev/null
+++ b/src/starboard/evergreen/arm64/gyp_configuration.py
@@ -0,0 +1,91 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard evergreen-arm64 platform configuration for gyp_cobalt."""
+
+from starboard.build import clang as clang_build
+from starboard.evergreen.shared import gyp_configuration as shared_configuration
+from starboard.tools import build
+from starboard.tools.toolchain import ar
+from starboard.tools.toolchain import bash
+from starboard.tools.toolchain import clang
+from starboard.tools.toolchain import clangxx
+from starboard.tools.toolchain import cp
+from starboard.tools.toolchain import evergreen_linker
+from starboard.tools.toolchain import touch
+
+
+class EvergreenArm64Configuration(shared_configuration.EvergreenConfiguration):
+  """Starboard Evergreen 64-bit ARM platform configuration."""
+
+  def __init__(self,
+               platform_name='evergreen-arm64',
+               asan_enabled_by_default=False,
+               goma_supports_compiler=True,
+               sabi_json_path=None):
+    # pylint: disable=useless-super-delegation
+    super(EvergreenArm64Configuration,
+          self).__init__(platform_name, asan_enabled_by_default,
+                         goma_supports_compiler, sabi_json_path)
+    self._host_toolchain = None
+
+  def GetTargetToolchain(self):
+    return self.GetHostToolchain()
+
+  def GetHostToolchain(self):
+    if not self._host_toolchain:
+      if not hasattr(self, 'host_compiler_environment'):
+        self.host_compiler_environment = build.GetHostCompilerEnvironment(
+            clang_build.GetClangSpecification(), False)
+      cc_path = self.host_compiler_environment['CC_host']
+      cxx_path = self.host_compiler_environment['CXX_host']
+
+      # Takes the provided value of CXX_HOST with a prepended 'gomacc' and an
+      # appended 'bin/clang++' and strips them off, leaving us with an absolute
+      # path to the root directory of our toolchain.
+      begin_path_index = cxx_path.find('/')
+      end_path_index = cxx_path.rfind('/', 0, cxx_path.rfind('/')) + 1
+
+      cxx_path_root = cxx_path[begin_path_index:end_path_index]
+
+      self._host_toolchain = [
+          clang.CCompiler(path=cc_path),
+          clang.CxxCompiler(path=cxx_path),
+          clang.AssemblerWithCPreprocessor(path=cc_path),
+          ar.StaticThinLinker(),
+          ar.StaticLinker(),
+          clangxx.ExecutableLinker(path=cxx_path),
+          evergreen_linker.SharedLibraryLinker(
+              path=cxx_path_root, extra_flags=['-m aarch64elf']),
+          cp.Copy(),
+          touch.Stamp(),
+          bash.Shell(),
+      ]
+    return self._host_toolchain
+
+  def GetTestFilters(self):
+    # pylint: disable=useless-super-delegation
+    return super(EvergreenArm64Configuration, self).GetTestFilters()
+
+  def GetVariables(self, configuration):
+    variables = super(EvergreenArm64Configuration, self).GetVariables(configuration)
+    variables.update({
+        'include_path_platform_deploy_gypi':
+            'starboard/evergreen/arm64/platform_deploy.gypi',
+    })
+    return variables
+
+
+def CreatePlatformConfig():
+  return EvergreenArm64Configuration(
+      sabi_json_path='starboard/sabi/arm64/sabi.json')
diff --git a/src/starboard/evergreen/arm64/platform_deploy.gypi b/src/starboard/evergreen/arm64/platform_deploy.gypi
new file mode 100644
index 0000000..f32c77f
--- /dev/null
+++ b/src/starboard/evergreen/arm64/platform_deploy.gypi
@@ -0,0 +1,37 @@
+# Copyright 2020 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'variables': {
+    'deploy_executable_file': '<(target_deploy_dir)/lib/lib<(executable_name).so',
+    'executable_file': '<(PRODUCT_DIR)/lib/lib<(executable_name).so',
+  },
+  'includes': [ '<(DEPTH)/starboard/build/collect_deploy_content.gypi' ],
+  'actions': [
+    {
+      'action_name': 'deploy_executable',
+      'message': 'Strip executable: <(deploy_executable_file)',
+      'inputs': [
+        '<(executable_file)',
+        '<(content_deploy_stamp_file)',
+      ],
+      'outputs': [ '<(deploy_executable_file)' ],
+      'action': [
+        'aarch64-linux-gnu-strip',
+        '-o', '<(deploy_executable_file)',
+        '<(executable_file)',
+      ],
+    },
+  ],
+}
diff --git a/src/starboard/evergreen/arm64/starboard_platform.gyp b/src/starboard/evergreen/arm64/starboard_platform.gyp
new file mode 100644
index 0000000..8fa33ef
--- /dev/null
+++ b/src/starboard/evergreen/arm64/starboard_platform.gyp
@@ -0,0 +1,21 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'includes': [
+    # Note that we are 'includes'ing a 'gyp' file, not a 'gypi' file.  The idea
+    # is that we just want this file to *be* the parent gyp file.
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gyp',
+  ],
+}
diff --git a/src/starboard/evergreen/arm64/thread_types_public.h b/src/starboard/evergreen/arm64/thread_types_public.h
new file mode 100644
index 0000000..c156579
--- /dev/null
+++ b/src/starboard/evergreen/arm64/thread_types_public.h
@@ -0,0 +1,23 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file was initially generated by starboard/tools/create_derived_build.py,
+// though it may have been modified since its creation.
+
+#ifndef STARBOARD_EVERGREEN_ARM64_THREAD_TYPES_PUBLIC_H_
+#define STARBOARD_EVERGREEN_ARM64_THREAD_TYPES_PUBLIC_H_
+
+#include "starboard/shared/pthread/types_public.h"
+
+#endif  // STARBOARD_EVERGREEN_ARM64_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/evergreen/sabi/sabi_flags.gypi b/src/starboard/evergreen/sabi/sabi_flags.gypi
new file mode 100644
index 0000000..160ef7f
--- /dev/null
+++ b/src/starboard/evergreen/sabi/sabi_flags.gypi
@@ -0,0 +1,80 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Starboard Application Binary Interface
+#
+# This file translates the set of ABI variables, which should be overridden by
+# each platform, into platform-specific sets of compiler flags.
+
+{
+  'variables': {
+    'conditions': [
+      # arm
+      ['target_arch=="arm"', {
+        'compiler_flags': [
+          '-march=arm<(target_arch_sub)',
+        ],
+        'conditions': [
+          ['floating_point_abi=="soft"', {
+            'compiler_flags': [
+              '-mfloat-abi=soft',
+            ],
+          }, {
+            'compiler_flags': [
+              '-mfloat-abi=<(floating_point_abi)',
+              '-mfpu=<(floating_point_fpu)',
+            ],
+          }],
+          ['floating_point_abi=="hard"', {
+            'compiler_flags': [
+              '-target', 'arm<(target_arch_sub)-none-eabihf',
+            ],
+          }, {
+            'compiler_flags': [
+              '-target', 'arm<(target_arch_sub)-none-eabi',
+            ],
+          }],
+        ],
+      }],
+      # arm64
+      ['target_arch=="arm64"', {
+        'compiler_flags': [
+          '-march=arm64<(target_arch_sub)',
+          '-target', 'arm64<(target_arch_sub)-unknown-unknown-elf',
+
+          # There is no software floating point support for arm64 / aarch64
+          # architectures. Thus, -mfloat-abi and -mfpu would simply be ignored.
+
+          # char is unsigned by default for arm64.
+          '-fsigned-char',
+        ],
+      }],
+      # x86
+      ['target_arch=="x86"', {
+        'compiler_flags': [
+          '-march=i686',
+          '-target', 'i686-unknown-unknown-elf',
+        ],
+      }],
+      # x64
+      ['target_arch=="x64"', {
+        'compiler_flags': [
+          '-march=x86-64',
+          '-target', 'x86_64-unknown-linux-elf',
+        ],
+      }],
+    ],
+  },
+}
+
diff --git a/src/starboard/evergreen/shared/__init__.py b/src/starboard/evergreen/shared/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/shared/__init__.py
diff --git a/src/starboard/evergreen/shared/compiler_flags.gypi b/src/starboard/evergreen/shared/compiler_flags.gypi
new file mode 100644
index 0000000..91af007
--- /dev/null
+++ b/src/starboard/evergreen/shared/compiler_flags.gypi
@@ -0,0 +1,192 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Platform specific compiler flags for Evergreen. Included from
+# gyp_configuration.gypi.
+
+{
+  'variables': {
+    'compiler_flags_host': [
+      '-O2',
+    ],
+    'compiler_flags_debug': [
+      '-frtti',
+      '-O0',
+    ],
+    'compiler_flags_devel': [
+      '-frtti',
+      '-O2',
+    ],
+    'compiler_flags_qa': [
+      '-fno-rtti',
+      '-gline-tables-only',
+    ],
+    'compiler_flags_qa_size': [
+      '-Os',
+    ],
+    'compiler_flags_qa_speed': [
+      '-O2',
+    ],
+    'compiler_flags_gold': [
+      '-fno-rtti',
+      '-gline-tables-only',
+    ],
+    'compiler_flags_gold_size': [
+      '-Os',
+    ],
+    'compiler_flags_gold_speed': [
+      '-O2',
+    ],
+    'conditions': [
+      ['clang==1', {
+        'linker_flags': [
+          '-fuse-ld=lld',
+          '-nostdlib',
+        ],
+        'common_clang_flags': [
+          '-fcolor-diagnostics',
+          # Default visibility to hidden, to enable dead stripping.
+          '-fvisibility=hidden',
+          '-Wno-c++11-compat',
+          # This complains about 'override', which we use heavily.
+          '-Wno-c++11-extensions',
+          # Warns on switches on enums that cover all enum values but
+          # also contain a default: branch. Chrome is full of that.
+          '-Wno-covered-switch-default',
+          # protobuf uses hash_map.
+          '-Wno-deprecated',
+          '-fno-exceptions',
+          # Enable unwind tables used by libunwind for stack traces.
+          '-funwind-tables',
+          # Disable usage of frame pointers.
+          '-fomit-frame-pointer',
+          # Don't warn about the "struct foo f = {0};" initialization pattern.
+          '-Wno-missing-field-initializers',
+          # Do not warn for implicit sign conversions.
+          '-Wno-sign-conversion',
+          '-fno-strict-aliasing',  # See http://crbug.com/32204
+          '-Wno-unnamed-type-template-args',
+          # Triggered by the COMPILE_ASSERT macro.
+          '-Wno-unused-local-typedef',
+          # Do not warn if a function or variable cannot be implicitly
+          # instantiated.
+          '-Wno-undefined-var-template',
+          # Do not warn about an implicit exception spec mismatch.
+          '-Wno-implicit-exception-spec-mismatch',
+          # It's OK not to use some input parameters.
+          '-Wno-unused-parameter',
+          '-Wno-conversion',
+          '-Wno-bitwise-op-parentheses',
+          '-Wno-shift-op-parentheses',
+          '-Wno-shorten-64-to-32',
+          '-fno-use-cxa-atexit',
+        ],
+      }],
+      ['cobalt_fastbuild==0', {
+        'compiler_flags_debug': [
+          '-g',
+        ],
+        'compiler_flags_devel': [
+          '-g',
+        ],
+        'compiler_flags_qa': [
+          '-gline-tables-only',
+        ],
+        'compiler_flags_gold': [
+          '-gline-tables-only',
+        ],
+      }],
+    ],
+  },
+
+  'target_defaults': {
+    'defines': [
+      # By default, <EGL/eglplatform.h> pulls in some X11 headers that have some
+      # nasty macros (|Status|, for example) that conflict with Chromium base.
+      'MESA_EGL_NO_X11_HEADERS'
+    ],
+    'cflags': [
+      '-fPIC',
+      '-nostdlibinc',
+      '-isystem<(cobalt_repo_root)/third_party/llvm-project/libcxxabi/include',
+      '-isystem<(cobalt_repo_root)/third_party/llvm-project/libunwind/include',
+      '-isystem<(cobalt_repo_root)/third_party/llvm-project/libcxx/include',
+      '-isystem<(cobalt_repo_root)/third_party/musl/include',
+      '-isystem<(cobalt_repo_root)/third_party/musl/arch/generic',
+    ],
+    'cflags_cc': [
+      '-nostdinc++',
+      '-std=c++11',
+    ],
+    'target_conditions': [
+      ['sb_pedantic_warnings==1', {
+        'cflags': [
+          '-Wall',
+          '-Wextra',
+          '-Wunreachable-code',
+          '<@(common_clang_flags)',
+        ],
+      },{
+        'cflags': [
+          '<@(common_clang_flags)',
+          # 'this' pointer cannot be NULL...pointer may be assumed
+          # to always convert to true.
+          '-Wno-undefined-bool-conversion',
+          # Skia doesn't use overrides.
+          '-Wno-inconsistent-missing-override',
+          # Do not warn for implicit type conversions that may change a value.
+          '-Wno-conversion',
+          # shifting a negative signed value is undefined
+          '-Wno-shift-negative-value',
+          # Width of bit-field exceeds width of its type- value will be truncated
+          '-Wno-bitfield-width',
+          '-Wno-undefined-var-template',
+        ],
+      }],
+      ['use_asan==1', {
+        'cflags': [
+          '-fsanitize=address',
+          '-fno-omit-frame-pointer',
+        ],
+        'ldflags': [
+          '-fsanitize=address',
+          # Force linking of the helpers in sanitizer_options.cc
+          '-Wl,-u_sanitizer_options_link_helper',
+        ],
+        'defines': [
+          'ADDRESS_SANITIZER',
+        ],
+        'conditions': [
+          ['asan_symbolizer_path!=""', {
+            'defines': [
+              'ASAN_SYMBOLIZER_PATH="<@(asan_symbolizer_path)"',
+            ],
+          }],
+        ],
+      }],
+      ['use_tsan==1', {
+        'cflags': [
+          '-fsanitize=thread',
+          '-fno-omit-frame-pointer',
+        ],
+        'ldflags': [
+          '-fsanitize=thread',
+        ],
+        'defines': [
+          'THREAD_SANITIZER',
+        ],
+      }],
+    ],
+  }, # end of target_defaults
+}
diff --git a/src/starboard/evergreen/shared/gyp_configuration.gypi b/src/starboard/evergreen/shared/gyp_configuration.gypi
new file mode 100644
index 0000000..e6a8911
--- /dev/null
+++ b/src/starboard/evergreen/shared/gyp_configuration.gypi
@@ -0,0 +1,70 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'sb_evergreen': 1,
+    'sb_speech_supported': 0,
+
+    'enable_vr': 0,
+    'default_renderer_options_dependency': '<(DEPTH)/cobalt/renderer/default_options_starboard.gyp:default_options',
+    'javascript_engine': 'v8',
+    'cobalt_v8_buildtime_snapshot': 1,
+    'cobalt_v8_enable_embedded_builtins': 1,
+
+    # Override that omits the "data" subdirectory.
+    # TODO: Remove when omitted for all platforms in base_configuration.gypi.
+    'sb_static_contents_output_data_dir': '<(PRODUCT_DIR)/content',
+
+    'final_executable_type': 'shared_library',
+    'gtest_target_type': 'shared_library',
+
+    'compiler_flags': [
+      # We'll pretend not to be Linux, but Starboard instead.
+      '-U__linux__',
+
+      # Pretend not to be unix, so that _LIBCPP_HAS_CATOPEN is not defined in
+      # third_party/llvm-project/libcxx/include/__config. Then leaks catopen,
+      # catgets and catclose are plugged.
+      '-U__unix__',
+    ],
+
+    # Using an inner scope for 'variables' so that it can be made a default
+    # (and so overridden elsewhere), but yet still used immediately in this
+    # file.
+    'variables': {
+      'use_dlmalloc_allocator%': 0,
+    },
+  },
+  'target_defaults': {
+    'defines' : [
+      '_LIBCPP_HAS_MUSL_LIBC',
+      '__STDC_FORMAT_MACROS', # so that we get PRI*
+
+      # File format of the shared object we will generate.
+      '__ELF__',
+
+      # Use scalar portable implementations instead of Clang/GCC vector
+      # extensions in SkVx.h.
+      'SKNX_NO_SIMD',
+    ],
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/sabi/sabi_flags.gypi',
+    '<(DEPTH)/starboard/sabi/sabi.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/shared/gyp_configuration.py b/src/starboard/evergreen/shared/gyp_configuration.py
new file mode 100644
index 0000000..3d9860f
--- /dev/null
+++ b/src/starboard/evergreen/shared/gyp_configuration.py
@@ -0,0 +1,117 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard Evergreen shared platform configuration."""
+
+import os
+
+from starboard.build import clang
+from starboard.build import platform_configuration
+from starboard.tools import build
+from starboard.tools import paths
+from starboard.tools.testing import test_filter
+
+
+class EvergreenConfiguration(platform_configuration.PlatformConfiguration):
+  """Starboard Evergreen platform configuration."""
+
+  def __init__(self,
+               platform,
+               asan_enabled_by_default=True,
+               goma_supports_compiler=True,
+               sabi_json_path=None):
+    self.goma_supports_compiler = goma_supports_compiler
+    self.sabi_json_path = sabi_json_path
+    super(EvergreenConfiguration, self).__init__(platform,
+                                                 asan_enabled_by_default)
+
+  def GetBuildFormat(self):
+    """Returns the desired build format."""
+    # The comma means that ninja and qtcreator_ninja will be chained and use the
+    # same input information so that .gyp files will only have to be parsed
+    # once.
+    return 'ninja,qtcreator_ninja'
+
+  def GetVariables(self, config_name):
+    variables = super(EvergreenConfiguration, self).GetVariables(
+        config_name, use_clang=1)
+    variables.update({
+        'javascript_engine':
+            'v8',
+        'cobalt_enable_jit':
+            1,
+        'cobalt_repo_root':
+            paths.REPOSITORY_ROOT,
+        'include_path_platform_deploy_gypi':
+            'starboard/evergreen/shared/platform_deploy.gypi',
+    })
+    return variables
+
+  def GetLauncherPath(self):
+    """Gets the path to the launcher module for this platform."""
+    return os.path.dirname(__file__)
+
+  def GetGeneratorVariables(self, config_name):
+    del config_name
+    generator_variables = {
+        'qtcreator_session_name_prefix': 'cobalt',
+    }
+    return generator_variables
+
+  def GetEnvironmentVariables(self):
+    if not hasattr(self, 'host_compiler_environment'):
+      self.host_compiler_environment = build.GetHostCompilerEnvironment(
+          clang.GetClangSpecification(), self.goma_supports_compiler)
+
+    env_variables = self.host_compiler_environment
+    env_variables.update({
+        'CC': self.host_compiler_environment['CC_host'],
+        'CXX': self.host_compiler_environment['CXX_host'],
+    })
+    return env_variables
+
+  def GetPathToSabiJsonFile(self):
+    return self.sabi_json_path
+
+  def GetTestFilters(self):
+    filters = super(EvergreenConfiguration, self).GetTestFilters()
+    for target, tests in self.__FILTERED_TESTS.iteritems():
+      filters.extend(test_filter.TestFilter(target, test) for test in tests)
+    return filters
+
+  __FILTERED_TESTS = {  # pylint: disable=invalid-name
+      'nplb': ['MemoryReportingTest.CapturesMemMapUnmap',
+               'MemoryReportingTest.CapturesOperatorDeleteNothrow',
+               'SbAudioSinkTest.*',
+               'SbDrmTest.AnySupportedKeySystems'],
+
+      # player_filter_tests test the platform's Starboard implementation of
+      # the filter-based player, which is not exposed through the Starboard
+      # interface. Since Evergreen has no visibility of the platform's
+      # specific Starboard implementation, rely on the platform to test this
+      # directly instead.
+      'player_filter_tests': [test_filter.FILTER_ALL],
+  }
+
+  def GetTestTargets(self):
+    tests = super(EvergreenConfiguration, self).GetTestTargets()
+    return [test for test in tests if test not in self.__BLACKLISTED_TESTS]
+
+  __BLACKLISTED_TESTS = [  # pylint: disable=invalid-name
+      # elf_loader_test and installation_manager_test are explicitly tests that
+      # validate the correctness of the underlying platform. We should not be
+      # running these tests in Evergreen mode, and instead will rely on the
+      # platform to test this directly instead.
+      'elf_loader_test',
+      'installation_manager_test',
+  ]
diff --git a/src/starboard/evergreen/shared/launcher.py b/src/starboard/evergreen/shared/launcher.py
new file mode 100644
index 0000000..5f18643
--- /dev/null
+++ b/src/starboard/evergreen/shared/launcher.py
@@ -0,0 +1,192 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Evergreen implementation of Starboard launcher abstraction."""
+
+import logging
+import os
+import shutil
+
+import _env  # pylint: disable=unused-import
+from starboard.tools import abstract_launcher
+from starboard.tools import paths
+from starboard.tools import port_symlink
+
+_BASE_STAGING_DIRECTORY = 'evergreen_staging'
+_LOADER_TARGET = 'elf_loader_sandbox'
+
+
+class Launcher(abstract_launcher.AbstractLauncher):
+  """Class for launching Evergreen targets on arbitrary platforms.
+
+  This Evergreen launcher leverages the platform-specific launchers to start the
+  Evergreen loader on a particular device. A staging directory is built that
+  resembles a typical deploy directory, with the Evergreen target and its
+  content included in the Evergreen loader's content. The platform-specific
+  launcher, given command-line switches to tell the Evergreen loader where the
+  Evergreen target and its content are, can run the loader without needing to
+  know about Evergreen per-se.
+
+  The Evergreen launcher does not require its own implementation for many
+  abstract launcher methods and trampolines them to the platform-specific
+  launcher.
+  """
+
+  def __init__(self, platform, target_name, config, device_id, **kwargs):
+    super(Launcher, self).__init__(platform, target_name, config, device_id,
+                                   **kwargs)
+    self.loader_platform = kwargs.get('loader_platform')
+    if not self.loader_platform:
+      raise ValueError('|loader_platform| cannot be |None|.')
+
+    self.loader_config = kwargs.get('loader_config')
+    if not self.loader_config:
+      raise ValueError('|loader_config| cannot be |None|.')
+
+    self.loader_out_directory = kwargs.get('loader_out_directory')
+    if not self.loader_out_directory:
+      self.loader_out_directory = paths.BuildOutputDirectory(
+          self.loader_platform, self.loader_config)
+
+    # The relationship of loader platforms and configurations to evergreen
+    # platforms and configurations is many-to-many. We need a separate directory
+    # for each of them, i.e. linux-x64x11_debug__evergreen-x64_gold.
+    self.combined_config = '{}_{}__{}_{}'.format(self.loader_platform,
+                                                 self.loader_config, platform,
+                                                 config)
+
+    self.staging_directory = os.path.join(
+        os.path.dirname(self.out_directory), _BASE_STAGING_DIRECTORY,
+        self.combined_config)
+
+    # TODO: Figure out a place for the launcher to do this prep work that is not
+    # part of the constructor.
+    self._StageTargetsAndContents()
+
+    # Ensure the path, relative to the content of the ELF Loader, to the
+    # Evergreen target and its content are passed as command line switches.
+    target_command_line_params = [
+        '--evergreen_library=app/{}/lib/lib{}.so'.format(
+            self.target_name, self.target_name),
+        '--evergreen_content=app/{}/content'.format(self.target_name)
+    ]
+
+    if self.target_command_line_params:
+      target_command_line_params.extend(self.target_command_line_params)
+
+    self.launcher = abstract_launcher.LauncherFactory(
+        self.loader_platform,
+        _LOADER_TARGET,
+        self.loader_config,
+        device_id,
+        target_params=target_command_line_params,
+        output_file=self.output_file,
+        out_directory=self.staging_directory,
+        coverage_directory=self.coverage_directory,
+        env_variables=self.env_variables)
+
+  def Run(self):
+    """Redirects to the ELF Loader platform's abstract loader implementation."""
+
+    return_code = 1
+
+    try:
+      return_code = self.launcher.Run()
+    except Exception:  # pylint: disable=broad-except
+      logging.exception('Error occurred while running test.')
+
+    return return_code
+
+  def Kill(self):
+    """Redirects to the ELF Loader platform's abstract loader implementation."""
+    self.launcher.Kill()
+
+  def _StageTargetsAndContents(self):
+    """Stage targets and their contents in our staging directory.
+
+    The existing launcher infrastructure expects a specific directory structure
+    regardless of whether or not we are running locally:
+
+             platform:    raspi-2          raspi-2_devel
+             config:      devel             +-- deploy
+             target_name: nplb                   +-- nplb
+                                                      +-- content
+                                                      +-- nplb
+
+    This function effectively builds a directory structure that matches both of
+    these expectations while minimizing the hard copies made.
+
+    Note: The Linux launcher does not yet look in the deploy directory and
+          instead runs the target from the top of its out-directory. This will
+          be changed in the future.
+    """
+
+    if os.path.exists(self.staging_directory):
+      shutil.rmtree(self.staging_directory)
+    os.makedirs(self.staging_directory)
+
+    # out/evergreen_staging/linux-x64x11_devel__evergreen-x64_devel/deploy/elf_loader_sandbox
+    staging_directory_loader = os.path.join(self.staging_directory, 'deploy',
+                                            _LOADER_TARGET)
+
+    # out/evergreen_staging/linux-x64x11_devel__evergreen-x64_devel/deploy/elf_loader_sandbox/content/app/nplb/
+    staging_directory_evergreen = os.path.join(staging_directory_loader,
+                                               'content', 'app',
+                                               self.target_name)
+
+    # Make a hard copy of the ELF Loader's deploy directory in the location
+    # specified by |staging_directory_loader|. A symbolic link here would cause
+    # future symbolic links to fall through to the original out-directories.
+    shutil.copytree(
+        os.path.join(self.loader_out_directory, 'deploy', _LOADER_TARGET),
+        staging_directory_loader)
+
+    port_symlink.MakeSymLink(
+        os.path.join(self.out_directory, 'deploy', self.target_name),
+        staging_directory_evergreen)
+
+    # TODO: Make the Linux launcher run from the deploy directory, no longer
+    #       create these symlinks, and remove the NOTE from the docstring.
+    port_symlink.MakeSymLink(
+        os.path.join(staging_directory_loader, _LOADER_TARGET),
+        os.path.join(self.staging_directory, _LOADER_TARGET))
+    port_symlink.MakeSymLink(
+        os.path.join(staging_directory_loader, 'content'),
+        os.path.join(self.staging_directory, 'content'))
+
+  def SupportsSuspendResume(self):
+    return self.launcher.SupportsSuspendResume()
+
+  def SendResume(self):
+    return self.launcher.SendResume()
+
+  def SendSuspend(self):
+    return self.launcher.SendSuspend()
+
+  def SupportsDeepLink(self):
+    return self.launcher.SupportsDeepLink()
+
+  def SendDeepLink(self, link):
+    return self.launcher.SendDeepLink(link)
+
+  def GetStartupTimeout(self):
+    return self.launcher.GetStartupTimeout()
+
+  def GetHostAndPortGivenPort(self, port):
+    return self.launcher.GetHostAndPortGivenPort(port)
+
+  def GetTargetPath(self):
+    return self.launcher.GetTargetPath()
+
+  def GetDeviceIp(self):
+    return self.launcher.GetDeviceIp()
diff --git a/src/starboard/evergreen/shared/platform_deploy.gypi b/src/starboard/evergreen/shared/platform_deploy.gypi
new file mode 100644
index 0000000..3ad944a
--- /dev/null
+++ b/src/starboard/evergreen/shared/platform_deploy.gypi
@@ -0,0 +1,44 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'variables': {
+    'deploy_executable_file': '<(target_deploy_dir)/lib/lib<(executable_name).so',
+    'executable_file': '<(PRODUCT_DIR)/lib/lib<(executable_name).so',
+  },
+  'includes': [
+    '<(DEPTH)/starboard/build/collect_deploy_content.gypi',
+  ],
+  'actions': [
+    {
+      'action_name': 'deploy_executable',
+      'message': 'Deploy <(deploy_executable_file)',
+      'inputs': [
+        '<(content_deploy_stamp_file)',
+        '<(executable_file)',
+      ],
+      'outputs': [ '<(deploy_executable_file)' ],
+      'action': [
+        'python',
+        '<(DEPTH)/starboard/tools/port_symlink.py',
+        '-f',
+        '-r',
+        '--link',
+        '<(executable_file)',
+        '<(deploy_executable_file)',
+      ],
+    },
+  ],
+}
+
diff --git a/src/starboard/evergreen/shared/starboard_platform.gyp b/src/starboard/evergreen/shared/starboard_platform.gyp
new file mode 100644
index 0000000..768b46b
--- /dev/null
+++ b/src/starboard/evergreen/shared/starboard_platform.gyp
@@ -0,0 +1,44 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'includes': [
+    '<(DEPTH)/starboard/stub/stub_sources.gypi',
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gypi',
+  ],
+  'targets': [
+    {
+      'target_name': 'starboard_platform',
+      'type': 'static_library',
+      'sources': [
+        '<@(stub_sources)',
+        'atomic_public.h',
+        'configuration_public.h',
+        'thread_types_public.h',
+      ],
+      'conditions': [
+        ['sb_speech_supported == 0', {
+          'sources!': [
+            '<@(speech_stub_sources)',
+          ],
+        }],
+      ],
+      'defines': [
+        # This must be defined when building Starboard, and must not when
+        # building Starboard client code.
+        'STARBOARD_IMPLEMENTATION',
+      ],
+    },
+  ],
+}
diff --git a/src/starboard/evergreen/shared/starboard_platform.gypi b/src/starboard/evergreen/shared/starboard_platform.gypi
new file mode 100644
index 0000000..1a205c7
--- /dev/null
+++ b/src/starboard/evergreen/shared/starboard_platform.gypi
@@ -0,0 +1,28 @@
+# Copyright 2016 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+{
+  'variables':  {
+    'speech_stub_sources': [
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_cancel.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_create.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_destroy.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_is_supported.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_start.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_recognizer_stop.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_synthesis_cancel.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_synthesis_is_supported.cc',
+      '<(DEPTH)/starboard/shared/stub/speech_synthesis_speak.cc',
+    ],
+  },
+}
diff --git a/src/starboard/evergreen/x64/__init__.py b/src/starboard/evergreen/x64/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/x64/__init__.py
diff --git a/src/starboard/evergreen/x64/atomic_public.h b/src/starboard/evergreen/x64/atomic_public.h
new file mode 100644
index 0000000..c3fc6c7
--- /dev/null
+++ b/src/starboard/evergreen/x64/atomic_public.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef STARBOARD_EVERGREEN_X64_ATOMIC_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X64_ATOMIC_PUBLIC_H_
+
+#include "starboard/atomic.h"
+#include "starboard/shared/gcc/atomic_gcc_public.h"
+
+#endif  // STARBOARD_EVERGREEN_X64_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/evergreen/x64/cobalt/__init__.py b/src/starboard/evergreen/x64/cobalt/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/x64/cobalt/__init__.py
diff --git a/src/starboard/evergreen/x64/cobalt/configuration.gypi b/src/starboard/evergreen/x64/cobalt/configuration.gypi
new file mode 100644
index 0000000..5fcbf9f
--- /dev/null
+++ b/src/starboard/evergreen/x64/cobalt/configuration.gypi
@@ -0,0 +1,21 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Cobalt Evergreen x86_64 specific configuration.
+
+{
+  'variables': {
+    'in_app_dial%': 1,
+  }, # end of variables
+}
diff --git a/src/starboard/evergreen/x64/cobalt/configuration.py b/src/starboard/evergreen/x64/cobalt/configuration.py
new file mode 100644
index 0000000..9d0947d
--- /dev/null
+++ b/src/starboard/evergreen/x64/cobalt/configuration.py
@@ -0,0 +1,70 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard Cobalt Evergreen x64 configuration."""
+
+import os
+
+from cobalt.build import cobalt_configuration
+from starboard.tools.testing import test_filter
+
+
+class CobaltX64Configuration(cobalt_configuration.CobaltConfiguration):
+  """Starboard Cobalt Evergreen x64 configuration."""
+
+  def __init__(self, platform_configuration, application_name,
+               application_directory):
+    super(CobaltX64Configuration,
+          self).__init__(platform_configuration, application_name,
+                         application_directory)
+
+  def GetPostIncludes(self):
+    # If there isn't a configuration.gypi found in the usual place, we'll
+    # supplement with our shared implementation.
+    includes = super(CobaltX64Configuration, self).GetPostIncludes()
+    for include in includes:
+      if os.path.basename(include) == 'configuration.gypi':
+        return includes
+
+    shared_gypi_path = os.path.join(
+        os.path.dirname(__file__), 'configuration.gypi')
+    if os.path.isfile(shared_gypi_path):
+      includes.append(shared_gypi_path)
+    return includes
+
+  def WebdriverBenchmarksEnabled(self):
+    return True
+
+  def GetTestFilters(self):
+    filters = super(CobaltX64Configuration, self).GetTestFilters()
+    for target, tests in self.__FILTERED_TESTS.iteritems():
+      filters.extend(test_filter.TestFilter(target, test) for test in tests)
+    return filters
+
+  def GetTestEnvVariables(self):
+    return {
+        'base_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        },
+        'crypto_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        },
+        'net_unittests': {
+            'ASAN_OPTIONS': 'detect_leaks=0'
+        }
+    }
+
+  __FILTERED_TESTS = {
+      'base_unittests': [test_filter.FILTER_ALL],
+      'net_unittests': [test_filter.FILTER_ALL],
+  }
diff --git a/src/starboard/evergreen/x64/configuration_public.h b/src/starboard/evergreen/x64/configuration_public.h
new file mode 100644
index 0000000..fe9c06d
--- /dev/null
+++ b/src/starboard/evergreen/x64/configuration_public.h
@@ -0,0 +1,210 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The Starboard configuration for x64. Other devices will have
+// specific Starboard implementations.
+
+// Other source files should never include this header directly, but should
+// include the generic "starboard/configuration.h" instead.
+
+#ifndef STARBOARD_EVERGREEN_X64_CONFIGURATION_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X64_CONFIGURATION_PUBLIC_H_
+
+// Configuration parameters that allow the application to make some general
+// compile-time decisions with respect to the the number of cores likely to be
+// available on this platform. For a definitive measure, the application should
+// still call SbSystemGetNumberOfProcessors at runtime.
+
+// Whether the current platform's thread scheduler will automatically balance
+// threads between cores, as opposed to systems where threads will only ever run
+// on the specifically pinned core.
+#define SB_HAS_CROSS_CORE_SCHEDULER 1
+
+// --- System Header Configuration -------------------------------------------
+
+// Any system headers listed here that are not provided by the platform will be
+// emulated in starboard/types.h.
+
+// Whether the current platform provides the standard header stdarg.h.
+#define SB_HAS_STDARG_H 1
+
+// Whether the current platform provides the standard header stdbool.h.
+#define SB_HAS_STDBOOL_H 1
+
+// Whether the current platform provides the standard header stddef.h.
+#define SB_HAS_STDDEF_H 1
+
+// Whether the current platform provides the standard header stdint.h.
+#define SB_HAS_STDINT_H 1
+
+// Whether the current platform provides the standard header inttypes.h.
+#define SB_HAS_INTTYPES_H 1
+
+// Whether the current platform provides the standard header sys/types.h.
+#define SB_HAS_SYS_TYPES_H 0
+
+// Whether the current platform provides the standard header limits.h.
+#define SB_HAS_LIMITS_H 1
+
+// Whether the current platform provides the standard header float.h.
+#define SB_HAS_FLOAT_H 1
+
+// Whether the current platform provides ssize_t.
+#define SB_HAS_SSIZE_T 0
+
+// Type detection for wchar_t.
+#if defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
+#define SB_IS_WCHAR_T_UTF32 1
+#elif defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
+#define SB_IS_WCHAR_T_UTF16 1
+#endif
+
+// Chrome only defines these two if ARMEL or MIPSEL are defined.
+#if defined(__ARMEL__)
+// Chrome has an exclusion for iOS here, we should too when we support iOS.
+#define SB_IS_WCHAR_T_UNSIGNED 1
+#elif defined(__MIPSEL__)
+#define SB_IS_WCHAR_T_SIGNED 1
+#endif
+
+// This quirk is used to fix an issue caused by the rewriting of memset to
+// SbMemorySet in third_party/protobuf/src/google/protobuf/stubs/port.h.
+#define SB_HAS_QUIRK_MEMSET_IN_SYSTEM_HEADERS 1
+
+// --- Compiler Configuration ------------------------------------------------
+
+// The platform's annotation for forcing a C function to be inlined.
+#define SB_C_FORCE_INLINE __inline__ __attribute__((always_inline))
+
+// The platform's annotation for marking a C function as suggested to be
+// inlined.
+#define SB_C_INLINE inline
+
+// The platform's annotation for marking a C function as forcibly not
+// inlined.
+#define SB_C_NOINLINE __attribute__((noinline))
+
+// The platform's annotation for marking a symbol as exported outside of the
+// current shared library.
+#define SB_EXPORT_PLATFORM __attribute__((visibility("default")))
+
+// The platform's annotation for marking a symbol as imported from outside of
+// the current linking unit.
+#define SB_IMPORT_PLATFORM
+
+// --- Extensions Configuration ----------------------------------------------
+
+// Do not use <unordered_map> and <unordered_set> for the hash table types.
+#define SB_HAS_STD_UNORDERED_HASH 0
+
+// GCC/Clang doesn't define a long long hash function, except for Android and
+// Game consoles.
+#define SB_HAS_LONG_LONG_HASH 0
+
+// GCC/Clang doesn't define a string hash function, except for Game Consoles.
+#define SB_HAS_STRING_HASH 0
+
+// Desktop Linux needs a using statement for the hash functions.
+#define SB_HAS_HASH_USING 0
+
+// Set this to 1 if hash functions for custom types can be defined as a
+// hash_value() function. Otherwise, they need to be placed inside a
+// partially-specified hash struct template with an operator().
+#define SB_HAS_HASH_VALUE 0
+
+// Set this to 1 if use of hash_map or hash_set causes a deprecation warning
+// (which then breaks the build).
+#define SB_HAS_HASH_WARNING 1
+
+// The location to include hash_map on this platform.
+#define SB_HASH_MAP_INCLUDE <ext/hash_map>
+
+// C++'s hash_map and hash_set are often found in different namespaces depending
+// on the compiler.
+#define SB_HASH_NAMESPACE __gnu_cxx
+
+// The location to include hash_set on this platform.
+#define SB_HASH_SET_INCLUDE <ext/hash_set>
+
+// Define this to how this platform copies varargs blocks.
+#define SB_VA_COPY(dest, source) va_copy(dest, source)
+
+// --- Graphics Configuration ------------------------------------------------
+
+// Specifies whether this platform supports a performant accelerated blitter
+// API. The basic requirement is a scaled, clipped, alpha-blended blit.
+#define SB_HAS_BLITTER 0
+
+// Indicates whether or not the given platform supports bilinear filtering.
+// This can be checked to enable/disable renderer tests that verify that this is
+// working properly.
+#define SB_HAS_BILINEAR_FILTERING_SUPPORT 1
+
+// Indicates whether or not the given platform supports rendering of NV12
+// textures. These textures typically originate from video decoders.
+#define SB_HAS_NV12_TEXTURE_SUPPORT 0
+
+// --- I/O Configuration -----------------------------------------------------
+
+// Whether the current platform implements the on screen keyboard interface.
+#define SB_HAS_ON_SCREEN_KEYBOARD 0
+
+// Whether the current platform has speech recognizer.
+#define SB_HAS_SPEECH_RECOGNIZER 0
+
+// Whether the current platform has speech synthesis.
+#define SB_HAS_SPEECH_SYNTHESIS 0
+
+// --- Decoder-only Params ---
+
+// --- Memory Configuration --------------------------------------------------
+
+// Whether this platform has and should use an MMAP function to map physical
+// memory to the virtual address space.
+#if SB_API_VERSION < SB_MMAP_REQUIRED_VERSION
+#define SB_HAS_MMAP 1
+#endif
+
+// Whether this platform can map executable memory. Implies SB_HAS_MMAP. This is
+// required for platforms that want to JIT.
+#define SB_CAN_MAP_EXECUTABLE_MEMORY 1
+// --- Network Configuration -------------------------------------------------
+
+// Specifies whether this platform supports IPV6.
+#define SB_HAS_IPV6 1
+
+// Specifies whether this platform supports pipe.
+#define SB_HAS_PIPE 1
+
+// --- Thread Configuration --------------------------------------------------
+
+// --- Timing API ------------------------------------------------------------
+
+// Whether this platform has an API to retrieve how long the current thread
+// has spent in the executing state.
+#define SB_HAS_TIME_THREAD_NOW 1
+
+// --- Tuneable Parameters ---------------------------------------------------
+
+// --- User Configuration ----------------------------------------------------
+
+// --- Platform Specific Audits ----------------------------------------------
+
+#if !defined(__GNUC__)
+#error "Evergreen-x64 builds need a GCC-like compiler (for the moment)."
+#endif
+
+#endif  // STARBOARD_EVERGREEN_X64_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/evergreen/x64/gyp_configuration.gypi b/src/starboard/evergreen/x64/gyp_configuration.gypi
new file mode 100644
index 0000000..dcb689e
--- /dev/null
+++ b/src/starboard/evergreen/x64/gyp_configuration.gypi
@@ -0,0 +1,58 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'yasm_exists': 1,
+    'sb_target_platform': 'evergreen-x64',
+
+    'compiler_flags': [
+      '-isystem<(cobalt_repo_root)/third_party/musl/arch/x86_64',
+    ],
+  },
+
+  'target_defaults': {
+    'defines' : [
+      # Ensure that the Starboardized __external_threading file is included.
+      '_LIBCPP_HAS_THREAD_API_EXTERNAL',
+      # Ensure that only the forward declarations and type definitions are included
+      # in __external_threading.
+      '_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL',
+      # Enable GNU extensions to get prototypes like ffsl.
+      '_GNU_SOURCE=1',
+    ],
+    'default_configuration': 'evergreen-x64_debug',
+    'configurations': {
+      'evergreen-x64_debug': {
+        'inherit_from': ['debug_base'],
+      },
+      'evergreen-x64_devel': {
+        'inherit_from': ['devel_base'],
+      },
+      'evergreen-x64_qa': {
+        'inherit_from': ['qa_base'],
+      },
+      'evergreen-x64_gold': {
+        'inherit_from': ['gold_base'],
+      },
+    }, # end of configurations
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/shared/gyp_configuration.gypi',
+    '<(DEPTH)/starboard/evergreen/shared/compiler_flags.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/x64/gyp_configuration.py b/src/starboard/evergreen/x64/gyp_configuration.py
new file mode 100644
index 0000000..9c572b0
--- /dev/null
+++ b/src/starboard/evergreen/x64/gyp_configuration.py
@@ -0,0 +1,110 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard evergreen-x64 platform configuration for gyp_cobalt."""
+
+import os.path
+
+from starboard.build import clang as clang_build
+from starboard.evergreen.shared import gyp_configuration as shared_configuration
+from starboard.tools import build
+from starboard.tools import paths
+from starboard.tools.toolchain import ar
+from starboard.tools.toolchain import bash
+from starboard.tools.toolchain import clang
+from starboard.tools.toolchain import clangxx
+from starboard.tools.toolchain import cp
+from starboard.tools.toolchain import evergreen_linker
+from starboard.tools.toolchain import touch
+
+
+class EvergreenX64Configuration(shared_configuration.EvergreenConfiguration):
+  """Starboard Evergreen x64 platform configuration."""
+
+  def __init__(self,
+               platform_name='evergreen-x64',
+               asan_enabled_by_default=False,
+               goma_supports_compiler=True,
+               sabi_json_path=None):
+    # pylint: disable=useless-super-delegation
+    super(EvergreenX64Configuration,
+          self).__init__(platform_name, asan_enabled_by_default,
+                         goma_supports_compiler, sabi_json_path)
+    self.AppendApplicationConfigurationPath(os.path.dirname(__file__))
+    self._host_toolchain = None
+
+  def GetTargetToolchain(self):
+    return self.GetHostToolchain()
+
+  def GetHostToolchain(self):
+    if not self._host_toolchain:
+      if not hasattr(self, 'host_compiler_environment'):
+        self.host_compiler_environment = build.GetHostCompilerEnvironment(
+            clang_build.GetClangSpecification(), False)
+      cc_path = self.host_compiler_environment['CC_host']
+      cxx_path = self.host_compiler_environment['CXX_host']
+
+      # Takes the provided value of CXX_HOST with a prepended 'gomacc' and an
+      # appended 'bin/clang++' and strips them off, leaving us with an absolute
+      # path to the root directory of our toolchain.
+      begin_path_index = cxx_path.find('/')
+      end_path_index = cxx_path.rfind('/', 0, cxx_path.rfind('/')) + 1
+
+      cxx_path_root = cxx_path[begin_path_index:end_path_index]
+
+      self._host_toolchain = [
+          clang.CCompiler(path=cc_path),
+          clang.CxxCompiler(path=cxx_path),
+          clang.AssemblerWithCPreprocessor(path=cc_path),
+          ar.StaticThinLinker(),
+          ar.StaticLinker(),
+          clangxx.ExecutableLinker(path=cxx_path),
+          evergreen_linker.SharedLibraryLinker(
+              path=cxx_path_root, extra_flags=['-m elf_x86_64']),
+          cp.Copy(),
+          touch.Stamp(),
+          bash.Shell(),
+      ]
+    return self._host_toolchain
+
+  def GetTestFilters(self):
+    filters = super(EvergreenX64Configuration, self).GetTestFilters()
+    # Remove the exclusion filter on SbDrmTest.AnySupportedKeySystems.
+    # Generally, children of linux/shared do not support widevine, but children
+    # of linux/x64x11 do, if the content decryption module is present.
+
+    has_cdm = os.path.isfile(
+        os.path.join(paths.REPOSITORY_ROOT, 'third_party', 'cdm', 'cdm',
+                     'include', 'content_decryption_module.h'))
+
+    if not has_cdm:
+      return filters
+
+    for test_filter in filters:
+      if (test_filter.target_name == 'nplb' and
+          test_filter.test_name == 'SbDrmTest.AnySupportedKeySystems'):
+        filters.remove(test_filter)
+    return filters
+
+  def GetVariables(self, configuration):
+    variables = super(EvergreenX64Configuration, self).GetVariables(configuration)
+    variables.update({
+        'include_path_platform_deploy_gypi':
+            'starboard/evergreen/x64/platform_deploy.gypi',
+    })
+    return variables
+
+
+def CreatePlatformConfig():
+  return EvergreenX64Configuration(
+      sabi_json_path='starboard/sabi/x64/sysv/sabi.json')
diff --git a/src/starboard/evergreen/x64/platform_deploy.gypi b/src/starboard/evergreen/x64/platform_deploy.gypi
new file mode 100644
index 0000000..f2524b5
--- /dev/null
+++ b/src/starboard/evergreen/x64/platform_deploy.gypi
@@ -0,0 +1,37 @@
+# Copyright 2020 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'variables': {
+    'deploy_executable_file': '<(target_deploy_dir)/lib/lib<(executable_name).so',
+    'executable_file': '<(PRODUCT_DIR)/lib/lib<(executable_name).so',
+  },
+  'includes': [ '<(DEPTH)/starboard/build/collect_deploy_content.gypi' ],
+  'actions': [
+    {
+      'action_name': 'deploy_executable',
+      'message': 'Strip executable: <(deploy_executable_file)',
+      'inputs': [
+        '<(executable_file)',
+        '<(content_deploy_stamp_file)',
+      ],
+      'outputs': [ '<(deploy_executable_file)' ],
+      'action': [
+        'strip',
+        '-o', '<(deploy_executable_file)',
+        '<(executable_file)',
+      ],
+    },
+  ],
+}
diff --git a/src/starboard/evergreen/x64/starboard_platform.gyp b/src/starboard/evergreen/x64/starboard_platform.gyp
new file mode 100644
index 0000000..8fa33ef
--- /dev/null
+++ b/src/starboard/evergreen/x64/starboard_platform.gyp
@@ -0,0 +1,21 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'includes': [
+    # Note that we are 'includes'ing a 'gyp' file, not a 'gypi' file.  The idea
+    # is that we just want this file to *be* the parent gyp file.
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gyp',
+  ],
+}
diff --git a/src/starboard/evergreen/x64/thread_types_public.h b/src/starboard/evergreen/x64/thread_types_public.h
new file mode 100644
index 0000000..e420a58
--- /dev/null
+++ b/src/starboard/evergreen/x64/thread_types_public.h
@@ -0,0 +1,23 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file was initially generated by starboard/tools/create_derived_build.py,
+// though it may have been modified since its creation.
+
+#ifndef STARBOARD_EVERGREEN_X64_THREAD_TYPES_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X64_THREAD_TYPES_PUBLIC_H_
+
+#include "starboard/shared/pthread/types_public.h"
+
+#endif  // STARBOARD_EVERGREEN_X64_THREAD_TYPES_PUBLIC_H_
diff --git a/src/starboard/evergreen/x86/__init__.py b/src/starboard/evergreen/x86/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/starboard/evergreen/x86/__init__.py
diff --git a/src/starboard/evergreen/x86/atomic_public.h b/src/starboard/evergreen/x86/atomic_public.h
new file mode 100644
index 0000000..9b310a7
--- /dev/null
+++ b/src/starboard/evergreen/x86/atomic_public.h
@@ -0,0 +1,21 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+#ifndef STARBOARD_EVERGREEN_X86_ATOMIC_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X86_ATOMIC_PUBLIC_H_
+
+#include "starboard/atomic.h"
+#include "starboard/shared/gcc/atomic_gcc_public.h"
+
+#endif  // STARBOARD_EVERGREEN_X86_ATOMIC_PUBLIC_H_
diff --git a/src/starboard/evergreen/x86/configuration_public.h b/src/starboard/evergreen/x86/configuration_public.h
new file mode 100644
index 0000000..56b5909
--- /dev/null
+++ b/src/starboard/evergreen/x86/configuration_public.h
@@ -0,0 +1,181 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// The Starboard configuration for x86. Other devices will have
+// specific Starboard implementations.
+
+// Other source files should never include this header directly, but should
+// include the generic "starboard/configuration.h" instead.
+
+#ifndef STARBOARD_EVERGREEN_X86_CONFIGURATION_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X86_CONFIGURATION_PUBLIC_H_
+
+// Configuration parameters that allow the application to make some general
+// compile-time decisions with respect to the the number of cores likely to be
+// available on this platform. For a definitive measure, the application should
+// still call SbSystemGetNumberOfProcessors at runtime.
+
+// Whether the current platform's thread scheduler will automatically balance
+// threads between cores, as opposed to systems where threads will only ever run
+// on the specifically pinned core.
+#define SB_HAS_CROSS_CORE_SCHEDULER 1
+
+// --- System Header Configuration -------------------------------------------
+
+// Any system headers listed here that are not provided by the platform will be
+// emulated in starboard/types.h.
+
+// Whether the current platform provides the standard header stdarg.h.
+#define SB_HAS_STDARG_H 1
+
+// Whether the current platform provides the standard header stdbool.h.
+#define SB_HAS_STDBOOL_H 1
+
+// Whether the current platform provides the standard header stddef.h.
+#define SB_HAS_STDDEF_H 1
+
+// Whether the current platform provides the standard header stdint.h.
+#define SB_HAS_STDINT_H 1
+
+// Whether the current platform provides the standard header inttypes.h.
+#define SB_HAS_INTTYPES_H 1
+
+// Whether the current platform provides the standard header sys/types.h.
+#define SB_HAS_SYS_TYPES_H 0
+
+// Whether the current platform provides the standard header limits.h.
+#define SB_HAS_LIMITS_H 1
+
+// Whether the current platform provides the standard header float.h.
+#define SB_HAS_FLOAT_H 1
+
+// Whether the current platform provides ssize_t.
+#define SB_HAS_SSIZE_T 0
+
+// Type detection for wchar_t.
+#if defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fffffff || __WCHAR_MAX__ == 0xffffffff)
+#define SB_IS_WCHAR_T_UTF32 1
+#elif defined(__WCHAR_MAX__) && \
+    (__WCHAR_MAX__ == 0x7fff || __WCHAR_MAX__ == 0xffff)
+#define SB_IS_WCHAR_T_UTF16 1
+#endif
+
+// Chrome only defines these two if ARMEL or MIPSEL are defined.
+#if defined(__ARMEL__)
+// Chrome has an exclusion for iOS here, we should too when we support iOS.
+#define SB_IS_WCHAR_T_UNSIGNED 1
+#elif defined(__MIPSEL__)
+#define SB_IS_WCHAR_T_SIGNED 1
+#endif
+
+// --- Compiler Configuration ------------------------------------------------
+
+// The platform's annotation for forcing a C function to be inlined.
+#define SB_C_FORCE_INLINE __inline__ __attribute__((always_inline))
+
+// The platform's annotation for marking a C function as suggested to be
+// inlined.
+#define SB_C_INLINE inline
+
+// The platform's annotation for marking a C function as forcibly not
+// inlined.
+#define SB_C_NOINLINE __attribute__((noinline))
+
+// The platform's annotation for marking a symbol as exported outside of the
+// current shared library.
+#define SB_EXPORT_PLATFORM __attribute__((visibility("default")))
+
+// The platform's annotation for marking a symbol as imported from outside of
+// the current linking unit.
+#define SB_IMPORT_PLATFORM
+
+// --- Extensions Configuration ----------------------------------------------
+
+// Do not use <unordered_map> and <unordered_set> for the hash table types.
+#define SB_HAS_STD_UNORDERED_HASH 0
+
+// GCC/Clang doesn't define a long long hash function, except for Android and
+// Game consoles.
+#define SB_HAS_LONG_LONG_HASH 0
+
+// GCC/Clang doesn't define a string hash function, except for Game Consoles.
+#define SB_HAS_STRING_HASH 0
+
+// Desktop Linux needs a using statement for the hash functions.
+#define SB_HAS_HASH_USING 0
+
+// Set this to 1 if hash functions for custom types can be defined as a
+// hash_value() function. Otherwise, they need to be placed inside a
+// partially-specified hash struct template with an operator().
+#define SB_HAS_HASH_VALUE 0
+
+// Set this to 1 if use of hash_map or hash_set causes a deprecation warning
+// (which then breaks the build).
+#define SB_HAS_HASH_WARNING 1
+
+// The location to include hash_map on this platform.
+#define SB_HASH_MAP_INCLUDE <ext/hash_map>
+
+// C++'s hash_map and hash_set are often found in different namespaces depending
+// on the compiler.
+#define SB_HASH_NAMESPACE __gnu_cxx
+
+// The location to include hash_set on this platform.
+#define SB_HASH_SET_INCLUDE <ext/hash_set>
+
+// Define this to how this platform copies varargs blocks.
+#define SB_VA_COPY(dest, source) va_copy(dest, source)
+
+// --- Graphics Configuration ------------------------------------------------
+
+// Specifies whether this platform supports a performant accelerated blitter
+// API. The basic requirement is a scaled, clipped, alpha-blended blit.
+#define SB_HAS_BLITTER 0
+
+// Indicates whether or not the given platform supports bilinear filtering.
+// This can be checked to enable/disable renderer tests that verify that this is
+// working properly.
+#define SB_HAS_BILINEAR_FILTERING_SUPPORT 1
+
+// Indicates whether or not the given platform supports rendering of NV12
+// textures. These textures typically originate from video decoders.
+#define SB_HAS_NV12_TEXTURE_SUPPORT 1
+
+// --- Decoder-only Params ---
+
+// --- Memory Configuration --------------------------------------------------
+
+// Whether this platform can map executable memory. Implies SB_HAS_MMAP. This is
+// required for platforms that want to JIT.
+#define SB_CAN_MAP_EXECUTABLE_MEMORY 1
+
+// --- Network Configuration -------------------------------------------------
+
+// Specifies whether this platform supports pipe.
+#define SB_HAS_PIPE 1
+
+// --- Thread Configuration --------------------------------------------------
+
+// --- Tuneable Parameters ---------------------------------------------------
+
+// --- User Configuration ----------------------------------------------------
+
+// --- Platform Specific Audits ----------------------------------------------
+
+#if !defined(__GNUC__)
+#error "evergreen-x86 builds need a GCC-like compiler (for the moment)."
+#endif
+
+#endif  // STARBOARD_EVERGREEN_X86_CONFIGURATION_PUBLIC_H_
diff --git a/src/starboard/evergreen/x86/gyp_configuration.gypi b/src/starboard/evergreen/x86/gyp_configuration.gypi
new file mode 100644
index 0000000..f8a868f
--- /dev/null
+++ b/src/starboard/evergreen/x86/gyp_configuration.gypi
@@ -0,0 +1,58 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This file was initially generated by starboard/tools/create_derived_build.py,
+# though it may have been modified since its creation.
+
+{
+  'variables': {
+    'yasm_exists': 1,
+    'sb_target_platform': 'evergreen-x86',
+
+    'compiler_flags': [
+      '-isystem<(cobalt_repo_root)/third_party/musl/arch/i386',
+    ],
+  },
+
+  'target_defaults': {
+    'defines' : [
+      # Ensure that the Starboardized __external_threading file is included.
+      '_LIBCPP_HAS_THREAD_API_EXTERNAL',
+      # Ensure that only the forward declarations and type definitions are included
+      # in __external_threading.
+      '_LIBCPP_HAS_THREAD_LIBRARY_EXTERNAL',
+      # Enable GNU extensions to get prototypes like ffsl.
+      '_GNU_SOURCE=1',
+    ],
+    'default_configuration': 'evergreen-x86_debug',
+    'configurations': {
+      'evergreen-x86_debug': {
+        'inherit_from': ['debug_base'],
+      },
+      'evergreen-x86_devel': {
+        'inherit_from': ['devel_base'],
+      },
+      'evergreen-x86_qa': {
+        'inherit_from': ['qa_base'],
+      },
+      'evergreen-x86_gold': {
+        'inherit_from': ['gold_base'],
+      },
+    }, # end of configurations
+  },
+  'includes': [
+    '<(DEPTH)/starboard/evergreen/shared/gyp_configuration.gypi',
+    '<(DEPTH)/starboard/evergreen/shared/compiler_flags.gypi',
+  ],
+}
diff --git a/src/starboard/evergreen/x86/gyp_configuration.py b/src/starboard/evergreen/x86/gyp_configuration.py
new file mode 100644
index 0000000..a67484c
--- /dev/null
+++ b/src/starboard/evergreen/x86/gyp_configuration.py
@@ -0,0 +1,101 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Starboard evergreen-x86 platform configuration for gyp_cobalt."""
+
+import os.path
+
+from starboard.build import clang as clang_build
+from starboard.evergreen.shared import gyp_configuration as shared_configuration
+from starboard.tools import build
+from starboard.tools import paths
+from starboard.tools.toolchain import ar
+from starboard.tools.toolchain import bash
+from starboard.tools.toolchain import clang
+from starboard.tools.toolchain import clangxx
+from starboard.tools.toolchain import cp
+from starboard.tools.toolchain import evergreen_linker
+from starboard.tools.toolchain import touch
+
+
+class EvergreenX86Configuration(shared_configuration.EvergreenConfiguration):
+  """Starboard Evergreen x86 platform configuration."""
+
+  def __init__(self,
+               platform_name='evergreen-x86',
+               asan_enabled_by_default=False,
+               goma_supports_compiler=True,
+               sabi_json_path=None):
+    # pylint: disable=useless-super-delegation
+    super(EvergreenX86Configuration,
+          self).__init__(platform_name, asan_enabled_by_default,
+                         goma_supports_compiler, sabi_json_path)
+    self._host_toolchain = None
+
+  def GetTargetToolchain(self):
+    return self.GetHostToolchain()
+
+  def GetHostToolchain(self):
+    if not self._host_toolchain:
+      if not hasattr(self, 'host_compiler_environment'):
+        self.host_compiler_environment = build.GetHostCompilerEnvironment(
+            clang_build.GetClangSpecification(), False)
+      cc_path = self.host_compiler_environment['CC_host']
+      cxx_path = self.host_compiler_environment['CXX_host']
+
+      # Takes the provided value of CXX_HOST with a prepended 'gomacc' and an
+      # appended 'bin/clang++' and strips them off, leaving us with an absolute
+      # path to the root directory of our toolchain.
+      begin_path_index = cxx_path.find('/')
+      end_path_index = cxx_path.rfind('/', 0, cxx_path.rfind('/')) + 1
+
+      cxx_path_root = cxx_path[begin_path_index:end_path_index]
+
+      self._host_toolchain = [
+          clang.CCompiler(path=cc_path),
+          clang.CxxCompiler(path=cxx_path),
+          clang.AssemblerWithCPreprocessor(path=cc_path),
+          ar.StaticThinLinker(),
+          ar.StaticLinker(),
+          clangxx.ExecutableLinker(path=cxx_path),
+          evergreen_linker.SharedLibraryLinker(
+              path=cxx_path_root, extra_flags=['-m elf_i686']),
+          cp.Copy(),
+          touch.Stamp(),
+          bash.Shell(),
+      ]
+    return self._host_toolchain
+
+  def GetTestFilters(self):
+    filters = super(EvergreenX86Configuration, self).GetTestFilters()
+    # Remove the exclusion filter on SbDrmTest.AnySupportedKeySystems.
+    # Generally, children of linux/shared do not support widevine, but children
+    # of linux/x64x11 do, if the content decryption module is present.
+
+    has_cdm = os.path.isfile(
+        os.path.join(paths.REPOSITORY_ROOT, 'third_party', 'cdm', 'cdm',
+                     'include', 'content_decryption_module.h'))
+
+    if not has_cdm:
+      return filters
+
+    for test_filter in filters:
+      if (test_filter.target_name == 'nplb' and
+          test_filter.test_name == 'SbDrmTest.AnySupportedKeySystems'):
+        filters.remove(test_filter)
+    return filters
+
+
+def CreatePlatformConfig():
+  return EvergreenX86Configuration(
+      sabi_json_path='starboard/sabi/x86/sabi.json')
diff --git a/src/starboard/evergreen/x86/starboard_platform.gyp b/src/starboard/evergreen/x86/starboard_platform.gyp
new file mode 100644
index 0000000..8fa33ef
--- /dev/null
+++ b/src/starboard/evergreen/x86/starboard_platform.gyp
@@ -0,0 +1,21 @@
+# Copyright 2019 The Cobalt Authors. All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+{
+  'includes': [
+    # Note that we are 'includes'ing a 'gyp' file, not a 'gypi' file.  The idea
+    # is that we just want this file to *be* the parent gyp file.
+    '<(DEPTH)/starboard/evergreen/shared/starboard_platform.gyp',
+  ],
+}
diff --git a/src/starboard/evergreen/x86/thread_types_public.h b/src/starboard/evergreen/x86/thread_types_public.h
new file mode 100644
index 0000000..261f06a
--- /dev/null
+++ b/src/starboard/evergreen/x86/thread_types_public.h
@@ -0,0 +1,23 @@
+// Copyright 2019 The Cobalt Authors. All Rights Reserved.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+// This file was initially generated by starboard/tools/create_derived_build.py,
+// though it may have been modified since its creation.
+
+#ifndef STARBOARD_EVERGREEN_X86_THREAD_TYPES_PUBLIC_H_
+#define STARBOARD_EVERGREEN_X86_THREAD_TYPES_PUBLIC_H_
+
+#include "starboard/shared/pthread/types_public.h"
+
+#endif  // STARBOARD_EVERGREEN_X86_THREAD_TYPES_PUBLIC_H_