# 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.
assert(is_linux)

config("libdrm_config") {
  # TODO(thomasanderson): Remove this hack once
  # https://patchwork.kernel.org/patch/10545295/ lands.
  defines = [ "typeof(x)=__typeof__(x)" ]

  include_dirs = [
    "src",
    "src/include",
    "src/include/drm",
  ]

  # libdrm uses macros defined by <sys/types.h> which are being moved to
  # <sys/sysmacros.h>.  GLIBC headers give a pragma warning in this case.
  # Suppress this warning for now.  This may be removed once
  # https://patchwork.kernel.org/patch/9628231/ lands.
  cflags = [ "-Wno-#pragma-messages" ]

  if (is_clang) {
    cflags += [
      "-Wno-enum-conversion",

      # TODO(crbug.com/932060) fix unused result from asprintf in modetest.c.
      "-Wno-unused-result",
    ]
  }
}

static_library("libdrm") {
  sources = [
    "src/xf86drm.c",
    "src/xf86drmHash.c",
    "src/xf86drmMode.c",
    "src/xf86drmRandom.c",
  ]

  include_dirs = [
    "src",
    "src/include",
  ]
  configs -= [ "//build/config/compiler:chromium_code" ]
  configs += [ "//build/config/compiler:no_chromium_code" ]
  cflags = [
    # xf86drm.c uses readdir_r, which has been deprecated as of
    # glibc-2.24.  This causes a build error when using the Debian
    # Stretch sysroot.
    "-Wno-deprecated-declarations",
  ]

  public_configs = [ ":libdrm_config" ]
}

executable("modetest") {
  sources = [
    "src/tests/modetest/buffers.c",
    "src/tests/modetest/buffers.h",
    "src/tests/modetest/cursor.c",
    "src/tests/modetest/cursor.h",
    "src/tests/modetest/modetest.c",
    "src/tests/util/common.h",
    "src/tests/util/format.c",
    "src/tests/util/format.h",
    "src/tests/util/kms.c",
    "src/tests/util/kms.h",
    "src/tests/util/pattern.c",
    "src/tests/util/pattern.h",
  ]

  include_dirs = [
    "src/tests",
    "src/tests/modetest",
  ]

  deps = [
    ":libdrm",
  ]
}
