[sdk] Recover folder structure in include folder

Such that include/internal/dart_api_dl_impl.h ends up in
include/internal/dart_api_dl_impl.h in the sdk release.

Also, adds missing C file: include/dart_native_api.c.

Change-Id: Ibe8dd6a6a5eed171b4bfc1f1a3013f5cf2a13547
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/164320
Reviewed-by: Jonas Jensen <jonasfj@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Daco Harkes <dacoharkes@google.com>
diff --git a/runtime/BUILD.gn b/runtime/BUILD.gn
index e4b4445..1df37c6 100644
--- a/runtime/BUILD.gn
+++ b/runtime/BUILD.gn
@@ -208,6 +208,7 @@
   sources = [
     "include/dart_api.h",
     "include/dart_api_dl.h",
+    "include/dart_native_api.c",
     "include/dart_native_api.h",
     "include/dart_tools_api.h",
     "include/dart_version.h",
diff --git a/sdk/BUILD.gn b/sdk/BUILD.gn
index c121a26..9444e50 100644
--- a/sdk/BUILD.gn
+++ b/sdk/BUILD.gn
@@ -755,13 +755,16 @@
   visibility = [ ":create_common_sdk" ]
   sources = [
     "../runtime/include/dart_api.h",
+    "../runtime/include/dart_api_dl.c",
     "../runtime/include/dart_api_dl.h",
     "../runtime/include/dart_native_api.h",
     "../runtime/include/dart_tools_api.h",
     "../runtime/include/dart_version.h",
     "../runtime/include/internal/dart_api_dl_impl.h",
   ]
-  outputs = [ "$root_out_dir/dart-sdk/include/{{source_file_part}}" ]
+
+  # Some magic to recover the folder structure inside the include folder.
+  outputs = [ "$root_out_dir/dart-sdk/include/{{source_root_relative_dir}}/../../{{source_file_part}}" ]
 }
 
 # This rule copies libraries.json files to lib/