[gn] changes for fuchsia (#5649)

src/ncp/BUILD.gn: Added new targets

spinel/BUILD.gn: Added configs to propagate the flags to dependent
  targets

BUILD.gn: Updated top level BUILD.gn to include ncp targets

radio_spinel_impl.hpp: Removed compiler error for unused variable

mbedtls/BUILD.gn: Added a missing src file, added compiler flag to
  ignore conversion as there is implicit unsigned int to unsigned char
  conversion in ctr_drbg.c and ecp.c
diff --git a/BUILD.gn b/BUILD.gn
index 15399a2..1d2ff99 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -102,6 +102,10 @@
 
 if (current_os == "fuchsia") {
   group("lib-ot-core") {
-    public_deps = [ ":libopenthread-ftd" ]
+    public_deps = [
+      ":libopenthread-ftd",
+      "src/core:libopenthread-ftd",
+      "src/ncp:libopenthread-ncp-ftd",
+    ]
   }
 }
diff --git a/src/lib/spinel/BUILD.gn b/src/lib/spinel/BUILD.gn
index e3a010a..0747f91 100644
--- a/src/lib/spinel/BUILD.gn
+++ b/src/lib/spinel/BUILD.gn
@@ -51,6 +51,14 @@
   include_dirs = [ ".." ]
 }
 
+config("spinel_config_openthread_message_enable") {
+  defines = [ "OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1" ]
+}
+
+config("spinel_config_openthread_message_disable") {
+  defines = [ "OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=0" ]
+}
+
 source_set("spinel-api") {
   public = [ "spinel.h" ]
   public_configs = [ ":spinel_config" ]
@@ -62,7 +70,7 @@
     ":spinel-api",
     "../../core:libopenthread_core_headers",
   ]
-  defines = [ "OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=1" ]
+  public_configs = [ ":spinel_config_openthread_message_enable" ]
 }
 
 static_library("libopenthread-spinel-rcp") {
@@ -71,5 +79,5 @@
     ":spinel-api",
     "../../core:libopenthread_core_headers",
   ]
-  defines = [ "OPENTHREAD_SPINEL_CONFIG_OPENTHREAD_MESSAGE_ENABLE=0" ]
+  public_configs = [ ":spinel_config_openthread_message_disable" ]
 }
diff --git a/src/lib/spinel/radio_spinel_impl.hpp b/src/lib/spinel/radio_spinel_impl.hpp
index 837ec6d..be5c201 100644
--- a/src/lib/spinel/radio_spinel_impl.hpp
+++ b/src/lib/spinel/radio_spinel_impl.hpp
@@ -360,6 +360,10 @@
     {
         otRadioCaps missingCaps = (mRadioCaps & kRequiredRadioCaps) ^ kRequiredRadioCaps;
 
+        // missingCaps may be an unused variable when otLogCritPlat is blank
+        // avoid compiler warning in that case
+        OT_UNUSED_VARIABLE(missingCaps);
+
         otLogCritPlat("RCP is missing required capabilities: %s%s%s%s%s",
                       (missingCaps & OT_RADIO_CAPS_ACK_TIMEOUT) ? "ack-timeout " : "",
                       (missingCaps & OT_RADIO_CAPS_TRANSMIT_RETRIES) ? "tx-retries " : "",
diff --git a/src/ncp/BUILD.gn b/src/ncp/BUILD.gn
new file mode 100644
index 0000000..5e25ecc
--- /dev/null
+++ b/src/ncp/BUILD.gn
@@ -0,0 +1,79 @@
+#  Copyright (c) 2020, The OpenThread Authors.
+#  All rights reserved.
+#
+#  Redistribution and use in source and binary forms, with or without
+#  modification, are permitted provided that the following conditions are met:
+#  1. Redistributions of source code must retain the above copyright
+#     notice, this list of conditions and the following disclaimer.
+#  2. Redistributions in binary form must reproduce the above copyright
+#     notice, this list of conditions and the following disclaimer in the
+#     documentation and/or other materials provided with the distribution.
+#  3. Neither the name of the copyright holder nor the
+#     names of its contributors may be used to endorse or promote products
+#     derived from this software without specific prior written permission.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+#  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+#  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+#  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+#  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#  POSSIBILITY OF SUCH DAMAGE.
+#
+
+import("../../etc/gn/openthread.gni")
+
+openthread_ncp_sources = [
+  "changed_props_set.cpp",
+  "changed_props_set.hpp",
+  "example_vendor_hook.cpp",
+  "ncp_base.cpp",
+  "ncp_base.hpp",
+  "ncp_base_dispatcher.cpp",
+  "ncp_base_ftd.cpp",
+  "ncp_base_mtd.cpp",
+  "ncp_base_radio.cpp",
+  "ncp_config.h",
+  "ncp_spi.cpp",
+  "ncp_spi.hpp",
+  "ncp_uart.cpp",
+  "ncp_uart.hpp",
+]
+
+config("ncp_config") {
+  include_dirs = [ ".." ]
+}
+
+static_library("libopenthread-ncp-ftd") {
+  sources = openthread_ncp_sources
+  public_deps = [
+    "../core:libopenthread-ftd",
+    "../lib/spinel:libopenthread-spinel-ncp",
+  ]
+  public_configs = [ ":ncp_config" ]
+  visibility = [ "../../*" ]
+}
+
+static_library("libopenthread-ncp-mtd") {
+  sources = openthread_ncp_sources
+  public_deps = [
+    "../core:libopenthread-mtd",
+    "../lib/spinel:libopenthread-spinel-ncp",
+  ]
+  public_configs = [ ":ncp_config" ]
+  visibility = [ "../../*" ]
+}
+
+static_library("libopenthread-rcp") {
+  sources = openthread_ncp_sources
+  public_deps = [
+    "../core:libopenthread-radio",
+    "../lib/spinel:libopenthread-spinel-rcp",
+  ]
+  public_configs = [ ":ncp_config" ]
+  visibility = [ "../../*" ]
+}
diff --git a/third_party/mbedtls/BUILD.gn b/third_party/mbedtls/BUILD.gn
index 06a06da..b61e724 100644
--- a/third_party/mbedtls/BUILD.gn
+++ b/third_party/mbedtls/BUILD.gn
@@ -40,6 +40,7 @@
   ]
 
   defines = [ "MBEDTLS_CONFIG_FILE=\"${mbedtls_config_file}\"" ]
+  cflags = [ "-Wno-conversion" ]
 }
 
 static_library("mbedtls") {
@@ -143,6 +144,7 @@
     "repo/library/dhm.c",
     "repo/library/ecdh.c",
     "repo/library/ecdsa.c",
+    "repo/library/ecjpake.c",
     "repo/library/ecp.c",
     "repo/library/ecp_curves.c",
     "repo/library/entropy.c",