Chromium Code Reviews| Index: ui/views/BUILD.gn |
| diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn |
| index 80cdae18bfa651b749538015a445e428422bb21f..b514011d74cb91a584d5f0612497605a1b982c32 100644 |
| --- a/ui/views/BUILD.gn |
| +++ b/ui/views/BUILD.gn |
| @@ -31,6 +31,7 @@ aggregate_vector_icons("views_vector_icons") { |
| } |
| component("views") { |
| + allow_circular_includes_from = [ ":views_internal" ] |
| all_dependent_configs = [ ":flags" ] |
| sources = [ |
| "accessibility/native_view_accessibility.h", |
| @@ -412,6 +413,7 @@ component("views") { |
| defines = [ "VIEWS_IMPLEMENTATION" ] |
| deps = [ |
| + ":views_internal", |
| ":views_vector_icons", |
| "//base:i18n", |
| "//base/third_party/dynamic_annotations", |
| @@ -667,6 +669,39 @@ component("views") { |
| } |
| } |
| +static_library("views_internal") { |
|
sky
2017/06/08 19:06:14
This seems overly complex, but I could certainly b
|
| + # External code should depend upon "views". |
| + visibility = [ "./*" ] |
| + |
| + sources = [ |
| + "controls/button/label_button_label.cc", |
| + "controls/button/label_button_label.h", |
| + ] |
| + |
| + defines = [ "VIEWS_IMPLEMENTATION" ] |
| + |
| + deps = [ |
| + "//base", |
| + "//skia:skia", |
| + "//ui/accessibility:ax_gen", |
| + "//ui/gfx", |
| + ] |
| +} |
| + |
| +# Lists headers in :views_internal that are used in :views_unittests. This is |
| +# needed to satisfy gn check because :views_unittests can't depend on both |
| +# :views and :views_internal without linking in :views_internal twice and |
| +# causing duplicate symbols. This happens because when :views is a DLL and |
| +# :views_internal is a static library, the usual symbol resolution breaks. |
| +source_set("test_headers") { |
| + visibility = [ "./*" ] |
| + check_includes = false # Deps are checked in :views_internal. |
| + |
| + sources = [ |
| + "controls/button/label_button_label.h", |
|
brettw
2017/06/13 22:33:57
What's the ever higher level goal here? You want v
tapted
2017/06/14 09:14:09
Yup - exactly.
|
| + ] |
| +} |
|
tapted
2017/06/08 04:11:32
You can see the other things I attempted in earlie
|
| + |
| static_library("test_support_internal") { |
| testonly = true |
| sources = [ |
| @@ -857,6 +892,7 @@ source_set("views_unittests_sources") { |
| "controls/button/custom_button_unittest.cc", |
| "controls/button/image_button_factory_unittest.cc", |
| "controls/button/image_button_unittest.cc", |
| + "controls/button/label_button_label_unittest.cc", |
| "controls/button/label_button_unittest.cc", |
| "controls/button/menu_button_unittest.cc", |
| "controls/button/toggle_button_unittest.cc", |
| @@ -915,7 +951,9 @@ source_set("views_unittests_sources") { |
| # Make all deps in this target public so both views_unittests and |
| # views_mus_unittests will get them. |
| public_deps = [ |
| + ":test_headers", |
| ":test_support", |
| + ":views", |
|
tapted
2017/06/08 04:11:32
One problem with the approach used by ":test_suppo
|
| "//base", |
| "//base:i18n", |
| "//base/test:test_support", |