| Index: BUILD.gn | 
| diff --git a/BUILD.gn b/BUILD.gn | 
| index e736f99430356e0696442d7ae2c7e69cc396df93..0ee906c8c342241a9ac65d0a2de78d022be3a388 100644 | 
| --- a/BUILD.gn | 
| +++ b/BUILD.gn | 
| @@ -130,6 +130,17 @@ config("libplatform_config") { | 
| include_dirs = [ "include" ] | 
| } | 
|  | 
| +# This config should be applied to code using the libbase. | 
| +config("libbase_config") { | 
| +  if (is_component_build) { | 
| +    defines = [ "USING_V8_BASE_SHARED" ] | 
| +  } | 
| +  libs = [] | 
| +  if (is_android && current_toolchain != host_toolchain) { | 
| +    libs += [ "log" ] | 
| +  } | 
| +} | 
| + | 
| # This config should be applied to code using the libsampler. | 
| config("libsampler_config") { | 
| include_dirs = [ "include" ] | 
| @@ -145,10 +156,6 @@ config("external_config") { | 
| if (v8_enable_inspector_override) { | 
| include_dirs += [ "$target_gen_dir/include" ] | 
| } | 
| -  libs = [] | 
| -  if (is_android && current_toolchain != host_toolchain) { | 
| -    libs += [ "log" ] | 
| -  } | 
| } | 
|  | 
| # This config should only be applied to code that needs to be explicitly | 
| @@ -2150,9 +2157,7 @@ v8_source_set("v8_base") { | 
| } | 
| } | 
|  | 
| -v8_source_set("v8_libbase") { | 
| -  visibility = [ ":*" ]  # Only targets in this file can depend on this. | 
| - | 
| +v8_component("v8_libbase") { | 
| sources = [ | 
| "src/base/adapters.h", | 
| "src/base/atomic-utils.h", | 
| @@ -2168,6 +2173,7 @@ v8_source_set("v8_libbase") { | 
| "src/base/atomicops_internals_x86_gcc.cc", | 
| "src/base/atomicops_internals_x86_gcc.h", | 
| "src/base/atomicops_internals_x86_msvc.h", | 
| +    "src/base/base-export.h", | 
| "src/base/bits.cc", | 
| "src/base/bits.h", | 
| "src/base/build_config.h", | 
| @@ -2218,8 +2224,14 @@ v8_source_set("v8_libbase") { | 
|  | 
| configs = [ ":internal_config_base" ] | 
|  | 
| +  public_configs = [ ":libbase_config" ] | 
| + | 
| defines = [] | 
|  | 
| +  if (is_component_build) { | 
| +    defines = [ "BUILDING_V8_BASE_SHARED" ] | 
| +  } | 
| + | 
| if (is_posix) { | 
| sources += [ "src/base/platform/platform-posix.cc" ] | 
| } | 
| @@ -2363,6 +2375,7 @@ v8_source_set("fuzzer_support_nocomponent") { | 
| ] | 
|  | 
| public_deps = [ | 
| +    ":v8_libbase", | 
| ":v8_libplatform", | 
| ] | 
| } | 
| @@ -2391,6 +2404,7 @@ if (current_toolchain == v8_snapshot_toolchain) { | 
|  | 
| deps = [ | 
| ":v8_base", | 
| +      ":v8_libbase", | 
| ":v8_libplatform", | 
| ":v8_nosnapshot", | 
| "//build/config/sanitizers:deps", | 
| @@ -2513,6 +2527,7 @@ v8_executable("d8") { | 
| deps = [ | 
| ":d8_js2c", | 
| ":v8", | 
| +    ":v8_libbase", | 
| ":v8_libplatform", | 
| "//build/config/sanitizers:deps", | 
| "//build/win:default_exe_manifest", | 
| @@ -2553,6 +2568,7 @@ v8_executable("v8_hello_world") { | 
|  | 
| deps = [ | 
| ":v8", | 
| +    ":v8_libbase", | 
| ":v8_libplatform", | 
| "//build/config/sanitizers:deps", | 
| "//build/win:default_exe_manifest", | 
| @@ -2577,6 +2593,7 @@ v8_executable("v8_sample_process") { | 
|  | 
| deps = [ | 
| ":v8", | 
| +    ":v8_libbase", | 
| ":v8_libplatform", | 
| "//build/config/sanitizers:deps", | 
| "//build/win:default_exe_manifest", | 
| @@ -2599,6 +2616,7 @@ v8_executable("v8_parser_shell") { | 
| ] | 
|  | 
| deps = [ | 
| +    ":v8_libbase", | 
| ":v8_libplatform", | 
| "//build/config/sanitizers:deps", | 
| "//build/win:default_exe_manifest", | 
| @@ -2642,6 +2660,7 @@ if (want_v8_shell) { | 
|  | 
| deps = [ | 
| ":v8", | 
| +      ":v8_libbase", | 
| ":v8_libplatform", | 
| "//build/config/sanitizers:deps", | 
| "//build/win:default_exe_manifest", | 
|  |