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