<%include file="header.mako" />

import("//build/sdk/sdk_atom.gni")

_lib = "$target_out_dir/${data.lib_name}"

copy("${data.name}_copy_lib") {
  sources = [
    "${data.prebuilt}",
  ]

  outputs = [
    _lib,
  ]
}

config("${data.name}_config") {
  include_dirs = [
    % for include in sorted(data.include_dirs):
    "${include}",
    % endfor
  ]

  libs = [
    _lib,
  ]

  visibility = [
    ":*",
  ]
}

group("${data.name}") {

  public_deps = [
    ":${data.name}_copy_lib",
    % for dep in sorted(data.deps):
    "../${dep}",
    % endfor
    % for dep in sorted(data.fidl_deps):
    "../../fidl/${dep}:${dep}_c",
    % endfor
    % for dep in sorted(data.banjo_deps):
    "../../banjo/${dep}:${dep}",
    % endfor
  ]

  public_configs = [
    ":${data.name}_config",
  ]
}

file_base = "pkg/${data.name}"
prebuilt_base = "arch/$target_cpu"
binaries_content = {
  link = "$prebuilt_base/lib/${data.lib_name}"
}
metadata = {
  name = "${data.name}"
  type = "cc_prebuilt_library"
  root = file_base
  format = "static"
  include_dir = "$file_base/include"

  headers = []
  % for dest, _ in sorted(data.includes.iteritems()):
  headers += [ "$file_base/include/${dest}" ]
  % endfor

  binaries = {}
  if (target_cpu == "arm64") {
    binaries.arm64 = binaries_content
  } else if (target_cpu == "x64") {
    binaries.x64 = binaries_content
  } else {
    assert(false, "Unknown CPU type: %target_cpu")
  }

  deps = []
  % for dep in sorted(data.sdk_deps):
  deps += [ "${dep}" ]
  % endfor
}

sdk_atom("${data.name}_sdk") {
  id = "sdk://pkg/${data.name}"
  category = "partner"

  meta = {
    dest = "$file_base/meta.json"
    schema = "cc_prebuilt_library"
    value = metadata
  }

  files = [
    % for dest, source in sorted(data.includes.iteritems()):
    {
      source = "${source}"
      dest = "$file_base/include/${dest}"
    },
    % endfor
    {
      source = _lib
      dest = "$prebuilt_base/lib/${data.lib_name}"
    },
  ]

  deps = [
    % for dep in sorted(data.sdk_deps):
    "../${dep}:${dep}_sdk",
    % endfor
  ]

  non_sdk_deps = [
    ":${data.name}",
  ]
}
