# Copyright 2014 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. assert(is_linux, "This file should only be referenced on Linux") import("//build/config/features.gni") import("//build/config/linux/gtk/gtk.gni") import("//printing/buildflags/buildflags.gni") # Automatically depends on the GTK version associated with the current build # flags. group("libgtkui") { if (use_gtk3) { public_deps = [ ":libgtk3ui", ] } else { public_deps = [ ":libgtk2ui", ] } } template("libgtkui") { component(target_name) { sources = invoker.sources + [ "app_indicator_icon.cc", "app_indicator_icon.h", "app_indicator_icon_menu.cc", "app_indicator_icon_menu.h", "chrome_gtk_frame.cc", "chrome_gtk_frame.h", "chrome_gtk_menu_subclasses.cc", "chrome_gtk_menu_subclasses.h", "gtk_event_loop.cc", "gtk_event_loop.h", "gtk_key_bindings_handler.cc", "gtk_key_bindings_handler.h", "gtk_signal.h", "gtk_status_icon.cc", "gtk_status_icon.h", "gtk_ui.cc", "gtk_ui.h", "gtk_util.cc", "gtk_util.h", "libgtkui_export.h", "menu_util.cc", "menu_util.h", "settings_provider.h", "print_dialog_gtk.cc", "print_dialog_gtk.h", "printing_gtk_util.cc", "printing_gtk_util.h", "select_file_dialog_impl.cc", "select_file_dialog_impl.h", "select_file_dialog_impl_gtk.cc", "select_file_dialog_impl_gtk.h", "select_file_dialog_impl_kde.cc", "skia_utils_gtk.cc", "skia_utils_gtk.h", "unity_service.cc", "unity_service.h", "x11_input_method_context_impl_gtk.cc", "x11_input_method_context_impl_gtk.h", ] configs += [ "//build/config/linux/pangocairo", "//build/config/linux:x11", ] if (use_gio) { sources += [ "settings_provider_gsettings.cc", "settings_provider_gsettings.h", ] configs += [ "//build/linux:gio_config" ] } if (use_cups) { configs += [ "//printing:cups" ] } defines = [ "LIBGTKUI_IMPLEMENTATION" ] deps = invoker.deps + [ "//chrome/browser/ui/views", "//base", "//base:i18n", "//base/third_party/dynamic_annotations", "//cc/paint", "//chrome/common:buildflags", "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", "//chrome/app:command_ids", "//chrome/app/theme:theme_resources", "//components/resources", "//content/public/browser", "//printing", "//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/ime", "//ui/display", "//ui/events", "//ui/events:dom_keycode_converter", "//ui/events:events_base", "//ui/events/platform/x11", "//ui/gfx", "//ui/gfx/geometry", "//ui/gfx/x", "//ui/native_theme", "//ui/resources", "//ui/shell_dialogs", "//ui/strings", "//ui/views", ] public_deps = [ "//chrome/browser:theme_properties", ] } } if (use_gtk3) { libgtkui("libgtk3ui") { sources = [ "gtk3_background_painter.cc", "gtk3_background_painter.h", "native_theme_gtk3.cc", "native_theme_gtk3.h", "nav_button_provider_gtk3.cc", "nav_button_provider_gtk3.h", "settings_provider_gtk3.cc", "settings_provider_gtk3.h", ] deps = [ "//build/config/linux/gtk3", "//build/config/linux/gtk3:gtkprint3", ] } } else { libgtkui("libgtk2ui") { sources = [ "native_theme_gtk2.cc", "native_theme_gtk2.h", ] deps = [ "//build/config/linux/gtk2", "//build/config/linux/gtk2:gtkprint2", ] } }