blob: 5b36fa5cc39afaad3f0ba75131f5f08a7f20825a [file] [log] [blame]
# Copyright 2019 The Chromium OS 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("//common-mk/pkg_config.gni")
import("wayland_protocol.gni")
group("all") {
deps = [
":sommelier",
]
if (use.fuzzer) {
deps += [ ":sommelier_wayland_fuzzer" ]
}
if (use.test) {
deps += [ ":sommelier_test" ]
}
}
# Set this to the Xwayland path.
if (!defined(xwayland_path)) {
xwayland_path = "\"/opt/google/cros-containers/bin/Xwayland\""
}
# Set this to the GL driver path to use for Xwayland.
if (!defined(xwayland_gl_driver_path)) {
xwayland_gl_driver_path = "\"/opt/google/cros-containers/lib\""
}
# Set this to the frame color to use for Xwayland clients.
if (!defined(frame_color)) {
frame_color = "\"#f2f2f2\""
}
# Set this to the dark frame color to use for Xwayland clients.
if (!defined(dark_frame_color)) {
dark_frame_color = "\"#323639\""
}
wayland_protocol_library("sommelier-protocol") {
out_dir = "include"
sources = [
"protocol/aura-shell.xml",
"protocol/drm.xml",
"protocol/gaming-input-unstable-v2.xml",
"protocol/gtk-shell.xml",
"protocol/keyboard-extension-unstable-v1.xml",
"protocol/linux-dmabuf-unstable-v1.xml",
"protocol/linux-explicit-synchronization-unstable-v1.xml",
"protocol/pointer-constraints-unstable-v1.xml",
"protocol/relative-pointer-unstable-v1.xml",
"protocol/text-input-unstable-v1.xml",
"protocol/viewporter.xml",
"protocol/xdg-shell-unstable-v6.xml",
]
}
gaming_defines = [ "GAMEPAD_SUPPORT" ]
gaming_deps = [ ":libgaming" ]
tracing_defines = [ "PERFETTO_TRACING" ]
tracing_pkg_deps = [ "perfetto" ]
tracing_libs = [ "pthread" ]
sommelier_defines = [
"_GNU_SOURCE",
"WL_HIDE_DEPRECATED",
"XWAYLAND_PATH=${xwayland_path}",
"XWAYLAND_GL_DRIVER_PATH=${xwayland_gl_driver_path}",
"FRAME_COLOR=${frame_color}",
"DARK_FRAME_COLOR=${dark_frame_color}",
] + gaming_defines + tracing_defines
static_library("libgaming") {
sources = [ "sommelier-gaming.cc" ]
defines = gaming_defines
pkg_deps = [ "libevdev" ]
deps = [ ":sommelier-protocol" ]
}
static_library("libsommelier") {
sources = [
"sommelier-compositor.cc",
"sommelier-ctx.cc",
"sommelier-data-device-manager.cc",
"sommelier-display.cc",
"sommelier-drm.cc",
"sommelier-global.cc",
"sommelier-gtk-shell.cc",
"sommelier-mmap.cc",
"sommelier-output.cc",
"sommelier-pointer-constraints.cc",
"sommelier-relative-pointer-manager.cc",
"sommelier-seat.cc",
"sommelier-shell.cc",
"sommelier-shm.cc",
"sommelier-subcompositor.cc",
"sommelier-text-input.cc",
"sommelier-timing.cc",
"sommelier-tracing.cc",
"sommelier-util.cc",
"sommelier-viewporter.cc",
"sommelier-window.cc",
"sommelier-xdg-shell.cc",
"sommelier.cc",
"virtualization/virtgpu_channel.cc",
"virtualization/virtwl_channel.cc",
]
include_dirs = []
defines = sommelier_defines
pkg_deps = [
"gbm",
"libdrm",
"pixman-1",
"wayland-client",
"wayland-server",
"xcb",
"xcb-composite",
"xcb-xfixes",
"xkbcommon",
] + tracing_pkg_deps
libs = [ "m" ] + tracing_libs
deps = [ ":sommelier-protocol" ] + gaming_deps
}
executable("sommelier") {
sources = [ "sommelier-main.cc" ]
defines = sommelier_defines
deps = [ ":libsommelier" ]
}
if (use.test) {
executable("sommelier_test") {
sources = [ "sommelier_test.cc" ]
# gnlint: disable=GnLintCommonTesting
libs = [
"gmock",
"gtest",
]
defines = sommelier_defines
deps = [ ":libsommelier" ]
}
}
if (use.fuzzer) {
executable("sommelier_wayland_fuzzer") {
sources = [ "sommelier-wayland-fuzzer.cc" ]
configs += [ "//common-mk/common_fuzzer" ]
defines = sommelier_defines
deps = [ ":libsommelier" ]
}
}