# Copyright 2016 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/config/fuchsia/rules.gni")
import("//garnet/lib/magma/gnbuild/magma.gni")

# The gpu device
driver_module("msd_intel") {
  output_name = "libmsd_intel"

  deps = [
    ":msd_intel_entry",
    "src",
  ]

  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

# The gpu device; runs gtests at startup
driver_module("msd_intel_test") {
  testonly = true

  output_name = "libmsd_intel_test"

  deps = [
    ":msd_intel_test_entry",
    "src",
  ]

  configs -= [ "//build/config/fuchsia:no_cpp_standard_library" ]
  configs += [ "//build/config/fuchsia:static_cpp_standard_library" ]
}

source_set("msd_intel_entry") {
  public_configs = [ "$msd_intel_gen_build_root:msd_src_include_config" ]
  sources = [
    "src/driver_entry.cc",
  ]

  deps = [
    "src",
    "//garnet/lib/magma/src/magma_util",
    "//garnet/lib/magma/src/magma_util:command_buffer",
    "//garnet/lib/magma/src/magma_util/platform:trace",
    "//garnet/lib/magma/src/sys_driver",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/driver",
    "//zircon/public/lib/zx",
  ]
  libs = [ "zircon" ]
}

source_set("msd_intel_test_entry") {
  testonly = true

  public_configs = [ "$msd_intel_gen_build_root:msd_src_include_config" ]
  sources = [
    "src/driver_entry.cc",
  ]
  defines = [ "MAGMA_TEST_DRIVER=1" ]

  deps = [
    "src",
    "//garnet/lib/magma/src/magma_util",
    "//garnet/lib/magma/src/magma_util:command_buffer",
    "//garnet/lib/magma/src/magma_util/platform:trace",
    "//garnet/lib/magma/src/sys_driver",
    "//zircon/public/lib/ddk",
    "//zircon/public/lib/driver",
    "//zircon/public/lib/zx",
  ]
  libs = [ "zircon" ]
  deps += [
    "tests/unit_tests:hardware_tests",
    "//garnet/lib/magma/src/sys_driver:pci_driver_gtest",
    "//garnet/lib/magma/tests/unit_tests:magma_platform_hardware_tests",
    "//garnet/lib/magma/tests/unit_tests:msd_abi_conformance_tests",
  ]
}

group("tests") {
  testonly = true
  public_deps = [
    "tests/unit_tests:msd_intel_gen_nonhardware_tests",
  ]
}

# This config allows inclusion of headers via relative paths
config("msd_tests_include_config") {
  include_dirs = [ "tests" ]
}

# This config allows inclusion of headers via relative paths
config("msd_src_include_config") {
  include_dirs = [ "src" ]
}
