Chromium Code Reviews| Index: url/BUILD.gn |
| diff --git a/url/BUILD.gn b/url/BUILD.gn |
| index 361c516fd28584324eb085477122423c0db687df..c93272c116b90c7607fc695c9af8e0a1531b431c 100644 |
| --- a/url/BUILD.gn |
| +++ b/url/BUILD.gn |
| @@ -2,60 +2,57 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| +import("//build/buildflag_header.gni") |
| import("//testing/test.gni") |
| +import("features.gni") |
| if (is_android) { |
| import("//build/config/android/rules.gni") |
| } |
| -# Shared sources between url and url_lib_use_icu_alternatives_on_android. |
| -url_shared_sources = [ |
| - "gurl.cc", |
| - "gurl.h", |
| - "origin.cc", |
| - "origin.h", |
| - "scheme_host_port.cc", |
| - "scheme_host_port.h", |
| - "third_party/mozilla/url_parse.cc", |
| - "third_party/mozilla/url_parse.h", |
| - "url_canon.h", |
| - "url_canon_etc.cc", |
| - "url_canon_filesystemurl.cc", |
| - "url_canon_fileurl.cc", |
| - "url_canon_host.cc", |
| - "url_canon_internal.cc", |
| - "url_canon_internal.h", |
| - "url_canon_internal_file.h", |
| - "url_canon_ip.cc", |
| - "url_canon_ip.h", |
| - "url_canon_mailtourl.cc", |
| - "url_canon_path.cc", |
| - "url_canon_pathurl.cc", |
| - "url_canon_query.cc", |
| - "url_canon_relative.cc", |
| - "url_canon_stdstring.cc", |
| - "url_canon_stdstring.h", |
| - "url_canon_stdurl.cc", |
| - "url_constants.cc", |
| - "url_constants.h", |
| - "url_export.h", |
| - "url_file.h", |
| - "url_parse_file.cc", |
| - "url_parse_internal.h", |
| - "url_util.cc", |
| - "url_util.h", |
| -] |
| +buildflag_header("features") { |
| + header = "features.h" |
| + flags = [ "USE_PLATFORM_ICU_ALTERNATIVES=$use_platform_icu_alternatives" ] |
| +} |
| component("url") { |
| - sources = url_shared_sources + [ |
| - "url_canon_icu.cc", |
| - "url_canon_icu.h", |
| - ] |
| + sources = [ |
| + "gurl.cc", |
| + "gurl.h", |
| + "origin.cc", |
| + "origin.h", |
| + "scheme_host_port.cc", |
| + "scheme_host_port.h", |
| + "third_party/mozilla/url_parse.cc", |
| + "third_party/mozilla/url_parse.h", |
| + "url_canon.h", |
| + "url_canon_etc.cc", |
| + "url_canon_filesystemurl.cc", |
| + "url_canon_fileurl.cc", |
| + "url_canon_host.cc", |
| + "url_canon_internal.cc", |
| + "url_canon_internal.h", |
| + "url_canon_internal_file.h", |
| + "url_canon_ip.cc", |
| + "url_canon_ip.h", |
| + "url_canon_mailtourl.cc", |
| + "url_canon_path.cc", |
| + "url_canon_pathurl.cc", |
| + "url_canon_query.cc", |
| + "url_canon_relative.cc", |
| + "url_canon_stdstring.cc", |
| + "url_canon_stdstring.h", |
| + "url_canon_stdurl.cc", |
| + "url_constants.cc", |
| + "url_constants.h", |
| + "url_export.h", |
| + "url_file.h", |
| + "url_parse_file.cc", |
| + "url_parse_internal.h", |
| + "url_util.cc", |
| + "url_util.h", |
| + ] |
| - if (is_win) { |
| - # Don't conflict with Windows' "url.dll". |
| - output_name = "url_lib" |
| - } |
| defines = [ "URL_IMPLEMENTATION" ] |
| configs += [ |
| @@ -66,9 +63,46 @@ component("url") { |
| deps = [ |
| "//base", |
| "//base/third_party/dynamic_annotations", |
| - "//third_party/icu", |
| - "//third_party/icu:icudata", |
| ] |
| + |
| + if (is_win) { |
| + # Don't conflict with Windows' "url.dll". |
| + output_name = "url_lib" |
| + } |
| + |
| + # ICU support. |
| + if (use_platform_icu_alternatives) { |
| + if (is_android) { |
| + sources += [ |
| + "android/url_jni_registrar.cc", |
| + "android/url_jni_registrar.h", |
| + "url_canon_icu_alternatives_android.cc", |
| + "url_canon_icu_alternatives_android.h", |
| + ] |
| + deps += [ |
| + ":features", |
| + ":url_java", |
| + ":url_jni_headers", |
| + "//base", |
| + "//base/third_party/dynamic_annotations", |
| + ] |
| + } else if (is_ios) { |
| + sources += [ "url_canon_icu_alternatives_ios.mm" ] |
| + } else { |
| + assert(false, |
| + "ICU alternative is not implemented for platform: " + target_os) |
| + } |
| + } else { |
| + # Use ICU. |
| + sources += [ |
| + "url_canon_icu.cc", |
| + "url_canon_icu.h", |
| + ] |
| + deps += [ |
| + "//third_party/icu", |
| + "//third_party/icu:icudata", |
|
brettw
2016/04/08 21:40:06
You should be able to delete this icudata referenc
kapishnikov
2016/04/11 19:58:48
Done.
|
| + ] |
| + } |
| } |
| if (is_android) { |
| @@ -85,32 +119,6 @@ if (is_android) { |
| ] |
| jni_package = "url" |
| } |
| - |
| - component("url_lib_use_icu_alternatives_on_android") { |
| - sources = url_shared_sources + [ |
| - "android/url_jni_registrar.cc", |
| - "android/url_jni_registrar.h", |
| - "url_canon_icu_alternatives_android.cc", |
| - "url_canon_icu_alternatives_android.h", |
| - ] |
| - |
| - defines = [ |
| - "URL_IMPLEMENTATION", |
| - "USE_ICU_ALTERNATIVES_ON_ANDROID=1", |
| - ] |
| - |
| - configs += [ |
| - # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
| - "//build/config/compiler:no_size_t_to_int_warning", |
| - ] |
| - |
| - deps = [ |
| - ":url_java", |
| - ":url_jni_headers", |
| - "//base", |
| - "//base/third_party/dynamic_annotations", |
| - ] |
| - } |
| } |
| test("url_unittests") { |
| @@ -126,22 +134,44 @@ test("url_unittests") { |
| "url_util_unittest.cc", |
| ] |
| - if (!is_ios) { |
| - sources += [ "mojo/url_gurl_struct_traits_unittest.cc" ] |
| - } |
| - |
| - # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
| - configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
| - |
| deps = [ |
| ":url", |
| "//base", |
| "//base/test:test_support", |
| "//testing/gtest", |
| - "//third_party/icu:icuuc", |
| ] |
| if (!is_ios) { |
| + sources += [ "mojo/url_gurl_struct_traits_unittest.cc" ] |
| + } |
| + |
| + if (use_platform_icu_alternatives) { |
| + # Unit tests that are not supported by the current ICU alternatives on Android. |
| + if (is_android) { |
| + sources -= [ |
| + "url_canon_icu_unittest.cc", |
| + "url_canon_unittest.cc", |
| + ] |
| + deps += [ ":url_java" ] |
| + } |
| + |
| + # Unit tests that are not supported by the current ICU alternatives on iOS. |
| + if (is_ios) { |
| + sources -= [ |
| + "origin_unittest.cc", |
| + "scheme_host_port_unittest.cc", |
| + "url_canon_icu_unittest.cc", |
| + "url_canon_unittest.cc", |
| + ] |
| + } |
| + } else { # !use_platform_icu_alternatives |
| + deps += [ "//third_party/icu:icuuc" ] |
| + } |
| + |
| + # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
| + configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
| + |
| + if (!is_ios) { |
| deps += [ |
| "//mojo/edk/system", |
| "//mojo/edk/test:test_support", |