| Index: third_party/cld_2/cld_2.gyp | 
| diff --git a/third_party/cld_2/cld_2.gyp b/third_party/cld_2/cld_2.gyp | 
| index 6cda4028eadb91ad20f661c0e17b19b7023e001f..a27f7a40e9aaaa4884b4b42468cc76bd30ddb3de 100644 | 
| --- a/third_party/cld_2/cld_2.gyp | 
| +++ b/third_party/cld_2/cld_2.gyp | 
| @@ -22,51 +22,76 @@ | 
| ], | 
| }, | 
| 'variables': { | 
| +    # This variable controls which dependency is resolved by the pass-through | 
| +    # target 'cld2_platform_impl', and allows the embedder to choose which | 
| +    # kind of CLD2 support is required at build time: | 
| +    # | 
| +    # - If the value is 'static', then the cld2_platform_impl target will depend | 
| +    #   upon the cld2_static target | 
| +    # - If the value is 'dynamic', then the cld2_platform_impl target will | 
| +    #   depend upon the cld2_dynamic target. | 
| +    # | 
| +    # High-level targets for Chromium unit tests hard-code a dependency upon | 
| +    # cld2_static because doing so makes sense for use cases that aren't | 
| +    # affected by the loading of language detection data; however, most other | 
| +    # targets (e.g. the final executables and interactive UI tests) should be | 
| +    # linked against whatever the embedder needs. | 
| +    # | 
| +    # Maintainers: | 
| +    # This value may be reasonably tweaked in a 'conditions' block below on a | 
| +    # per-platform basis. Don't forget to update the expectations in | 
| +    # components/translate/content/browser/browser_cld_utils.cc as well, to | 
| +    # match whatever is done here. | 
| +    'cld2_platform_support%': 'static', | 
| + | 
| # These sources need to be included in both static and dynamic builds as | 
| # well as the dynamic data tool. | 
| 'cld2_core_sources': [ | 
| 'src/internal/cld2tablesummary.h', | 
| -      'src/internal/cldutil.cc', | 
| 'src/internal/cldutil.h', | 
| -      'src/internal/cldutil_shared.cc', | 
| 'src/internal/cldutil_shared.h', | 
| -      'src/internal/compact_lang_det.cc', | 
| -      'src/internal/compact_lang_det_hint_code.cc', | 
| 'src/internal/compact_lang_det_hint_code.h', | 
| -      'src/internal/compact_lang_det_impl.cc', | 
| 'src/internal/compact_lang_det_impl.h', | 
| 'src/internal/debug.h', | 
| -      'src/internal/debug_empty.cc', | 
| -      'src/internal/fixunicodevalue.cc', | 
| 'src/internal/fixunicodevalue.h', | 
| -      'src/internal/generated_distinct_bi_0.cc', | 
| -      'src/internal/generated_entities.cc', | 
| -      'src/internal/generated_language.cc', | 
| 'src/internal/generated_language.h', | 
| -      'src/internal/generated_ulscript.cc', | 
| 'src/internal/generated_ulscript.h', | 
| -      'src/internal/getonescriptspan.cc', | 
| 'src/internal/getonescriptspan.h', | 
| 'src/internal/integral_types.h', | 
| -      'src/internal/lang_script.cc', | 
| 'src/internal/lang_script.h', | 
| 'src/internal/langspan.h', | 
| -      'src/internal/offsetmap.cc', | 
| 'src/internal/offsetmap.h', | 
| 'src/internal/port.h', | 
| -      'src/internal/scoreonescriptspan.cc', | 
| 'src/internal/scoreonescriptspan.h', | 
| 'src/internal/stringpiece.h', | 
| -      'src/internal/tote.cc', | 
| 'src/internal/tote.h', | 
| 'src/internal/utf8prop_lettermarkscriptnum.h', | 
| 'src/internal/utf8repl_lettermarklower.h', | 
| 'src/internal/utf8scannot_lettermarkspecial.h', | 
| -      'src/internal/utf8statetable.cc', | 
| 'src/internal/utf8statetable.h', | 
| 'src/public/compact_lang_det.h', | 
| 'src/public/encodings.h', | 
| ], | 
| +    'cld2_core_impl_sources': [ | 
| +      # Compilation is dependent upon flags. | 
| +      'src/internal/cldutil.cc', | 
| +      'src/internal/cldutil_shared.cc', | 
| +      'src/internal/compact_lang_det.cc', | 
| +      'src/internal/compact_lang_det_hint_code.cc', | 
| +      'src/internal/compact_lang_det_impl.cc', | 
| +      'src/internal/debug_empty.cc', | 
| +      'src/internal/fixunicodevalue.cc', | 
| +      'src/internal/generated_distinct_bi_0.cc', | 
| +      'src/internal/generated_entities.cc', | 
| +      'src/internal/generated_language.cc', | 
| +      'src/internal/generated_ulscript.cc', | 
| +      'src/internal/getonescriptspan.cc', | 
| +      'src/internal/lang_script.cc', | 
| +      'src/internal/offsetmap.cc', | 
| +      'src/internal/scoreonescriptspan.cc', | 
| +      'src/internal/tote.cc', | 
| +      'src/internal/utf8statetable.cc', | 
| +    ], | 
| 'cld2_dynamic_data_loader_sources': [ | 
| 'src/internal/cld2_dynamic_data.h', | 
| 'src/internal/cld2_dynamic_data.cc', | 
| @@ -104,26 +129,35 @@ | 
| 'sources': [ | 
| # Note: sources list duplicated in GN build. | 
| '<@(cld2_core_sources)', | 
| +        '<@(cld2_core_impl_sources)', | 
| '<@(cld2_data_sources)', | 
| '<@(cld2_dynamic_data_loader_sources)', | 
| 'src/internal/cld2_dynamic_data_extractor.h', | 
| 'src/internal/cld2_dynamic_data_extractor.cc', | 
| 'src/internal/cld2_dynamic_data_tool.cc', | 
| ], | 
| +      'defines': ['CLD2_DYNAMIC_MODE'], | 
| }, | 
|  | 
| { | 
| # GN version: //third_party/cld_2 | 
| +      # Depending upon cld_2 will provide core headers and function definitions, | 
| +      # but no data. You must also depend on one of the following two targets: | 
| +      # cld2_static - for a statically-linked data set built into the executable | 
| +      # cld2_dynamic - for a dynamic data set loaded at runtime | 
| 'target_name': 'cld_2', | 
| 'type': 'static_library', | 
| -      'sources': [], | 
| +      'sources': ['<@(cld2_core_sources)'], | 
| 'dependencies': [], | 
| -      'conditions': [ | 
| -        ['cld2_data_source=="static"', | 
| -          {'dependencies': ['cld2_static']}, | 
| -          {'dependencies': ['cld2_dynamic']} | 
| -        ], | 
| -      ], | 
| +    }, | 
| + | 
| +    # As described above in the comments for cld2_platform_support, this is a | 
| +    # passthrough target that allows high-level targets to depend upon the same | 
| +    # CLD support as desired by the embedder. | 
| +    { | 
| +      'target_name': 'cld2_platform_impl', | 
| +      'type': 'none', | 
| +      'dependencies': ['cld2_<(cld2_platform_support)'], | 
| }, | 
|  | 
| { | 
| @@ -136,6 +170,7 @@ | 
| ], | 
| 'sources': [ | 
| '<@(cld2_core_sources)', | 
| +        '<@(cld2_core_impl_sources)', | 
| '<@(cld2_data_sources)', | 
| ], | 
| }, | 
| @@ -150,12 +185,10 @@ | 
| ], | 
| 'sources': [ | 
| '<@(cld2_core_sources)', | 
| +        '<@(cld2_core_impl_sources)', | 
| '<@(cld2_dynamic_data_loader_sources)', | 
| ], | 
| 'defines': ['CLD2_DYNAMIC_MODE'], | 
| -      'all_dependent_settings': { | 
| -        'defines': ['CLD2_DYNAMIC_MODE'], | 
| -      }, | 
| }, | 
| ], | 
| } | 
|  |