1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181
|
# 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/features/features.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",
"gtk_event_loop.cc",
"gtk_event_loop.h",
"gtk_key_bindings_handler.cc",
"gtk_key_bindings_handler.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",
"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",
]
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",
]
# Automatically depends on the GTK version associated with the current build
# flags.
group("libgtkui") {
if (use_gtk3) {
public_deps = [
":libgtk3ui",
]
} else {
public_deps = [
":libgtk2ui",
]
}
}
# TODO(thomasanderson): libgtk2ui and libgtk3ui share much of the same code.
# Extract the common code into a template.
component("libgtk2ui") {
sources = common_sources + [
"native_theme_gtk2.cc",
"native_theme_gtk2.h",
]
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",
]
}
# This is compiled with "all" even when it's not referenced to ensure that
# GTK3 continues to build. GTK3 is explicitly specified by some distros.
if (use_gtk3) {
component("libgtk3ui") {
sources = common_sources + [
"native_theme_gtk3.cc",
"native_theme_gtk3.h",
]
configs += common_configs
defines = [ "LIBGTKUI_IMPLEMENTATION" ]
# GTK3 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/gtk3",
"//build/config/linux/gtk3:gtkprint3",
]
public_deps = [
"//chrome/browser:theme_properties",
]
}
}
|