# 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",
    "glib_logger.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",
      "glib_structured_logger_test.cc",
      "glib_unstructured_logger_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}",
    ]
  }
}
