Index: chrome/browser/ui/libgtkui/BUILD.gn |
diff --git a/chrome/browser/ui/libgtkui/BUILD.gn b/chrome/browser/ui/libgtkui/BUILD.gn |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d970a80b5461c203fe5c38654378039314d5f165 |
--- /dev/null |
+++ b/chrome/browser/ui/libgtkui/BUILD.gn |
@@ -0,0 +1,149 @@ |
+# 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/ui.gni") |
+ |
+# gn orders flags on a target before flags from configs. The default config |
+# adds -Wall, and these flags have to be after -Wall -- so they need to come |
+# from a config and can't be on the target directly. |
+config("libgtkui_warnings") { |
+ if (is_clang) { |
+ cflags = [ |
+ # G_DEFINE_TYPE automatically generates a *get_instance_private inline |
+ # function after glib 2.37. That's unused. Prevent to complain about it. |
+ "-Wno-unused-function", |
+ |
+ # G_STATIC_ASSERT uses a typedef as a static_assert. |
+ "-Wno-unused-local-typedef", |
+ ] |
+ } |
+} |
+ |
+common_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", |
+ "gtk2_event_loop.cc", |
+ "gtk2_event_loop.h", |
+ "gtk2_key_bindings_handler.cc", |
+ "gtk2_key_bindings_handler.h", |
+ "gtk2_status_icon.cc", |
+ "gtk2_status_icon.h", |
+ "gtk2_ui.cc", |
+ "gtk2_ui.h", |
+ "gtk2_util.cc", |
+ "gtk2_util.h", |
+ "libgtkui_export.h", |
+ "menu_util.cc", |
+ "menu_util.h", |
+ "native_theme_gtk2.cc", |
+ "native_theme_gtk2.h", |
+ "print_dialog_gtk2.cc", |
+ "print_dialog_gtk2.h", |
+ "printing_gtk2_util.cc", |
+ "printing_gtk2_util.h", |
+ "select_file_dialog_impl.cc", |
+ "select_file_dialog_impl.h", |
+ "select_file_dialog_impl_gtk2.cc", |
+ "select_file_dialog_impl_gtk2.h", |
+ "select_file_dialog_impl_kde.cc", |
+ "skia_utils_gtk2.cc", |
+ "skia_utils_gtk2.h", |
+ "unity_service.cc", |
+ "unity_service.h", |
+ "x11_input_method_context_impl_gtk2.cc", |
+ "x11_input_method_context_impl_gtk2.h", |
+] |
+ |
+common_configs = [] |
+ |
+if (use_gconf) { |
+ common_sources += [ |
+ "gconf_listener.cc", |
+ "gconf_listener.h", |
+ ] |
+ common_configs += [ "//build/config/linux/gconf" ] |
+} |
+ |
+if (use_cups) { |
+ common_configs += [ "//printing:cups" ] |
+} |
+ |
+common_configs += [ |
+ ":libgtkui_warnings", |
+ "//build/config/linux:x11", |
+] |
+ |
+common_deps = [ |
+ "//base", |
+ "//base:i18n", |
+ "//base/third_party/dynamic_annotations", |
+ "//chrome:extra_resources", |
+ "//chrome:resources", |
+ "//chrome:strings", |
+ "//chrome/app:command_ids", |
+ "//chrome/app/theme:theme_resources", |
+ "//components/resources", |
+ "//content/public/browser", |
+ "//printing", |
+ "//skia", |
+ "//ui/aura", |
+ "//ui/base", |
+ "//ui/base/ime", |
+ "//ui/display", |
+ "//ui/events", |
+ "//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", |
+] |
+ |
+component("libgtk2ui") { |
+ sources = common_sources |
+ configs += common_configs |
+ defines = [ "LIBGTKUI_IMPLEMENTATION" ] |
+ |
+ # GTK2 pulls pangoft2 as dependency, and pangoft2 depends on harfbuzz. |
+ # To avoid missing indirectly referenced harfbuzz symbols from pango, |
+ # some hack is required when bundled harfbuzz is used and component build is |
+ # disabled. |
+ # See crbug.com/462689 for details. |
+ all_dependent_configs = [ "//third_party/harfbuzz-ng:pangoft2_link_hack" ] |
+ |
+ deps = common_deps + [ |
+ "//build/config/linux/gtk2", |
+ "//build/config/linux/gtk2:gtkprint2", |
+ ] |
+ public_deps = [ |
+ "//chrome/browser:theme_properties", |
+ ] |
+} |
+ |
+component("libgtk3ui") { |
+ sources = common_sources |
+ configs += common_configs |
+ defines = [ "LIBGTKUI_IMPLEMENTATION" ] |
+ |
+ deps = common_deps + [ |
+ "//build/config/linux/gtk3", |
+ "//build/config/linux/gtk3:gtkprint3", |
+ ] |
+ public_deps = [ |
+ "//chrome/browser:theme_properties", |
+ ] |
+} |