| # Copyright 2014 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| if (is_android) { |
| import("//build/config/android/rules.gni") |
| } |
| import("//base/allocator/partition_allocator/partition_alloc.gni") |
| import("//testing/test.gni") |
| import("//tools/v8_context_snapshot/v8_context_snapshot.gni") |
| import("//v8/gni/v8.gni") |
| |
| component("gin") { |
| sources = [ |
| "arguments.cc", |
| "arguments.h", |
| "array_buffer.cc", |
| "array_buffer.h", |
| "context_holder.cc", |
| "converter.cc", |
| "converter.h", |
| "cppgc.cc", |
| "data_object_builder.cc", |
| "data_object_builder.h", |
| "debug_impl.cc", |
| "debug_impl.h", |
| "dictionary.cc", |
| "dictionary.h", |
| "function_template.cc", |
| "function_template.h", |
| "gin_export.h", |
| "gin_features.cc", |
| "gin_features.h", |
| "handle.h", |
| "interceptor.cc", |
| "interceptor.h", |
| "isolate_holder.cc", |
| "modules/console.cc", |
| "modules/console.h", |
| "object_template_builder.cc", |
| "object_template_builder.h", |
| "per_context_data.cc", |
| "per_context_data.h", |
| "per_isolate_data.cc", |
| "per_isolate_data.h", |
| "public/context_holder.h", |
| "public/cppgc.h", |
| "public/debug.h", |
| "public/gin_embedders.h", |
| "public/isolate_holder.h", |
| "public/v8_idle_task_runner.h", |
| "public/v8_platform.h", |
| "public/wrapper_info.h", |
| "runner.cc", |
| "runner.h", |
| "shell_runner.cc", |
| "shell_runner.h", |
| "thread_isolation.cc", |
| "thread_isolation.h", |
| "time_clamper.cc", |
| "time_clamper.h", |
| "try_catch.cc", |
| "try_catch.h", |
| "v8_foreground_task_runner.cc", |
| "v8_foreground_task_runner.h", |
| "v8_foreground_task_runner_base.cc", |
| "v8_foreground_task_runner_base.h", |
| "v8_foreground_task_runner_with_locker.cc", |
| "v8_foreground_task_runner_with_locker.h", |
| "v8_initializer.cc", |
| "v8_initializer.h", |
| "v8_isolate_memory_dump_provider.cc", |
| "v8_isolate_memory_dump_provider.h", |
| "v8_platform.cc", |
| "v8_shared_memory_dump_provider.cc", |
| "v8_shared_memory_dump_provider.h", |
| "wrappable.cc", |
| "wrappable.h", |
| "wrapper_info.cc", |
| ] |
| |
| if (use_partition_alloc) { |
| sources += [ |
| "v8_platform_page_allocator.cc", |
| "v8_platform_page_allocator.h", |
| ] |
| if (enable_pkeys) { |
| sources += [ |
| "v8_platform_thread_isolated_allocator.cc", |
| "v8_platform_thread_isolated_allocator.h", |
| ] |
| } |
| } |
| |
| if (v8_use_external_startup_data) { |
| data = [ "$root_out_dir/snapshot_blob.bin" ] |
| sources += [ "public/v8_snapshot_file_type.h" ] |
| } |
| |
| defines = [ "GIN_IMPLEMENTATION" ] |
| |
| public_deps = [ |
| "//base", |
| "//base/allocator:buildflags", |
| "//v8", |
| ] |
| deps = [ |
| "//third_party/abseil-cpp:absl", |
| "//tools/v8_context_snapshot:buildflags", |
| ] |
| |
| if (is_mac) { |
| frameworks = [ "CoreFoundation.framework" ] |
| } |
| |
| configs += [ "//v8:external_startup_data" ] |
| } |
| |
| executable("gin_shell") { |
| sources = [ "shell/gin_main.cc" ] |
| |
| deps = [ |
| ":gin", |
| "//base", |
| "//base:i18n", |
| "//build/win:default_exe_manifest", |
| "//v8", |
| ] |
| |
| configs += [ "//v8:external_startup_data" ] |
| } |
| |
| if (is_android && enable_java_templates && |
| current_toolchain == default_toolchain) { |
| android_assets("v8_snapshot_assets") { |
| if (v8_use_external_startup_data) { |
| disable_compression = true |
| sources = [] |
| deps = [] |
| if (use_v8_context_snapshot) { |
| deps += [ "//tools/v8_context_snapshot:v8_context_snapshot" ] |
| sources += [ "$root_build_dir/$v8_context_snapshot_filename" ] |
| } |
| if (!use_v8_context_snapshot || include_both_v8_snapshots) { |
| if (current_cpu == "arm" || current_cpu == "x86") { |
| _arch_suffix = "32" |
| } else { |
| _arch_suffix = "64" |
| } |
| renaming_sources = [ "$root_build_dir/snapshot_blob.bin" ] |
| renaming_destinations = [ "snapshot_blob_$_arch_suffix.bin" ] |
| deps += [ "//v8:run_mksnapshot_default" ] |
| } |
| } |
| } |
| |
| if (android_64bit_target_cpu && !skip_secondary_abi_for_cq) { |
| android_assets("v8_snapshot_secondary_abi_assets") { |
| # only import asset when v8_use_external_startup_data == true |
| # like "v8_snapshot_assets" above |
| if (v8_use_external_startup_data) { |
| assert(android_64bit_target_cpu, |
| "32-bit targets shouldn't have secondary abi") |
| disable_compression = true |
| sources = [] |
| deps = [] |
| if (use_v8_context_snapshot) { |
| sources += [ "$root_out_dir/v8_context_snapshot_32.bin" ] |
| deps += [ |
| "//tools/v8_context_snapshot($android_secondary_abi_toolchain)", |
| ] |
| } |
| if (!use_v8_context_snapshot || include_both_v8_snapshots) { |
| _secondary_abi_out_dir = |
| get_label_info("//v8($android_secondary_abi_toolchain)", |
| "root_out_dir") |
| renaming_sources = [ "$_secondary_abi_out_dir/snapshot_blob.bin" ] |
| renaming_destinations = [ "snapshot_blob_32.bin" ] |
| deps += [ |
| "//v8:run_mksnapshot_default($android_secondary_abi_toolchain)", |
| ] |
| } |
| } |
| } |
| } |
| } |
| |
| source_set("gin_test") { |
| testonly = true |
| sources = [ |
| "test/v8_test.cc", |
| "test/v8_test.h", |
| ] |
| |
| public_deps = [ |
| ":gin", |
| "//testing/gtest", |
| ] |
| deps = [ |
| "//base/test:test_support", |
| "//v8", |
| ] |
| |
| configs += [ "//v8:external_startup_data" ] |
| } |
| |
| test("gin_unittests") { |
| sources = [ |
| "arguments_unittest.cc", |
| "array_buffer_unittest.cc", |
| "converter_unittest.cc", |
| "data_object_builder_unittest.cc", |
| "interceptor_unittest.cc", |
| "isolate_holder_unittest.cc", |
| "per_context_data_unittest.cc", |
| "shell_runner_unittest.cc", |
| "test/run_all_unittests.cc", |
| "time_clamper_unittest.cc", |
| "v8_isolate_memory_dump_provider_unittest.cc", |
| "v8_platform_unittest.cc", |
| "v8_shared_memory_dump_provider_unittest.cc", |
| "wrappable_unittest.cc", |
| ] |
| |
| deps = [ |
| ":gin_test", |
| "//base/test:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//v8", |
| ] |
| |
| if (use_partition_alloc) { |
| sources += [ "v8_platform_page_allocator_unittest.cc" ] |
| if (target_cpu == "arm64" && (is_linux || is_android)) { |
| deps += [ "//base/allocator/partition_allocator/src/partition_alloc:arm_bti_testfunctions" ] |
| } |
| } |
| |
| configs += [ "//v8:external_startup_data" ] |
| |
| data_deps = [ |
| "//testing/buildbot/filters:gin_unittests_filters", |
| "//tools/v8_context_snapshot:v8_context_snapshot", |
| ] |
| data = [] |
| |
| # gin_shell is not an Android/iOS app. |
| if (!is_android && !is_ios) { |
| sources += [ "shell/gin_shell_unittest.cc" ] |
| deps += [ ":gin_shell" ] |
| data_deps += [ ":gin_shell" ] |
| data += [ "shell/hello_world.js" ] |
| } |
| |
| # On Android, the APK must bundle the startup data. |
| if (is_android) { |
| deps += [ ":v8_snapshot_assets" ] |
| } |
| |
| if (is_fuchsia) { |
| additional_manifest_fragments = |
| [ "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml" ] |
| } |
| } |