blob: c8492d7068e4a88d091d45a1c997ffb4bfba02a0 [file] [log] [blame]
# 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.
visibility = [ "//ui/ozone/*" ]
import("//build/config/chromeos/ui_mode.gni")
import("//build/config/linux/gtk/gtk.gni")
import("//build/config/linux/pkg_config.gni")
import("//gpu/vulkan/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/wayland/features.gni")
import("//ui/ozone/platform/wayland/wayland.gni")
source_set("wayland") {
sources = [
"client_native_pixmap_factory_wayland.cc",
"client_native_pixmap_factory_wayland.h",
"common/data_util.cc",
"common/data_util.h",
"common/wayland.cc",
"common/wayland.h",
"common/wayland_object.cc",
"common/wayland_object.h",
"common/wayland_util.cc",
"common/wayland_util.h",
"gpu/drm_render_node_path_finder.cc",
"gpu/drm_render_node_path_finder.h",
"gpu/gl_surface_egl_readback_wayland.cc",
"gpu/gl_surface_egl_readback_wayland.h",
"gpu/gl_surface_wayland.cc",
"gpu/gl_surface_wayland.h",
"gpu/wayland_buffer_manager_gpu.cc",
"gpu/wayland_buffer_manager_gpu.h",
"gpu/wayland_canvas_surface.cc",
"gpu/wayland_canvas_surface.h",
"gpu/wayland_overlay_candidates.cc",
"gpu/wayland_overlay_candidates.h",
"gpu/wayland_overlay_manager.cc",
"gpu/wayland_overlay_manager.h",
"gpu/wayland_surface_factory.cc",
"gpu/wayland_surface_factory.h",
"gpu/wayland_surface_gpu.h",
"host/gtk_primary_selection_device.cc",
"host/gtk_primary_selection_device.h",
"host/gtk_primary_selection_device_manager.cc",
"host/gtk_primary_selection_device_manager.h",
"host/gtk_primary_selection_offer.cc",
"host/gtk_primary_selection_offer.h",
"host/shell_object_factory.cc",
"host/shell_object_factory.h",
"host/shell_popup_wrapper.cc",
"host/shell_popup_wrapper.h",
"host/shell_surface_wrapper.h",
"host/shell_toplevel_wrapper.cc",
"host/shell_toplevel_wrapper.h",
"host/wayland_auxiliary_window.cc",
"host/wayland_auxiliary_window.h",
"host/wayland_buffer_manager_connector.cc",
"host/wayland_buffer_manager_connector.h",
"host/wayland_buffer_manager_host.cc",
"host/wayland_buffer_manager_host.h",
"host/wayland_clipboard.cc",
"host/wayland_clipboard.h",
"host/wayland_connection.cc",
"host/wayland_connection.h",
"host/wayland_cursor.cc",
"host/wayland_cursor.h",
"host/wayland_cursor_position.cc",
"host/wayland_cursor_position.h",
"host/wayland_data_device.cc",
"host/wayland_data_device.h",
"host/wayland_data_device_base.cc",
"host/wayland_data_device_base.h",
"host/wayland_data_device_manager.cc",
"host/wayland_data_device_manager.h",
"host/wayland_data_drag_controller.cc",
"host/wayland_data_drag_controller.h",
"host/wayland_data_offer.cc",
"host/wayland_data_offer.h",
"host/wayland_data_offer_base.cc",
"host/wayland_data_offer_base.h",
"host/wayland_data_source.cc",
"host/wayland_data_source.h",
"host/wayland_drm.cc",
"host/wayland_drm.h",
"host/wayland_event_source.cc",
"host/wayland_event_source.h",
"host/wayland_event_watcher.cc",
"host/wayland_event_watcher.h",
"host/wayland_input_method_context.cc",
"host/wayland_input_method_context.h",
"host/wayland_input_method_context_factory.cc",
"host/wayland_input_method_context_factory.h",
"host/wayland_keyboard.cc",
"host/wayland_keyboard.h",
"host/wayland_menu_utils.cc",
"host/wayland_menu_utils.h",
"host/wayland_output.cc",
"host/wayland_output.h",
"host/wayland_output_manager.cc",
"host/wayland_output_manager.h",
"host/wayland_pointer.cc",
"host/wayland_pointer.h",
"host/wayland_popup.cc",
"host/wayland_popup.h",
"host/wayland_screen.cc",
"host/wayland_screen.h",
"host/wayland_shm.cc",
"host/wayland_shm.h",
"host/wayland_shm_buffer.cc",
"host/wayland_shm_buffer.h",
"host/wayland_subsurface.cc",
"host/wayland_subsurface.h",
"host/wayland_surface.cc",
"host/wayland_surface.h",
"host/wayland_toplevel_window.cc",
"host/wayland_toplevel_window.h",
"host/wayland_touch.cc",
"host/wayland_touch.h",
"host/wayland_window.cc",
"host/wayland_window.h",
"host/wayland_window_drag_controller.cc",
"host/wayland_window_drag_controller.h",
"host/wayland_window_factory.cc",
"host/wayland_window_manager.cc",
"host/wayland_window_manager.h",
"host/wayland_window_observer.cc",
"host/wayland_window_observer.h",
"host/wayland_zaura_shell.cc",
"host/wayland_zaura_shell.h",
"host/wayland_zcr_cursor_shapes.cc",
"host/wayland_zcr_cursor_shapes.h",
"host/wayland_zwp_linux_dmabuf.cc",
"host/wayland_zwp_linux_dmabuf.h",
"host/xdg_foreign_wrapper.cc",
"host/xdg_foreign_wrapper.h",
"host/xdg_popup_wrapper_impl.cc",
"host/xdg_popup_wrapper_impl.h",
"host/xdg_surface_wrapper_impl.cc",
"host/xdg_surface_wrapper_impl.h",
"host/xdg_toplevel_wrapper_impl.cc",
"host/xdg_toplevel_wrapper_impl.h",
"host/zwp_primary_selection_device.cc",
"host/zwp_primary_selection_device.h",
"host/zwp_primary_selection_device_manager.cc",
"host/zwp_primary_selection_device_manager.h",
"host/zwp_primary_selection_offer.cc",
"host/zwp_primary_selection_offer.h",
"host/zwp_text_input_wrapper.h",
"host/zwp_text_input_wrapper_v1.cc",
"host/zwp_text_input_wrapper_v1.h",
"host/zxdg_popup_v6_wrapper_impl.cc",
"host/zxdg_popup_v6_wrapper_impl.h",
"host/zxdg_surface_v6_wrapper_impl.cc",
"host/zxdg_surface_v6_wrapper_impl.h",
"host/zxdg_toplevel_v6_wrapper_impl.cc",
"host/zxdg_toplevel_v6_wrapper_impl.h",
"ozone_platform_wayland.cc",
"ozone_platform_wayland.h",
]
import("//ui/base/ui_features.gni")
if (use_xkbcommon) {
configs += [ "//ui/events/ozone/layout:xkbcommon" ]
}
deps = [
"//base",
"//build:chromeos_buildflags",
"//build/config/linux/libdrm",
"//components/exo/wayland/protocol:aura_shell_protocol",
"//mojo/public/cpp/bindings",
"//mojo/public/cpp/system",
"//skia",
"//third_party/wayland-protocols:cursor_shapes_protocol",
"//third_party/wayland-protocols:extended_drag",
"//third_party/wayland-protocols:gtk_primary_selection_protocol",
"//third_party/wayland-protocols:keyboard_extension_protocol",
"//third_party/wayland-protocols:linux_dmabuf_protocol",
"//third_party/wayland-protocols:linux_explicit_synchronization_protocol",
"//third_party/wayland-protocols:presentation_time_protocol",
"//third_party/wayland-protocols:primary_selection_protocol",
"//third_party/wayland-protocols:text_input_protocol",
"//third_party/wayland-protocols:viewporter_protocol",
"//third_party/wayland-protocols:wayland_drm_protocol",
"//third_party/wayland-protocols:xdg_decoration_protocol",
"//third_party/wayland-protocols:xdg_foreign",
"//third_party/wayland-protocols:xdg_shell_protocol",
"//ui/base",
"//ui/base:buildflags",
"//ui/base/cursor",
"//ui/base/cursor:cursor_base",
"//ui/base/cursor/mojom:cursor_type",
"//ui/base/ime/linux",
"//ui/events",
"//ui/events:dom_keycode_converter",
"//ui/events/keycodes:xkb",
"//ui/events/ozone",
"//ui/events/ozone/evdev",
"//ui/events/ozone/layout",
"//ui/events/platform",
"//ui/gfx",
"//ui/gfx:memory_buffer",
"//ui/gfx/geometry",
"//ui/gfx/linux:drm",
"//ui/ozone:ozone_base",
"//ui/ozone/common",
"//ui/ozone/public/mojom/wayland:wayland_mojom",
"//ui/platform_window",
"//ui/platform_window/wm",
]
if (is_linux || is_chromeos_lacros) {
deps += [ "//ui/base/ime/linux" ]
}
if (use_gtk) {
sources += [
"host/gtk_ui_delegate_wayland.cc",
"host/gtk_ui_delegate_wayland.h",
]
deps += [
"//build/config/linux/gtk",
"//ui/gtk:gtk_ui_delegate",
]
}
if (is_chromeos_lacros) {
deps += [
"//chromeos/crosapi/cpp",
"//chromeos/crosapi/mojom",
"//chromeos/lacros",
]
}
defines = [ "OZONE_IMPLEMENTATION" ]
if (use_system_libwayland) {
defines += [ "USE_LIBWAYLAND_STUBS" ]
deps += [ "//third_party/wayland:wayland_stubs" ]
} else {
deps += [
"//third_party/wayland:wayland_client",
"//third_party/wayland:wayland_egl",
]
}
if (use_wayland_gbm) {
defines += [ "WAYLAND_GBM" ]
sources += [
"gpu/drm_render_node_handle.cc",
"gpu/drm_render_node_handle.h",
"gpu/gbm_pixmap_wayland.cc",
"gpu/gbm_pixmap_wayland.h",
"gpu/gbm_surfaceless_wayland.cc",
"gpu/gbm_surfaceless_wayland.h",
]
deps += [
"//third_party/minigbm",
"//ui/gfx:memory_buffer",
"//ui/gfx/linux:gbm",
]
}
if (use_bundled_weston) {
data_deps = [ "//third_party/weston" ]
}
if (enable_vulkan) {
sources += [
"gpu/vulkan_implementation_wayland.cc",
"gpu/vulkan_implementation_wayland.h",
]
deps += [ "//gpu/vulkan" ]
}
configs += [ "//third_party/khronos:khronos_headers" ]
}
source_set("test_support") {
testonly = true
sources = [
"host/wayland_connection_test_api.h",
"test/global_object.cc",
"test/global_object.h",
"test/mock_buffer.cc",
"test/mock_buffer.h",
"test/mock_pointer.cc",
"test/mock_pointer.h",
"test/mock_surface.cc",
"test/mock_surface.h",
"test/mock_wp_presentation.cc",
"test/mock_wp_presentation.h",
"test/mock_xdg_shell.cc",
"test/mock_xdg_shell.h",
"test/mock_xdg_surface.cc",
"test/mock_xdg_surface.h",
"test/mock_zwp_linux_dmabuf.cc",
"test/mock_zwp_linux_dmabuf.h",
"test/mock_zwp_text_input.cc",
"test/mock_zwp_text_input.h",
"test/scoped_wl_array.cc",
"test/scoped_wl_array.h",
"test/server_object.cc",
"test/server_object.h",
"test/test_compositor.cc",
"test/test_compositor.h",
"test/test_data_device.cc",
"test/test_data_device.h",
"test/test_data_device_manager.cc",
"test/test_data_device_manager.h",
"test/test_data_offer.cc",
"test/test_data_offer.h",
"test/test_data_source.cc",
"test/test_data_source.h",
"test/test_keyboard.cc",
"test/test_keyboard.h",
"test/test_output.cc",
"test/test_output.h",
"test/test_positioner.cc",
"test/test_positioner.h",
"test/test_region.cc",
"test/test_region.h",
"test/test_seat.cc",
"test/test_seat.h",
"test/test_subcompositor.cc",
"test/test_subcompositor.h",
"test/test_subsurface.cc",
"test/test_subsurface.h",
"test/test_touch.cc",
"test/test_touch.h",
"test/test_viewport.cc",
"test/test_viewport.h",
"test/test_viewporter.cc",
"test/test_viewporter.h",
"test/test_wayland_server_thread.cc",
"test/test_wayland_server_thread.h",
"test/test_xdg_popup.cc",
"test/test_xdg_popup.h",
"test/test_zwp_linux_buffer_params.cc",
"test/test_zwp_linux_buffer_params.h",
"test/test_zwp_text_input_manager.cc",
"test/test_zwp_text_input_manager.h",
]
deps = [
":wayland",
"//base:base",
"//ui/ozone:platform",
]
public_deps = [
"//skia",
"//testing/gmock",
"//third_party/wayland:wayland_server",
"//third_party/wayland-protocols:linux_dmabuf_protocol",
"//third_party/wayland-protocols:presentation_time_protocol",
"//third_party/wayland-protocols:text_input_protocol",
"//third_party/wayland-protocols:viewporter_protocol",
"//third_party/wayland-protocols:xdg_shell_protocol",
"//ui/gfx/geometry:geometry",
]
}
source_set("wayland_unittests") {
testonly = true
sources = [
"gpu/wayland_overlay_manager_unittest.cc",
"host/wayland_connection_unittest.cc",
"host/wayland_data_device_unittest.cc",
"host/wayland_data_drag_controller_unittest.cc",
"host/wayland_event_source_unittest.cc",
"host/wayland_input_method_context_unittest.cc",
"host/wayland_keyboard_unittest.cc",
"host/wayland_pointer_unittest.cc",
"host/wayland_screen_unittest.cc",
"host/wayland_touch_unittest.cc",
"host/wayland_window_drag_controller_unittest.cc",
"host/wayland_window_manager_unittests.cc",
"host/wayland_window_unittest.cc",
"host/wayland_zaura_shell_unittest.cc",
"test/wayland_drag_drop_test.cc",
"test/wayland_drag_drop_test.h",
"test/wayland_test.cc",
"test/wayland_test.h",
]
deps = [
":test_support",
":wayland",
"//components/exo/wayland/protocol:aura_shell_protocol",
"//testing/gmock",
"//testing/gtest",
"//third_party/wayland:wayland_server",
"//third_party/wayland-protocols:cursor_shapes_protocol",
"//third_party/wayland-protocols:keyboard_extension_protocol",
"//third_party/wayland-protocols:linux_dmabuf_protocol",
"//third_party/wayland-protocols:text_input_protocol",
"//third_party/wayland-protocols:xdg_shell_protocol",
"//ui/base",
"//ui/base:buildflags",
"//ui/base/cursor",
"//ui/base/ime/linux",
"//ui/events/ozone/layout",
"//ui/gfx/linux:test_support",
"//ui/ozone:platform",
"//ui/ozone:test_support",
"//ui/ozone/common",
"//ui/platform_window/wm",
]
import("//ui/base/ui_features.gni")
if (use_xkbcommon) {
deps += [ "//ui/events/keycodes:xkb" ]
}
defines = [ "WL_HIDE_DEPRECATED" ]
if (use_wayland_gbm) {
sources += [
"gpu/wayland_surface_factory_unittest.cc",
"wayland_buffer_manager_unittest.cc",
]
deps += [
"//build/config/linux/libdrm",
"//ui/gfx/linux:drm",
"//ui/gfx/linux:gbm",
]
defines += [ "WAYLAND_GBM" ]
}
}
fuzzer_test("wayland_buffer_fuzzer") {
defines = [ "WL_HIDE_DEPRECATED" ]
sources = [ "fuzzer/wayland_buffer_fuzzer.cc" ]
deps = [
":test_support",
":wayland",
"//base/test:test_support",
"//build/config/linux/libdrm",
"//mojo/core/embedder",
"//mojo/public/cpp/system",
"//ui/gfx:test_support",
"//ui/platform_window:platform_window",
]
}