Create event loop for Fuchsia.

Non-functioning implementation of the wpa_supplicant event loop for
Fuchsia.

Accidentally submitted and reverted.
Previous-Change-Id: I7260f15547d28133d33aaa9467b0eb6e920ee79d

Change-Id: I68064bea8e539ff5575ea5d3ace05bc7265ce991
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" ]
 }