# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
assert(is_linux || is_chromeos)

generated_static_table_fourcc_file =
    "$target_gen_dir/src/generated_static_table_fourcc.h"
fourcc_file = "src/include/drm/drm_fourcc.h"

action("make_generated_static_table_fourcc") {
  script = "src/gen_table_fourcc.py"
  args = [
    rebase_path(fourcc_file, root_build_dir),
    rebase_path(generated_static_table_fourcc_file),
  ]
  outputs = [ generated_static_table_fourcc_file ]
  inputs = [ fourcc_file ]
}

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" ]

  # glibc version >= 2.25 explicitly include <sys/sysmacros.h>
  cflags += [ "-DMAJOR_IN_SYSMACROS=1" ]

  # TODO(b/357680612): unused function 'swap32'.
  cflags += [ "-Wno-unused-function" ]

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

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

      # modetest.c has an improper conversion in a printf statement.
      "-Wno-format",
    ]
  }
}

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

  deps = [ ":make_generated_static_table_fourcc" ]

  include_dirs = [
    get_path_info(generated_static_table_fourcc_file, "dir"),
    "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",
  ]

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

  deps = [ ":libdrm" ]
}
