| # 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. |
| import("//build/config/linux/pkg_config.gni") |
| |
| assert(is_linux) |
| |
| declare_args() { |
| # Controls whether the build should use the version of libdrm |
| # library shipped with the system. In release builds of Chrome OS we |
| # use the system version, but when building on dev workstations we |
| # bundle it because Ubuntu doesn't ship a usable version. |
| use_system_libdrm = false |
| } |
| |
| if (!use_system_libdrm) { |
| 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" ] |
| } |
| } |
| |
| config("libdrm_exynos_include_config") { |
| include_dirs = [ "//third_party/libdrm/src/exynos" ] |
| } |
| |
| 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", |
| ] |
| } |
| } |
| |
| if (use_system_libdrm) { |
| pkg_config("libdrm_config") { |
| packages = [ "libdrm" ] |
| } |
| group("libdrm") { |
| public_configs = [ ":libdrm_config" ] |
| } |
| } |