# Copyright 2015 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 minigbm library
  # shipped with the system. In release builds of Chrome OS we use the
  # system version, but when building on dev workstations or the Chrome
  # waterfall we bundle it because Ubuntu doesn't ship a usable version.
  use_system_minigbm = false
}

if (!use_system_minigbm) {
  config("minigbm_config") {
    include_dirs = [ "src" ]
  }

  pkg_config("libdrm") {
    packages = [ "libdrm" ]
  }

  shared_library("minigbm") {
    sources = [
      "src/cirrus.c",
      "src/evdi.c",
      "src/exynos.c",
      "src/gbm.c",
      "src/gma500.c",
      "src/helpers.c",
      "src/i915.c",
      "src/marvell.c",
      "src/mediatek.c",
      "src/rockchip.c",
      "src/tegra.c",
      "src/udl.c",
      "src/virtio_gpu.c",
    ]

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

    public_configs = [ ":minigbm_config" ]

    # Clients need this to pick up the shared library correctly.
    all_dependent_configs =
        [ "//build/config/gcc:rpath_for_built_shared_libraries" ]
  }
}

if (use_system_minigbm) {
  pkg_config("libgbm") {
    packages = [ "gbm" ]
  }

  group("minigbm") {
    public_configs = [ ":libgbm" ]
  }
}
