| # Copyright 2020 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/config/chromeos/ui_mode.gni") |
| import("//build/config/features.gni") |
| import("//build/config/linux/gtk/gtk.gni") |
| import("//build/config/linux/pkg_config.gni") |
| import("//build/config/ozone.gni") |
| import("//build/config/ui.gni") |
| import("//printing/buildflags/buildflags.gni") |
| import("//testing/test.gni") |
| import("//tools/generate_stubs/rules.gni") |
| |
| assert(is_linux || is_chromeos, |
| "This file should only be referenced on Linux or Chrome OS") |
| assert(use_gio, "GIO is required for building with GTK") |
| |
| source_set("gtk_types") { |
| visibility = [ ":gtk_stubs" ] |
| public = [ "gtk_types.h" ] |
| } |
| |
| pkg_config("gtk_internal_config") { |
| # We dlopen() GTK, so make sure not to add a link-time dependency on it. |
| ignore_libs = true |
| |
| # Gtk requires gmodule, but it does not list it as a dependency in some |
| # misconfigured systems. |
| packages = [ |
| "gmodule-2.0", |
| "gthread-2.0", |
| ] |
| if (gtk_version == 3) { |
| packages += [ |
| "gtk+-3.0", |
| "gtk+-unix-print-3.0", |
| ] |
| } else { |
| assert(gtk_version == 4) |
| packages += [ |
| "gtk4", |
| "gtk4-unix-print", |
| ] |
| } |
| } |
| |
| group("gtk_config") { |
| public_configs = [ ":gtk_internal_config" ] |
| } |
| |
| generate_stubs("gtk_stubs") { |
| visibility = [ ":gtk" ] |
| sigs = [ |
| "gdk_pixbuf.sigs", |
| "gdk.sigs", |
| "gsk.sigs", |
| "gtk.sigs", |
| "gio.sigs", |
| ] |
| extra_header = "gtk.fragment" |
| output_name = "gtk_stubs" |
| public_deps = [ |
| ":gtk_config", |
| ":gtk_types", |
| ] |
| logging_function = "LogNoop()" |
| logging_include = "ui/gtk/log_noop.h" |
| } |
| |
| component("gtk") { |
| visibility = [ "//ui/linux:linux_ui_factory" ] |
| public = [ "gtk_ui_factory.h" ] |
| |
| sources = [ |
| "gtk_color_mixers.cc", |
| "gtk_color_mixers.h", |
| "gtk_compat.cc", |
| "gtk_compat.h", |
| "gtk_key_bindings_handler.cc", |
| "gtk_key_bindings_handler.h", |
| "gtk_ui.cc", |
| "gtk_ui.h", |
| "gtk_ui_factory.cc", |
| "gtk_ui_platform.h", |
| "gtk_ui_platform_stub.cc", |
| "gtk_ui_platform_stub.h", |
| "gtk_util.cc", |
| "gtk_util.h", |
| "input_method_context_impl_gtk.cc", |
| "input_method_context_impl_gtk.h", |
| "native_theme_gtk.cc", |
| "native_theme_gtk.h", |
| "nav_button_provider_gtk.cc", |
| "nav_button_provider_gtk.h", |
| "printing/print_dialog_gtk.cc", |
| "printing/print_dialog_gtk.h", |
| "printing/printing_gtk_util.cc", |
| "printing/printing_gtk_util.h", |
| "select_file_dialog_linux_gtk.cc", |
| "select_file_dialog_linux_gtk.h", |
| "settings_provider.h", |
| "settings_provider_gtk.cc", |
| "settings_provider_gtk.h", |
| "window_frame_provider_gtk.cc", |
| "window_frame_provider_gtk.h", |
| ] |
| defines = [ "IS_GTK_IMPL" ] |
| configs += [ |
| "//build/config/linux/pangocairo", |
| "//build/linux:gio_config", |
| ] |
| |
| deps = [ |
| ":gtk_stubs", |
| "//base", |
| "//printing/buildflags", |
| "//skia", |
| |
| # GTK pulls pangoft2, which requires HarfBuzz symbols. When linking |
| # our own HarfBuzz avoid mixing symbols from system HarfBuzz and |
| # our own through the indirect dependency to harfbuzz-ng here. |
| "//third_party:freetype_harfbuzz", |
| "//ui/aura", |
| "//ui/base", |
| "//ui/base:buildflags", |
| "//ui/base:ozone_buildflags", |
| "//ui/base/ime", |
| "//ui/base/ime/linux", |
| "//ui/color", |
| "//ui/color:mixers", |
| "//ui/display", |
| "//ui/events", |
| "//ui/events:dom_keyboard_layout", |
| "//ui/events:dom_keycode_converter", |
| "//ui/gfx", |
| "//ui/gfx:native_widget_types", |
| "//ui/gfx/geometry", |
| "//ui/linux:linux_ui", |
| "//ui/native_theme", |
| "//ui/shell_dialogs", |
| "//ui/strings", |
| "//ui/views", |
| "//url", |
| ] |
| |
| if (enable_printing) { |
| deps += [ "//printing" ] |
| } |
| |
| if (use_cups) { |
| deps += [ "//printing/mojom" ] |
| } |
| |
| if (ozone_platform_x11) { |
| sources += [ |
| "x/gtk_event_loop_x11.cc", |
| "x/gtk_event_loop_x11.h", |
| "x/gtk_ui_platform_x11.cc", |
| "x/gtk_ui_platform_x11.h", |
| ] |
| deps += [ |
| "//ui/base/x", |
| "//ui/events/platform/x11", |
| "//ui/gfx/x", |
| ] |
| } |
| |
| if (ozone_platform_wayland) { |
| sources += [ |
| "wayland/gtk_ui_platform_wayland.cc", |
| "wayland/gtk_ui_platform_wayland.h", |
| ] |
| } |
| |
| # TODO: This should be removed. |
| deps += [ "//ui/ozone" ] |
| } |