diff --git a/BUILD.gn b/BUILD.gn
index f41c941..b8f084b 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -3,66 +3,43 @@
 # found in the LICENSE file.
 
 # Top level BUILD file for gn samples
+assert(is_fuchsia)
 
-if (is_fuchsia) {
-  # When building Fuchsia packages, copy all the .far files to the root_out_dir
-  copy("default") {
-    deps = [
-      "//cipd",
-      "//src/bouncing_ball",
-      "//src/calculator",
-      "//src/hello_world",
-      "//src/rot13",
-    ]
-    sources = [
-      "${target_gen_dir}/src/bouncing_ball/bouncing_ball/bouncing_ball.far",
-      "${target_gen_dir}/src/calculator/calculator-example/calculator-example.far",
-      "${target_gen_dir}/src/hello_world/hello_world/hello_world.far",
-      "${target_gen_dir}/src/rot13/rot13-example/rot13-example.far",
-    ]
-    outputs = [ "${root_out_dir}/{{source_file_part}}" ]
-  }
+import("//third_party/fuchsia-sdk/build/test_targets.gni")
 
-  copy("tests") {
-    testonly = true
-    deps = [
-      "//src/calculator:tests",
-      "//src/hello_world:tests",
-      "//src/rot13:tests",
-    ]
-    sources = [
-      "${target_gen_dir}/src/hello_world/hello_world_test/hello_world_test.far",
-      "${target_gen_dir}/src/calculator/engine/engine_unittest/engine_unittest.far",
-      "${target_gen_dir}/src/rot13/server/rot13_unittests/rot13_unittests.far",
-    ]
-    outputs = [ "${root_out_dir}/{{source_file_part}}" ]
-  }
-} else {
-  group("default") {
-    deps = [ "//src/hello_world" ]
-  }
-
-  group("tests") {
-    testonly = true
-    deps = [ "//src/hello_world:tests" ]
-  } 
+# Simplify deployment to a package server by building and copying the sample
+# `.far` packages to the top-level build directory.
+copy("default") {
+  deps = [
+    "//cipd",
+    "//src/bouncing_ball",
+    "//src/calculator",
+    "//src/hello_world",
+    "//src/rot13",
+  ]
+  sources = [
+    "${target_gen_dir}/src/bouncing_ball/bouncing_ball/bouncing_ball.far",
+    "${target_gen_dir}/src/calculator/calculator-example/calculator-example.far",
+    "${target_gen_dir}/src/hello_world/hello_world/hello_world.far",
+    "${target_gen_dir}/src/rot13/rot13-example/rot13-example.far",
+  ]
+  outputs = [ "${root_out_dir}/{{source_file_part}}" ]
 }
 
-# build all the targets exposed by the Fuchsia sdk.
-if (is_fuchsia) {
-  import("//third_party/fuchsia-sdk/build/test_targets.gni")
-  fuchsia_sdk_test_targets("all_sdk_targets") {
-  }
-}
-
-# A generated file that lists all of the test files.
-generated_file("all_host_tests") {
+copy("tests") {
   testonly = true
   deps = [
-    "//:default",
-    "//:tests",
+    "//src/calculator:tests",
+    "//src/hello_world:tests",
+    "//src/rot13:tests",
   ]
-
-  outputs = [ "$root_build_dir/all_host_tests.txt" ]
-  data_keys = [ "host_test_name" ]
+  sources = [
+    "${target_gen_dir}/src/hello_world/hello_world_test/hello_world_test.far",
+    "${target_gen_dir}/src/calculator/engine/engine_unittest/engine_unittest.far",
+    "${target_gen_dir}/src/rot13/server/rot13_unittests/rot13_unittests.far",
+  ]
+  outputs = [ "${root_out_dir}/{{source_file_part}}" ]
 }
+
+# Build all the targets exposed by the Fuchsia SDK.
+fuchsia_sdk_test_targets("all_sdk_targets") { }
diff --git a/build/testing.gni b/build/testing.gni
deleted file mode 100644
index 0937415..0000000
--- a/build/testing.gni
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2019 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-# ==============================================================================
-# TEST SETUP
-# ==============================================================================
-
-# Define a test as an executable with the "testonly" flag
-# set.
-# Variable:
-template("test") {
-  executable(target_name + "_exe") {
-    forward_variables_from(invoker, "*")
-    if (!defined(deps)) {
-      deps = []
-    }
-
-    testonly = true
-    metadata = {
-      if (current_toolchain == default_toolchain) {
-        host_test_name = [ "./" + target_name + "_exe" ]
-      } else {
-        host_test_name = [ get_label_info(current_toolchain, "name") + "/" +
-                           target_name + "_exe" ]
-      }
-    }
-  }
-  group(target_name) {
-    testonly = true
-    deps = [
-      ":" + target_name + "_exe($host_toolchain)",
-    ]
-  }
-}
-
-# Test defaults.
-set_defaults("test") {
-  configs = default_executable_configs
-}
diff --git a/scripts/build.sh b/scripts/build.sh
index e46a15b..3056655 100755
--- a/scripts/build.sh
+++ b/scripts/build.sh
@@ -73,35 +73,16 @@
   cleanup
 fi
 
-# Detect if we have a valid C++11 compiler installed, this is needed to run the local tests on this build host
 # The Fuchsia binaries are built by the locally downloaded clang toolchain which includes libc++ support
-if /bin/echo -e '#include <string>\n#include <iostream>\nint main(int argc, char *argv[]) { std::string hello = "world"; std::cout << hello; }' | c++ -std=c++11 -x c++ - -o /dev/null >/dev/null 2>&1; then
-  LOCAL_TESTS=true
-else
-  echo "**** Failed to find local C++ compiler, will not compile the local non-Fuchsia tests ****"
-  LOCAL_TESTS=false
-fi
-
 echo "Building for Fuchsia on arm64..."
 "${DEPOT_TOOLS_DIR}/gn" gen "${OUT_DIR}/arm64" "--args=target_os=\"fuchsia\" target_cpu=\"arm64\" is_debug=$DEBUG_FLAG"
 "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/arm64" default
-if "${LOCAL_TESTS}"; then
-  "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/arm64" tests
-fi
+"${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/arm64" tests
 
 echo "Building for Fuchsia on x64..."
 "${DEPOT_TOOLS_DIR}/gn" gen "${OUT_DIR}/x64"   "--args=target_os=\"fuchsia\" target_cpu=\"x64\" is_debug=$DEBUG_FLAG"
 "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/x64" default
-if "${LOCAL_TESTS}"; then
-  "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/x64" tests
-fi
-
-echo "Building for linux on x64..."
-"${DEPOT_TOOLS_DIR}/gn" gen "${OUT_DIR}/linux" "--args=target_os=\"linux\" target_cpu=\"x64\" is_debug=$DEBUG_FLAG"
-if "${LOCAL_TESTS}"; then
-  "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/linux" default
-  "${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/linux" tests
-fi
+"${DEPOT_TOOLS_DIR}/ninja" -C "${OUT_DIR}/x64" tests
 
 echo
 echo "Samples built successfully!"
diff --git a/scripts/setup-and-test.sh b/scripts/setup-and-test.sh
index 391ad1d..a34fdbc 100755
--- a/scripts/setup-and-test.sh
+++ b/scripts/setup-and-test.sh
@@ -23,10 +23,8 @@
 "${REPO_ROOT}/scripts/build.sh"
 "${REPO_ROOT}/tests/build-all-sdk-targets.sh"
 "${REPO_ROOT}/tests/run-far-tests.sh"
-"${REPO_ROOT}/tests/run-host-tests.sh"
 
 # Build again in release mode.
 "${REPO_ROOT}/scripts/build.sh" --release
 "${REPO_ROOT}/tests/build-all-sdk-targets.sh" --release
 "${REPO_ROOT}/tests/run-far-tests.sh" --release
-"${REPO_ROOT}/tests/run-host-tests.sh" --release
diff --git a/src/hello_world/BUILD.gn b/src/hello_world/BUILD.gn
index d46ceee..7c7ea8c 100644
--- a/src/hello_world/BUILD.gn
+++ b/src/hello_world/BUILD.gn
@@ -2,25 +2,24 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//third_party/fuchsia-sdk/build/component.gni")
+import("//third_party/fuchsia-sdk/build/package.gni")
+import("//third_party/fuchsia-sdk/build/test.gni")
+
 # default group
 group("hello_world") {
-  deps = [ ":hello_bin" ]
-  if (is_fuchsia) {
-    public_deps = [
-      ":hello_world_package",
-    ]
-  }
+  public_deps = [
+    ":hello_world_package",
+  ]
 }
 
 # tests group
 group("tests") {
   testonly = true
-  if (is_fuchsia) {
-    public_deps = [
-      ":hello_world_test",
-      ":hello_world_test_package",
-    ]
-  }
+  public_deps = [
+    ":hello_world_test",
+    ":hello_world_test_package",
+  ]
 }
 
 # Executable using both a static and shared lib.
@@ -48,29 +47,24 @@
   ]
 }
 
-if (is_fuchsia) {
-  import("//third_party/fuchsia-sdk/build/component.gni")
-  import("//third_party/fuchsia-sdk/build/package.gni")
-  import("//third_party/fuchsia-sdk/build/test.gni")
+# Fuchsia components and packages
+fuchsia_component("component") {
+  manifest_output_name = "hello_world"
+  manifest = "meta/hello_world.cml"
+  data_deps = [ ":hello_bin" ]
+}
 
-  fuchsia_component("component") {
-    manifest_output_name = "hello_world"
-    manifest = "meta/hello_world.cml"
-    data_deps = [ ":hello_bin" ]
-  }
+fuchsia_package("hello_world_package") {
+  package_name = "hello_world"
+  deps = [ ":component" ]
+}
 
-  fuchsia_package("hello_world_package") {
-    package_name = "hello_world"
-    deps = [ ":component" ]
-  }
+fuchsia_test("hello_world_test") {
+  manifest = "meta/hello_world_test.cml"
 
-  fuchsia_test("hello_world_test") {
-    manifest = "meta/hello_world_test.cml"
-
-    sources = [ "test/hello_test.cc" ]
-    deps = [
-      "//third_party/googletest:gtest",
-      "//third_party/googletest:gtest_main",
-    ]
-  }
+  sources = [ "test/hello_test.cc" ]
+  deps = [
+    "//third_party/googletest:gtest",
+    "//third_party/googletest:gtest_main",
+  ]
 }
diff --git a/src/rot13/server/BUILD.gn b/src/rot13/server/BUILD.gn
index 6180991..b12a61c 100644
--- a/src/rot13/server/BUILD.gn
+++ b/src/rot13/server/BUILD.gn
@@ -2,15 +2,17 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+import("//third_party/fuchsia-sdk/build/component.gni")
+import("//third_party/fuchsia-sdk/build/package.gni")
+import("//third_party/fuchsia-sdk/build/test.gni")
+
 #tests group
 group("tests") {
   testonly = true
-  if (is_fuchsia) {
-    public_deps = [
-      ":rot13_unittests",
-      ":rot13_unittests_package",
-    ]
-  }
+  public_deps = [
+    ":rot13_unittests",
+    ":rot13_unittests_package",
+  ]
 }
 
 # Keep the app in a lib component so it can be reused by tests
@@ -48,33 +50,28 @@
   ]
 }
 
-if (is_fuchsia) {
-  import("//third_party/fuchsia-sdk/build/component.gni")
-  import("//third_party/fuchsia-sdk/build/package.gni")
-  import("//third_party/fuchsia-sdk/build/test.gni")
+# Fuchsia components and packages
+fuchsia_component("server_component") {
+  manifest = "meta/rot13_server.cml"
+  data_deps = [
+    ":rot13_server_bin",
+  ]
+}
 
-  fuchsia_component("server_component") {
-    manifest = "meta/rot13_server.cml"
-    data_deps = [
-      ":rot13_server_bin",
-    ]
-  }
+fuchsia_package("rot13_server") {
+  deps = [
+    ":server_component",
+  ]
+}
 
-  fuchsia_package("rot13_server") {
-    deps = [
-      ":server_component",
-    ]
-  }
-
-  fuchsia_test("rot13_unittests") {
-    manifest = "meta/rot13_unittests.cml"
-    sources = [
-      "rot13_unittests.cc",
-    ]
-    deps = [
-      ":impl_lib",
-      "//third_party/googletest:gtest",
-      "//third_party/googletest:gtest_main",
-    ]
-  }
+fuchsia_test("rot13_unittests") {
+  manifest = "meta/rot13_unittests.cml"
+  sources = [
+    "rot13_unittests.cc",
+  ]
+  deps = [
+    ":impl_lib",
+    "//third_party/googletest:gtest",
+    "//third_party/googletest:gtest_main",
+  ]
 }
diff --git a/tests/run-host-tests.sh b/tests/run-host-tests.sh
deleted file mode 100755
index 48ed526..0000000
--- a/tests/run-host-tests.sh
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/bin/bash
-# Copyright 2019 The Fuchsia Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-set -eu # Error checking
-err_print() {
-  echo "Error on line $1"
-}
-trap 'err_print $LINENO' ERR
-DEBUG_LINE() {
-    "$@"
-}
-
-TEST_SRC_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
-
-# Common functions.
-# shellcheck disable=SC1090
-source "${TEST_SRC_DIR}/../scripts/common.sh" || exit $?
-REPO_ROOT=$(get_gn_root) # finds path to REPO_ROOT
-
-ROOT_OUT_DIR="out"
-
-function usage {
-  echo "Usage: $0"
-  echo "  [--release]"
-  echo "    Uses the out-release/ directory to run tests."
-}
-
-# Parse command line
-for i in "$@"
-do
-case $i in
-    --release)
-    ROOT_OUT_DIR="${ROOT_OUT_DIR}-release"
-    ;;
-    *)
-    # unknown option
-    usage
-    exit 1
-    ;;
-esac
-done
-
-echo
-echo "==== Run host tests ===="
-for dir in "${REPO_ROOT}/${ROOT_OUT_DIR}"/*; do
-  [[ -e "$dir" ]] || break # Handle case with empty out directory
-
-  while IFS= read -r testname
-  do
-    "$dir/$testname"
-  done < "$dir/all_host_tests.txt"
-done
-
-echo
-echo "Success!"
