From 68f58255bd31bab84d935bcf9c5ee85da921db9d Mon Sep 17 00:00:00 2001
From: Jerry Belton <jcecil@google.com>
Date: Mon, 13 May 2019 20:06:33 +0000
Subject: [PATCH] [sdk] Added dist_dir property to the cc_prebuilt_library SDK
 atom.

Bug: DX-537

Testing:
* sdk archive builds correctly.
* workspace generated properly
* Tests pass if I use the same version of bazel as infra (0.17)

Change-Id: I185546362facc44cc7b94e9fd59456b9c6ede49a
---
 build/cpp/gen_sdk_prebuilt_meta_file.py | 4 ++++
 build/cpp/sdk_shared_library.gni        | 2 ++
 build/sdk/meta/cc_prebuilt_library.json | 5 +++++
 build/zircon/zircon_library.gni         | 5 +++++
 4 files changed, 16 insertions(+)

diff --git a/build/cpp/gen_sdk_prebuilt_meta_file.py b/build/cpp/gen_sdk_prebuilt_meta_file.py
index b38ec63dbee..2c7d3330277 100755
--- a/build/cpp/gen_sdk_prebuilt_meta_file.py
+++ b/build/cpp/gen_sdk_prebuilt_meta_file.py
@@ -36,6 +36,9 @@ def main():
     parser.add_argument('--include-dir',
                         help='Path to the include directory',
                         required=True)
+    parser.add_argument('--dist-dir',
+                        help='Path to the base directory for prebuilt libraries',
+                        required=True)
     parser.add_argument('--arch',
                         help='Name of the target architecture',
                         required=True)
@@ -65,6 +68,7 @@ def main():
         'format': 'shared',
         'headers': args.headers,
         'include_dir': args.include_dir,
+        'dist_dir': args.dist_dir,
     }
     metadata['binaries'] = {
         args.arch: {
diff --git a/build/cpp/sdk_shared_library.gni b/build/cpp/sdk_shared_library.gni
index 9d022f9c1a4..65f73d13ed3 100644
--- a/build/cpp/sdk_shared_library.gni
+++ b/build/cpp/sdk_shared_library.gni
@@ -227,6 +227,8 @@ template("sdk_shared_library") {
              file_base,
              "--include-dir",
              "$file_base/include",
+             "--dist-dir",
+             "$prebuilt_base/dist",
              "--deps",
            ] + sdk_metas + [ "--headers" ] + sdk_metadata_headers +
            [
diff --git a/build/sdk/meta/cc_prebuilt_library.json b/build/sdk/meta/cc_prebuilt_library.json
index 17a81e0a1f4..72624b591a7 100644
--- a/build/sdk/meta/cc_prebuilt_library.json
+++ b/build/sdk/meta/cc_prebuilt_library.json
@@ -46,6 +46,10 @@
           "description": "Path to the base directory for includes",
           "$ref": "common.json#/definitions/file"
         },
+        "dist_dir": {
+          "description": "Path to the base directory for prebuilt libraries.",
+          "$ref": "common.json#/definitions/file"
+        },
         "deps": {
           "description": "List of C/C++ libraries this library depends on",
           "type": "array",
@@ -77,6 +81,7 @@
         "format",
         "headers",
         "include_dir",
+        "dist_dir",
         "root",
 
         "name",
diff --git a/build/zircon/zircon_library.gni b/build/zircon/zircon_library.gni
index 314548d46b6..a528e351836 100644
--- a/build/zircon/zircon_library.gni
+++ b/build/zircon/zircon_library.gni
@@ -109,6 +109,7 @@ template("zircon_library") {
                              "include_dirs",
                              "install",
                              "lib_dirs",
+                             "dist_dir",
                              "libs",
                              "public_deps",
                              "source_dir",
@@ -251,6 +252,10 @@ template("zircon_library") {
         }
       }
     }
+
+    if (!defined(invoker.sources)) {
+      dist_dir = pkg
+    }
   }
 
   sdk_atom("${library}_sdk") {
-- 
GitLab