1 # Copyright 2020 The Chromium Authors
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
5 import("//build/config/compiler/compiler.gni")
6 import("//build/config/linux/pkg_config.gni")
7 import("//build/config/python.gni")
8 import("//build/config/ui.gni")
9 import("//build/toolchain/toolchain.gni")
10 import("//third_party/wayland/wayland_protocol.gni")
12 wayland_protocol("text_cursor_position_protocol") {
13 sources = [ "src/protocol/text-cursor-position.xml" ]
16 wayland_protocol("weston_content_protection_protocol") {
17 sources = [ "src/protocol/weston-content-protection.xml" ]
20 wayland_protocol("weston_debug_protocol") {
21 sources = [ "src/protocol/weston-debug.xml" ]
24 wayland_protocol("weston_desktop_shell_protocol") {
25 sources = [ "src/protocol/weston-desktop-shell.xml" ]
28 wayland_protocol("weston_direct_display_protocol") {
29 sources = [ "src/protocol/weston-direct-display.xml" ]
32 wayland_protocol("weston_output_capture_protocol") {
33 sources = [ "src/protocol/weston-output-capture.xml" ]
36 wayland_protocol("weston_touch_calibration_protocol") {
37 sources = [ "src/protocol/weston-touch-calibration.xml" ]
40 config("weston_config") {
41 out_dir = rebase_path(root_out_dir, root_build_dir)
43 "BINDIR = \"$out_dir\"",
44 "DATADIR = \"$out_dir\"",
45 "LIBEXECDIR = \"$out_dir\"",
46 "LIBWESTON_MODULEDIR = \"$out_dir\"",
47 "MODULEDIR = \"$out_dir\"",
60 "-Wno-implicit-function-declaration",
61 "-Wno-int-conversion",
63 "-Wno-shift-negative-value",
64 "-Wno-string-conversion",
65 "-Wno-non-literal-null-conversion",
67 # clang complains about a variable in `gl_renderer_fill_buffer_info()` that
68 # might be unitialized after a switch-case, however that case is unreachable
69 # (and will `assert(0)` if hit anyways).
70 "-Wno-sometimes-uninitialized",
73 ldflags = [ "-Wl,-rpath=\$ORIGIN" ]
75 configs = [ "//third_party/wayland:wayland_config" ]
78 pkg_config("pixman") {
79 packages = [ "pixman-1" ]
83 packages = [ "cairo" ]
86 pkg_config("libinput") {
87 packages = [ "libinput" ]
90 pkg_config("libevdev") {
91 packages = [ "libevdev" ]
94 pkg_config("libsystemd") {
95 packages = [ "libsystemd" ]
98 pkg_config("wayland_cursor") {
99 packages = [ "wayland-cursor" ]
102 pkg_config("wayland_egl") {
103 packages = [ "wayland-egl" ]
106 pkg_config("xkbcommon") {
107 packages = [ "xkbcommon" ]
110 static_library("shared") {
112 "src/shared/config-parser.c",
113 "src/shared/file-util.c",
115 "src/shared/option-parser.c",
116 "src/shared/os-compatibility.c",
117 "src/shared/os-compatibility.h",
118 "src/shared/process-util.c",
119 "src/shared/signal.c",
122 deps = [ "//third_party/wayland:wayland_client" ]
124 configs -= [ "//build/config/compiler:chromium_code" ]
126 "//build/config/compiler:no_chromium_code",
130 public_configs = [ ":pixman" ]
133 static_library("cairo_shared") {
135 "src/shared/cairo-util.c",
136 "src/shared/frame.c",
137 "src/shared/image-loader.c",
142 "//third_party/fontconfig",
143 "//third_party/libpng",
146 configs -= [ "//build/config/compiler:chromium_code" ]
148 "//build/config/compiler:no_chromium_code",
153 configs += [ "//build/config/linux:glib" ]
157 "//build/config/linux/pangocairo",
163 static_library("libweston") {
165 "src/libweston/animation.c",
166 "src/libweston/auth.c",
167 "src/libweston/bindings.c",
168 "src/libweston/clipboard.c",
169 "src/libweston/color-noop.c",
170 "src/libweston/color.c",
171 "src/libweston/compositor.c",
172 "src/libweston/content-protection.c",
173 "src/libweston/data-device.c",
174 "src/libweston/desktop/client.c",
175 "src/libweston/desktop/libweston-desktop.c",
176 "src/libweston/desktop/seat.c",
177 "src/libweston/desktop/surface.c",
178 "src/libweston/desktop/xdg-shell-v6.c",
179 "src/libweston/desktop/xdg-shell.c",
180 "src/libweston/desktop/xwayland.c",
181 "src/libweston/drm-formats.c",
182 "src/libweston/input.c",
183 "src/libweston/linux-dmabuf.c",
184 "src/libweston/linux-explicit-synchronization.c",
185 "src/libweston/linux-sync-file.c",
186 "src/libweston/log.c",
187 "src/libweston/noop-renderer.c",
188 "src/libweston/output-capture.c",
189 "src/libweston/pixel-formats.c",
190 "src/libweston/pixman-renderer.c",
191 "src/libweston/plugin-registry.c",
192 "src/libweston/screenshooter.c",
193 "src/libweston/shell-utils/shell-utils.c",
194 "src/libweston/timeline.c",
195 "src/libweston/touch-calibration.c",
196 "src/libweston/weston-direct-display.c",
197 "src/libweston/weston-log-file.c",
198 "src/libweston/weston-log-flight-rec.c",
199 "src/libweston/weston-log-wayland.c",
200 "src/libweston/weston-log.c",
201 "src/shared/matrix.c",
211 ":text_cursor_position_protocol",
212 ":weston_content_protection_protocol",
213 ":weston_debug_protocol",
214 ":weston_direct_display_protocol",
215 ":weston_output_capture_protocol",
216 ":weston_touch_calibration_protocol",
217 "//third_party/libdrm",
218 "//third_party/wayland:wayland_client",
219 "//third_party/wayland:wayland_server",
220 "//third_party/wayland:wayland_util",
221 "//third_party/wayland-protocols:input_method_protocol",
222 "//third_party/wayland-protocols:input_timestamps_protocol",
223 "//third_party/wayland-protocols:linux_dmabuf_protocol",
224 "//third_party/wayland-protocols:linux_explicit_synchronization_protocol",
225 "//third_party/wayland-protocols:pointer_constraints_protocol",
226 "//third_party/wayland-protocols:presentation_time_protocol",
227 "//third_party/wayland-protocols:relative_pointer_protocol",
228 "//third_party/wayland-protocols:single_pixel_buffer",
229 "//third_party/wayland-protocols:tablet_protocol",
230 "//third_party/wayland-protocols:tearing_control_protocol",
231 "//third_party/wayland-protocols:text_input_protocol",
232 "//third_party/wayland-protocols:viewporter_protocol",
233 "//third_party/wayland-protocols:xdg_output_protocol",
234 "//third_party/wayland-protocols:xdg_shell_protocol",
237 configs -= [ "//build/config/compiler:chromium_code" ]
239 "//build/config/compiler:no_chromium_code",
244 public_configs = [ ":pixman" ]
247 action("vertex_glsl") {
248 script = "src/tools/xxd.py"
250 file_prefix = "src/libweston/renderer-gl/vertex"
252 input_file = file_prefix + ".glsl"
253 inputs = [ input_file ]
255 output_file = "$target_gen_dir/" + file_prefix + "-shader.h"
256 outputs = [ output_file ]
261 rebase_path(input_file, root_build_dir),
262 rebase_path(output_file, root_build_dir),
266 action("fragment_glsl") {
267 script = "src/tools/xxd.py"
269 file_prefix = "src/libweston/renderer-gl/fragment"
271 input_file = file_prefix + ".glsl"
272 inputs = [ input_file ]
274 output_file = "$target_gen_dir/" + file_prefix + "-shader.h"
275 outputs = [ output_file ]
280 rebase_path(input_file, root_build_dir),
281 rebase_path(output_file, root_build_dir),
285 shared_library("gl_renderer") {
286 output_prefix_override = true
287 output_name = "gl-renderer"
289 visibility = [ ":weston" ]
291 # gl_renderer currently requires files under src/libweston and src/shared to
292 # include at runtime, if we remove these files some of the components(functions)
293 # are undefined and lead to failure in build due to undefined symbols/functions
295 "$target_gen_dir/src/libweston/renderer-gl",
301 "src/libweston/renderer-gl/egl-glue.c",
302 "src/libweston/renderer-gl/gl-renderer.c",
303 "src/libweston/renderer-gl/gl-shader-config-color-transformation.c",
304 "src/libweston/renderer-gl/gl-shaders.c",
305 "src/libweston/vertex-clipping.c",
317 "//third_party/libdrm",
318 "//third_party/wayland:wayland_server",
319 "//third_party/wayland-protocols:linux_dmabuf_protocol",
322 configs -= [ "//build/config/compiler:chromium_code" ]
324 "//build/config/compiler:no_chromium_code",
330 static_library("gl_borders") {
331 sources = [ "src/libweston/gl-borders.c" ]
343 configs -= [ "//build/config/compiler:chromium_code" ]
345 "//build/config/compiler:no_chromium_code",
350 shared_library("wayland_backend") {
351 output_prefix_override = true
352 output_name = "wayland-backend"
354 visibility = [ ":weston" ]
356 defines = [ "BUILD_WAYLAND_COMPOSITOR = 1" ]
363 sources = [ "src/libweston/backend-wayland/wayland.c" ]
370 "//build/config/linux/libdrm",
371 "//third_party/wayland:wayland_client",
372 "//third_party/wayland-protocols:fullscreen_shell_protocol",
373 "//third_party/wayland-protocols:presentation_time_protocol",
374 "//third_party/wayland-protocols:xdg_shell_protocol",
377 configs -= [ "//build/config/compiler:chromium_code" ]
381 "//build/config/compiler:no_chromium_code",
387 shared_library("headless_backend") {
388 output_prefix_override = true
389 output_name = "headless-backend"
391 visibility = [ ":weston" ]
393 defines = [ "BUILD_HEADLESS_COMPOSITOR=1" ]
400 sources = [ "src/libweston/backend-headless/headless.c" ]
406 "//build/config/linux/libdrm",
407 "//third_party/wayland-protocols:presentation_time_protocol",
410 configs -= [ "//build/config/compiler:chromium_code" ]
412 "//build/config/compiler:no_chromium_code",
417 shared_library("compositor") {
418 output_name = "weston_compositor"
421 "src/compositor/config-helpers.c",
422 "src/compositor/executable.c",
423 "src/compositor/main.c",
424 "src/compositor/text-backend.c",
425 "src/compositor/weston-screenshooter.c",
431 "//third_party/wayland:wayland_server",
432 "//third_party/wayland-protocols:input_method_protocol",
433 "//third_party/wayland-protocols:text_input_protocol",
436 configs -= [ "//build/config/compiler:chromium_code" ]
438 "//build/config/compiler:no_chromium_code",
445 static_library("toytoolkit") {
447 "src/clients/window.c",
448 "src/shared/matrix.c",
454 ":text_cursor_position_protocol",
455 "//third_party/wayland:wayland_client",
456 "//third_party/wayland-protocols:pointer_constraints_protocol",
457 "//third_party/wayland-protocols:relative_pointer_protocol",
458 "//third_party/wayland-protocols:tablet_protocol",
459 "//third_party/wayland-protocols:viewporter_protocol",
460 "//third_party/wayland-protocols:xdg_shell_protocol",
463 configs -= [ "//build/config/compiler:chromium_code" ]
466 "//build/config/compiler:no_chromium_code",
472 shared_library("ui_controls") {
473 output_prefix_override = true
474 output_name = "ui-controls"
476 sources = [ "src/tests/ui-controls.c" ]
481 "//third_party/wayland-protocols:ui_controls_protocol",
484 configs -= [ "//build/config/compiler:chromium_code" ]
486 "//build/config/compiler:no_chromium_code",
496 shared_library("weston_systemd_notify") {
497 output_prefix_override = true
498 output_name = "systemd-notify"
500 sources = [ "src/compositor/systemd-notify.c" ]
504 "//third_party/wayland:wayland_server",
507 configs -= [ "//build/config/compiler:chromium_code" ]
509 "//build/config/compiler:no_chromium_code",
513 include_dirs = [ "src/compositor" ]
522 executable("weston_keyboard") {
523 output_name = "weston-keyboard"
525 visibility = [ ":weston" ]
527 sources = [ "src/clients/keyboard.c" ]
532 "//third_party/wayland:wayland_client",
533 "//third_party/wayland-protocols:input_method_protocol",
534 "//third_party/wayland-protocols:text_input_protocol",
537 configs -= [ "//build/config/compiler:chromium_code" ]
539 "//build/config/compiler:no_chromium_code",
544 executable("weston_screenshooter") {
545 output_name = "weston-screenshooter"
547 visibility = [ ":weston" ]
549 include_dirs = [ "src/libweston" ]
551 sources = [ "src/clients/screenshot.c" ]
558 ":weston_output_capture_protocol",
559 "//third_party/wayland:wayland_client",
562 configs -= [ "//build/config/compiler:chromium_code" ]
564 "//build/config/compiler:no_chromium_code",
569 executable("weston_desktop_shell") {
570 output_name = "weston-desktop-shell"
572 visibility = [ ":weston" ]
574 sources = [ "src/clients/desktop-shell.c" ]
579 ":weston_desktop_shell_protocol",
580 "//third_party/wayland:wayland_client",
581 "//third_party/wayland-protocols:tablet_protocol",
584 configs -= [ "//build/config/compiler:chromium_code" ]
586 "//build/config/compiler:no_chromium_code",
591 shared_library("desktop_shell") {
592 output_prefix_override = true
593 output_name = "desktop-shell"
595 visibility = [ ":weston" ]
598 "src/desktop-shell/input-panel.c",
599 "src/desktop-shell/shell.c",
607 ":weston_desktop_shell_protocol",
608 "//third_party/wayland:wayland_server",
609 "//third_party/wayland-protocols:input_method_protocol",
612 configs -= [ "//build/config/compiler:chromium_code" ]
614 "//build/config/compiler:no_chromium_code",
619 executable("weston") {
632 ":weston_desktop_shell",
634 ":weston_screenshooter",
635 ":weston_systemd_notify",
638 configs += [ ":weston_config" ]