diff --git a/src/utils/eloop_fuchsia.cc b/src/utils/eloop_fuchsia.cc
new file mode 100644
index 0000000..a938f26
--- /dev/null
+++ b/src/utils/eloop_fuchsia.cc
@@ -0,0 +1,125 @@
+// Copyright 2016 The Fuchsia Authors. All rights reserved.
+// This software may be distributed under the terms of the BSD license.
+// See README for more details.
+
+extern "C" {
+// Hostap code requires this be the first file included
+#include "includes.h"
+
+#include "eloop.h"
+} // extern "C"
+
+extern "C" int eloop_init() { return 0; }
+
+extern "C" int eloop_register_read_sock(int sock, eloop_sock_handler handler,
+                                        void *eloop_data, void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" void eloop_unregister_read_sock(int sock) {
+  // Not implemented.
+}
+
+extern "C" int eloop_register_sock(int sock, eloop_event_type type,
+                                   eloop_sock_handler handler, void *eloop_data,
+                                   void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" void eloop_unregister_sock(int sock, eloop_event_type type) {
+  // Not implemented.
+}
+
+extern "C" int eloop_register_event(void *event, size_t event_size,
+                                    eloop_event_handler handler,
+                                    void *eloop_data, void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" void eloop_unregister_event(void *event, size_t event_size) {
+  // Not implemented.
+}
+
+extern "C" int eloop_register_timeout(unsigned int secs, unsigned int usecs,
+                                      eloop_timeout_handler handler,
+                                      void *eloop_data, void *user_data) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_cancel_timeout(eloop_timeout_handler handler,
+                                    void *eloop_data, void *user_data) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_cancel_timeout_one(eloop_timeout_handler handler,
+                                        void *eloop_data, void *user_data,
+                                        struct os_reltime *remaining) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_is_timeout_registered(eloop_timeout_handler handler,
+                                           void *eloop_data, void *user_data) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_deplete_timeout(unsigned int req_secs,
+                                     unsigned int req_usecs,
+                                     eloop_timeout_handler handler,
+                                     void *eloop_data, void *user_data) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_replenish_timeout(unsigned int req_secs,
+                                       unsigned int req_usecs,
+                                       eloop_timeout_handler handler,
+                                       void *eloop_data, void *user_data) {
+  // TODO(alangardner): Implement
+  return -1;
+}
+
+extern "C" int eloop_register_signal(int sig, eloop_signal_handler handler,
+                                     void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" int eloop_register_signal_terminate(eloop_signal_handler handler,
+                                               void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" int eloop_register_signal_reconfig(eloop_signal_handler handler,
+                                              void *user_data) {
+  // Not implemented.
+  return -1;
+}
+
+extern "C" void eloop_run() {
+  // TODO(alangardner): Implement
+}
+
+extern "C" void eloop_terminate() {
+  // TODO(alangardner): Implement
+}
+
+extern "C" void eloop_destroy() {
+  // TODO(alangardner): Implement
+}
+
+extern "C" int eloop_terminated() {
+  // TODO(alangardner): Implement
+  return 1;
+}
+
+extern "C" void eloop_wait_for_read_sock(int sock) {
+  // Not implemented.
+}
diff --git a/wpa_supplicant/BUILD.gn b/wpa_supplicant/BUILD.gn
index 286a015..b28e87f 100644
--- a/wpa_supplicant/BUILD.gn
+++ b/wpa_supplicant/BUILD.gn
@@ -6,6 +6,49 @@
 # See README for more details.
 
 executable("wpa_supplicant") {
+
+  configs += [ ":wpa_supplicant_private" ]
+  configs -= [ "//build/config:default_warnings" ]
+
+  deps = [
+    ":wpa_supplicant_original",
+    ":wpa_supplicant_fuchsia",
+  ]
+
+}
+
+config("wpa_supplicant_private") {
+  visibility = [ ":*" ]
+
+  include_dirs = [
+    "../src",
+    "../src/utils",
+  ]
+
+  cflags = [
+    "-MMD",
+    "-O2",
+    "-g",
+    "-Wall",
+    "-Wextra",
+    "-Wno-unused-function",
+    "-Wno-unused-parameter",
+  ]
+
+  defines = [
+    "CONFIG_BACKEND_FILE",
+    "CONFIG_CRYPTO_INTERNAL",
+    "CONFIG_DRIVER_NONE",
+    "CONFIG_NO_PBKDF2",
+    "CONFIG_NO_CONFIG_BLOBS",
+    "CONFIG_NO_SCAN_PROCESSING",
+    "CONFIG_NO_WPA",
+    "CONFIG_NO_ROAMING",
+    "CONFIG_SHA256",
+  ]
+}
+
+source_set("wpa_supplicant_original") {
   sources = [
     "../src/common/ieee802_11_common.c",
     "../src/common/hw_features_common.c",
@@ -27,8 +70,6 @@
     "../src/utils/common.c",
     "../src/utils/wpa_debug.c",
     "../src/utils/wpabuf.c",
-    "../src/utils/os_fuchsia.c",
-    "../src/utils/eloop.c",
     "config.c",
     "notify.c",
     "bss.c",
@@ -40,33 +81,17 @@
     "blacklist.c",
     "wpas_glue.c",
     "scan.c",
+  ]
+
+  configs += [ ":wpa_supplicant_private" ]
+}
+
+source_set("wpa_supplicant_fuchsia") {
+  sources = [
+    "../src/utils/eloop_fuchsia.cc",
+    "../src/utils/os_fuchsia.c",
     "main_fuchsia.c",
   ]
 
-  include_dirs = [
-    "../src",
-    "../src/utils",
-    ".",
-  ]
-
-  configs -= [ "//build/config:default_warnings" ]
-
-  cflags = [
-    "-MMD",
-    "-O2",
-    "-g",
-    "-Wall",
-    "-Wextra",
-    "-Wno-unused-function",
-    "-Wno-unused-parameter",
-    "-DCONFIG_BACKEND_FILE",
-    "-DCONFIG_CRYPTO_INTERNAL",
-    "-DCONFIG_DRIVER_NONE",
-    "-DCONFIG_NO_PBKDF2",
-    "-DCONFIG_NO_CONFIG_BLOBS",
-    "-DCONFIG_NO_SCAN_PROCESSING",
-    "-DCONFIG_NO_WPA",
-    "-DCONFIG_NO_ROAMING",
-    "-DCONFIG_SHA256",
-  ]
+  configs += [ ":wpa_supplicant_private" ]
 }
