# Copyright 2016 The Chromium 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/linux/pkg_config.gni")

assert(is_linux)

declare_args() {
  # Controls whether the build should use the version of libevdev
  # library shipped with the system. In release builds of Chrome OS we
  # use the system version, but when building on dev workstations we
  # bundle it because Ubuntu doesn't ship a usable version.
  use_system_libevdev = true
}

if (!use_system_libevdev) {
  config("libevdev_config") {
    include_dirs = [ "src/include" ]
  }

  static_library("libevdev") {
    sources = [
      "src/src/libevdev.c",
      "src/src/libevdev_event.c",
      "src/src/libevdev_mt.c",
    ]

    configs -= [ "//build/config/compiler:chromium_code" ]
    configs += [ "//build/config/compiler:no_chromium_code" ]

    public_configs = [ ":libevdev_config" ]
  }
}

if (use_system_libevdev) {
  pkg_config("libevdev-cros") {
    packages = [ "libevdev-cros" ]
  }

  group("libevdev") {
    public_configs = [ ":libevdev-cros" ]
  }
}
