# 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 = [
    ":libglib_bridge",
  ]
  if (use.test) {
    deps += [ ":glib_bridge_test_runner" ]
  }
}

static_library("libglib_bridge") {
  sources = [
    "glib_bridge.cc",
  ]
  pkg_deps = [
    "glib-2.0",
    "gthread-2.0",
    "libchrome-${libbase_ver}",
  ]
  configs += [ "//common-mk:nouse_thin_archive" ]
  configs -= [ "//common-mk:use_thin_archive" ]
}

if (use.test) {
  executable("glib_bridge_test_runner") {
    configs += [
      # //common-mk:test should be at the top. crbug.com/887845
      # TODO(crbug.com/887845): Remove this note after library order issue is resolved.
      "//common-mk:test",
    ]
    sources = [
      "glib_bridge_test.cc",
    ]
    deps = [
      ":libglib_bridge",
      "//common-mk/testrunner",
    ]
    pkg_deps = [
      "gio-2.0",
      "gio-unix-2.0",
      "glib-2.0",
      "gthread-2.0",
      "libchrome-${libbase_ver}",
    ]
  }
}
