# Copyright 2019 The Chromium OS 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("//common-mk/pkg_config.gni")

group("all") {
  deps = [ ":mems_setup" ]
  if (use.test) {
    deps += [ ":mems_setup_testrunner" ]
  }
}

pkg_config("target_defaults_pkg_deps") {
  defines = [ "USE_IIOSERVICE=${use.iioservice}" ]

  pkg_deps = [
    "libbrillo",
    "libchrome",
  ]
}

config("target_defaults") {
  configs = [ ":target_defaults_pkg_deps" ]
}

static_library("libmems_setup") {
  sources = [
    "configuration.cc",
    "delegate_impl.cc",
    "sensor_kind.cc",
  ]
  public_pkg_deps = [ "libmems" ]
  configs += [ ":target_defaults" ]
}

executable("mems_setup") {
  sources = [ "main.cc" ]
  configs += [ ":target_defaults" ]
  deps = [ ":libmems_setup" ]
}

if (use.test) {
  pkg_config("mems_setup_testrunner_pkg_deps") {
    pkg_deps = [
      "libbrillo-test",
      "libchrome-test",
    ]
  }

  executable("mems_setup_testrunner") {
    sources = [
      "accelerometer_test.cc",
      "als_test.cc",
      "gyroscope_test.cc",
      "light_test.cc",
      "test_fakes.cc",
      "test_helper.cc",
      "vpd_loader_test.cc",
    ]
    configs += [
      "//common-mk:test",
      ":mems_setup_testrunner_pkg_deps",
      ":target_defaults",
    ]
    deps = [
      ":libmems_setup",
      "//common-mk/testrunner",
    ]
    pkg_deps = [ "libmems_test_support" ]
  }
}
