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