# Copyright 2019 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/components.gni")
import("//build/test.gni")

test("dlopen-indirect-deps") {
  output_name = "dlopen-indirect-deps-test"
  sources = [ "dlopen-indirect-deps.c" ]
  deps = [
    "//sdk/lib/fdio",
    "//zircon/system/ulib/zxtest",
  ]
  data_deps = [ ":dlopen-indirect-deps-test-module" ]
}

shared_library("dlopen-indirect-deps-test-module") {
  testonly = true
  visibility = [
    ":*",
    "//zircon/system/utest/debugger:*",
  ]
  sources = [ "dlopen-indirect-deps-test-module/test-module.c" ]
  deps = [ ":dlopen-indirect-deps-test-liba" ]
}

shared_library("dlopen-indirect-deps-test-liba") {
  testonly = true
  visibility = [
    ":*",
    "//zircon/system/utest/debugger:*",
  ]
  sources = [
    "dlopen-indirect-deps-test-module/dlopen-indirect-deps-test-liba/liba.c",
  ]
  deps = [ ":dlopen-indirect-deps-test-libb" ]
}

shared_library("dlopen-indirect-deps-test-libb") {
  testonly = true
  visibility = [
    ":*",
    "//zircon/system/utest/debugger:*",
  ]
  sources = [ "dlopen-indirect-deps-test-module/dlopen-indirect-deps-test-liba/dlopen-indirect-deps-test-libb/libb.c" ]
}

fuchsia_unittest_package("dlopen-indirect-deps-test-pkg") {
  package_name = "dlopen-indirect-deps-test"
  deps = [ ":dlopen-indirect-deps" ]
}

group("tests") {
  testonly = true
  deps = [ ":dlopen-indirect-deps-test-pkg" ]
}
