blob: a6c9fa413998f6fe9d748bf80c2a7d16071593b2 [file] [log] [blame]
# Copyright 2020 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/compiler/compiler.gni")
import("//build/config/linux/pkg_config.gni")
import("//build/config/ui.gni")
import("//build/toolchain/toolchain.gni")
import("//third_party/wayland/wayland_protocol.gni")
wayland_protocol("text_cursor_position_protocol") {
sources = [ "src/protocol/text-cursor-position.xml" ]
}
wayland_protocol("weston_content_protection_protocol") {
sources = [ "src/protocol/weston-content-protection.xml" ]
}
wayland_protocol("weston_debug_protocol") {
sources = [ "src/protocol/weston-debug.xml" ]
}
wayland_protocol("weston_desktop_shell_protocol") {
sources = [ "src/protocol/weston-desktop-shell.xml" ]
}
wayland_protocol("weston_screenshooter_protocol") {
sources = [ "src/protocol/weston-screenshooter.xml" ]
}
wayland_protocol("weston_touch_calibration_protocol") {
sources = [ "src/protocol/weston-touch-calibration.xml" ]
}
config("weston_config") {
out_dir = rebase_path(root_out_dir, root_build_dir)
defines = [
"BINDIR = \"$out_dir\"",
"DATADIR = \"$out_dir\"",
"LIBEXECDIR = \"$out_dir\"",
"LIBWESTON_MODULEDIR = \"$out_dir\"",
"MODULEDIR = \"$out_dir\"",
]
include_dirs = [
"src",
"src/include",
"config",
"version",
"include",
]
cflags = [
"-Wno-extra-semi",
"-Wno-implicit-function-declaration",
"-Wno-int-conversion",
"-Wno-return-type",
"-Wno-shift-negative-value",
"-Wno-string-conversion",
]
ldflags = [ "-Wl,-rpath=\$ORIGIN" ]
}
pkg_config("pixman") {
packages = [ "pixman-1" ]
}
pkg_config("cairo") {
packages = [ "cairo" ]
}
pkg_config("libinput") {
packages = [ "libinput" ]
}
pkg_config("libevdev") {
packages = [ "libevdev" ]
}
pkg_config("wayland_cursor") {
packages = [ "wayland-cursor" ]
}
pkg_config("wayland_egl") {
packages = [ "wayland-egl" ]
}
pkg_config("xkbcommon") {
packages = [ "xkbcommon" ]
}
static_library("shared") {
sources = [
"src/shared/config-parser.c",
"src/shared/file-util.c",
"src/shared/option-parser.c",
"src/shared/os-compatibility.c",
"src/shared/xalloc.c",
]
deps = [ "//third_party/wayland:wayland_client" ]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
static_library("cairo_shared") {
sources = [
"src/shared/cairo-util.c",
"src/shared/frame.c",
"src/shared/image-loader.c",
]
deps = [
":shared",
"//third_party/libpng",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
"//build/config/linux/pangocairo",
]
if (use_glib) {
configs += [ "//build/config/linux:glib" ]
}
public_configs = [
":cairo",
":pixman",
]
}
static_library("libweston") {
sources = [
"src/libweston/animation.c",
"src/libweston/bindings.c",
"src/libweston/clipboard.c",
"src/libweston/compositor.c",
"src/libweston/content-protection.c",
"src/libweston/data-device.c",
"src/libweston/input.c",
"src/libweston/linux-dmabuf.c",
"src/libweston/linux-explicit-synchronization.c",
"src/libweston/linux-sync-file.c",
"src/libweston/log.c",
"src/libweston/noop-renderer.c",
"src/libweston/pixel-formats.c",
"src/libweston/pixman-renderer.c",
"src/libweston/plugin-registry.c",
"src/libweston/screenshooter.c",
"src/libweston/timeline.c",
"src/libweston/touch-calibration.c",
"src/libweston/weston-log-file.c",
"src/libweston/weston-log-flight-rec.c",
"src/libweston/weston-log-wayland.c",
"src/libweston/weston-log.c",
"src/libweston/zoom.c",
"src/shared/matrix.c",
]
include_dirs = [ "src/shared" ]
deps = [
":shared",
":text_cursor_position_protocol",
":weston_content_protection_protocol",
":weston_debug_protocol",
":weston_screenshooter_protocol",
":weston_touch_calibration_protocol",
"//third_party/libdrm",
"//third_party/wayland:wayland_server",
"//third_party/wayland:wayland_util",
"//third_party/wayland-protocols:input_method_protocol",
"//third_party/wayland-protocols:input_timestamps_protocol",
"//third_party/wayland-protocols:linux_dmabuf_protocol",
"//third_party/wayland-protocols:linux_explicit_synchronization_protocol",
"//third_party/wayland-protocols:pointer_constraints_protocol",
"//third_party/wayland-protocols:presentation_time_protocol",
"//third_party/wayland-protocols:relative_pointer_protocol",
"//third_party/wayland-protocols:text_input_protocol",
"//third_party/wayland-protocols:viewporter_protocol",
"//third_party/wayland-protocols:xdg_output_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
":xkbcommon",
]
public_configs = [ ":pixman" ]
}
shared_library("gl_renderer") {
output_prefix_override = true
output_name = "gl-renderer"
visibility = [ ":weston" ]
# gl_renderer currently requires files under src/libweston and src/shared to
# include at runtime, if we remove these files some of the components(functions)
# are undefined and lead to failure in build due to undefined symbols/functions
include_dirs = [
"src/libweston",
"src/shared",
]
sources = [
"src/libweston/renderer-gl/gl-renderer.c",
"src/libweston/vertex-clipping.c",
]
libs = [
"EGL",
"GLESv2",
]
deps = [
":libweston",
"//third_party/libdrm",
"//third_party/wayland:wayland_server",
"//third_party/wayland-protocols:linux_dmabuf_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
":xkbcommon",
]
}
shared_library("wayland_backend") {
output_prefix_override = true
output_name = "wayland-backend"
visibility = [ ":weston" ]
defines = [ "BUILD_WAYLAND_COMPOSITOR = 1" ]
include_dirs = [
"src/shared",
"src/libweston",
]
sources = [ "src/libweston/backend-wayland/wayland.c" ]
deps = [
":cairo_shared",
":libweston",
"//third_party/wayland:wayland_client",
"//third_party/wayland-protocols:fullscreen_shell_protocol",
"//third_party/wayland-protocols:presentation_time_protocol",
"//third_party/wayland-protocols:xdg_shell_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
":wayland_cursor",
":wayland_egl",
"//build/config/compiler:no_chromium_code",
":weston_config",
":xkbcommon",
]
}
shared_library("headless_backend") {
output_prefix_override = true
output_name = "headless-backend"
visibility = [ ":weston" ]
defines = [ "BUILD_HEADLESS_COMPOSITOR=1" ]
include_dirs = [
"src/shared",
"src/libweston",
]
sources = [ "src/libweston/backend-headless/headless.c" ]
deps = [
":libweston",
"//third_party/wayland-protocols:presentation_time_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
static_library("libweston_desktop") {
include_dirs = [ "src/shared" ]
sources = [
"src/libweston-desktop/client.c",
"src/libweston-desktop/libweston-desktop.c",
"src/libweston-desktop/seat.c",
"src/libweston-desktop/surface.c",
"src/libweston-desktop/wl-shell.c",
"src/libweston-desktop/xdg-shell-v6.c",
"src/libweston-desktop/xdg-shell.c",
"src/libweston-desktop/xwayland.c",
]
deps = [
"//third_party/wayland:wayland_server",
"//third_party/wayland-protocols:xdg_shell_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
":pixman",
]
}
shared_library("compositor") {
output_name = "weston_compositor"
include_dirs = [ "src/shared" ]
sources = [
"src/compositor/main.c",
"src/compositor/text-backend.c",
"src/compositor/weston-screenshooter.c",
]
deps = [
":libweston",
":weston_screenshooter_protocol",
"//third_party/wayland:wayland_server",
"//third_party/wayland-protocols:input_method_protocol",
"//third_party/wayland-protocols:text_input_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":libevdev",
":libinput",
":weston_config",
]
}
static_library("toytoolkit") {
sources = [ "src/clients/window.c" ]
deps = [
":cairo_shared",
":text_cursor_position_protocol",
"//third_party/wayland:wayland_client",
"//third_party/wayland-protocols:pointer_constraints_protocol",
"//third_party/wayland-protocols:relative_pointer_protocol",
"//third_party/wayland-protocols:xdg_shell_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
":wayland_cursor",
"//build/config/compiler:no_chromium_code",
":weston_config",
":xkbcommon",
]
}
executable("weston_keyboard") {
output_name = "weston-keyboard"
visibility = [ ":weston" ]
sources = [ "src/clients/keyboard.c" ]
deps = [
":cairo_shared",
":toytoolkit",
"//third_party/wayland-protocols:input_method_protocol",
"//third_party/wayland-protocols:text_input_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
executable("weston_screenshooter") {
output_name = "weston-screenshooter"
visibility = [ ":weston" ]
sources = [ "src/clients/screenshot.c" ]
deps = [
":cairo_shared",
":toytoolkit",
":weston_screenshooter_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
executable("weston_desktop_shell") {
output_name = "weston-desktop-shell"
visibility = [ ":weston" ]
sources = [ "src/clients/desktop-shell.c" ]
deps = [
":cairo_shared",
":toytoolkit",
":weston_desktop_shell_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
shared_library("desktop_shell") {
output_prefix_override = true
output_name = "desktop-shell"
visibility = [ ":weston" ]
sources = [
"src/desktop-shell/exposay.c",
"src/desktop-shell/input-panel.c",
"src/desktop-shell/shell.c",
]
deps = [
":compositor",
":libweston",
":libweston_desktop",
":shared",
":weston_desktop_shell_protocol",
"//third_party/wayland-protocols:input_method_protocol",
]
configs -= [ "//build/config/compiler:chromium_code" ]
configs += [
"//build/config/compiler:no_chromium_code",
":weston_config",
]
}
executable("weston") {
deps = [
":compositor",
":libweston",
":shared",
]
data_deps = [
":desktop_shell",
":gl_renderer",
":headless_backend",
":wayland_backend",
":weston_desktop_shell",
":weston_keyboard",
":weston_screenshooter",
]
configs += [ ":weston_config" ]
}