| # Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| # for details. All rights reserved. Use of this source code is governed by a |
| # BSD-style license that can be found in the LICENSE file. |
| |
| import("../../build/dart/dart_action.gni") |
| import("../../sdk/lib/_http/http_sources.gni") |
| import("../../sdk/lib/io/io_sources.gni") |
| import("../../sdk/lib/cli/cli_sources.gni") |
| import("../../utils/generate_entry_points_json.gni") |
| import("../runtime_args.gni") |
| import("../vm/heap/heap_sources.gni") |
| import("../vm/compiler/compiler_sources.gni") |
| import("../vm/vm_sources.gni") |
| import("builtin_impl_sources.gni") |
| import("builtin_sources.gni") |
| import("io_impl_sources.gni") |
| import("io_sources.gni") |
| import("cli_impl_sources.gni") |
| import("cli_sources.gni") |
| import("vmservice/vmservice_sources.gni") |
| |
| # Generate a resources.cc file for the service isolate without Observatory. |
| action("gen_resources_cc") { |
| visibility = [ ":*" ] # Only targets in this file can see this. |
| script = "../tools/create_resources.py" |
| inputs = [ |
| "../tools/create_resources.py", |
| ] |
| |
| # The path below is hard coded for the Mojo and Flutter trees. When moving |
| # the Dart runtime to gn, this path might need to be updated. |
| sources = rebase_path(vmservice_sources, "", "../bin/vmservice/") |
| outputs = [ |
| "$target_gen_dir/resources_gen.cc", |
| ] |
| args = [ |
| "--output", |
| rebase_path("$target_gen_dir/resources_gen.cc", root_build_dir), |
| "--outer_namespace", |
| "dart", |
| "--inner_namespace", |
| "bin", |
| "--table_name", |
| "service_bin", |
| "--root_prefix", |
| rebase_path(".", root_build_dir) + "/", |
| ] + rebase_path(sources, root_build_dir) |
| } |
| |
| template("gen_library_src_path") { |
| assert(defined(invoker.sources), "Need sources in $target_name") |
| assert(defined(invoker.output), "Need output in $target_name") |
| action(target_name) { |
| visibility = [ ":*" ] # Only targets in this file can see this. |
| script = "../tools/gen_library_src_paths.py" |
| inputs = [ |
| "../tools/gen_library_src_paths.py", |
| "builtin_in.cc", |
| ] + invoker.sources |
| outputs = [ |
| invoker.output, |
| ] |
| name = invoker.name |
| kind = invoker.kind |
| library_name = "dart:${name}" |
| if (defined(invoker.library_name)) { |
| library_name = invoker.library_name |
| } |
| args = [ |
| "--output", |
| rebase_path(invoker.output, root_build_dir), |
| "--input_cc", |
| rebase_path("builtin_in.cc", root_build_dir), |
| "--include", |
| "bin/builtin.h", |
| "--var_name", |
| "dart::bin::Builtin::${name}_${kind}_paths_", |
| "--library_name", |
| library_name, |
| ] + rebase_path(invoker.sources, root_build_dir) |
| } |
| } |
| |
| gen_library_src_path("generate_builtin_cc_file") { |
| name = "_builtin" |
| kind = "source" |
| sources = builtin_sources |
| output = "$target_gen_dir/builtin_gen.cc" |
| } |
| |
| rebased_io_sdk_sources = rebase_path(io_sdk_sources, ".", "../../sdk/lib/io") |
| |
| gen_library_src_path("generate_io_cc_file") { |
| name = "io" |
| kind = "source" |
| sources = [ "../../sdk/lib/io/io.dart" ] + rebased_io_sdk_sources |
| output = "$target_gen_dir/io_gen.cc" |
| } |
| |
| gen_library_src_path("generate_io_patch_cc_file") { |
| name = "io" |
| kind = "patch" |
| sources = io_runtime_sources |
| output = "$target_gen_dir/io_patch_gen.cc" |
| } |
| |
| rebased_http_sdk_sources = |
| rebase_path(http_sdk_sources, ".", "../../sdk/lib/_http") |
| |
| gen_library_src_path("generate_http_cc_file") { |
| name = "_http" |
| kind = "source" |
| sources = [ "../../sdk/lib/_http/http.dart" ] + rebased_http_sdk_sources |
| output = "$target_gen_dir/http_gen.cc" |
| } |
| |
| rebased_cli_sdk_sources = rebase_path(cli_sdk_sources, ".", "../../sdk/lib/cli") |
| |
| gen_library_src_path("generate_cli_cc_file") { |
| name = "cli" |
| kind = "source" |
| sources = [ "../../sdk/lib/cli/cli.dart" ] + rebased_cli_sdk_sources |
| output = "$target_gen_dir/cli_gen.cc" |
| } |
| |
| gen_library_src_path("generate_cli_patch_cc_file") { |
| name = "cli" |
| kind = "patch" |
| sources = cli_runtime_sources |
| output = "$target_gen_dir/cli_patch_gen.cc" |
| } |
| |
| gen_library_src_path("generate_html_cc_file") { |
| name = "html" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/html/dart2js/html_dart2js.dart", |
| ] |
| output = "$target_gen_dir/html_gen.cc" |
| } |
| |
| gen_library_src_path("generate_html_common_cc_file") { |
| name = "html_common" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/html/html_common/conversions.dart", |
| "../../sdk/lib/html/html_common/conversions_dart2js.dart", |
| "../../sdk/lib/html/html_common/css_class_set.dart", |
| "../../sdk/lib/html/html_common/device.dart", |
| "../../sdk/lib/html/html_common/filtered_element_list.dart", |
| "../../sdk/lib/html/html_common/html_common.dart", |
| "../../sdk/lib/html/html_common/lists.dart", |
| ] |
| output = "$target_gen_dir/html_common_gen.cc" |
| } |
| |
| gen_library_src_path("generate_js_cc_file") { |
| name = "js" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/js/dart2js/js_dart2js.dart", |
| ] |
| output = "$target_gen_dir/js_gen.cc" |
| } |
| |
| gen_library_src_path("generate_js_util_cc_file") { |
| name = "js_util" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/js_util/dart2js/js_util_dart2js.dart", |
| ] |
| output = "$target_gen_dir/js_util_gen.cc" |
| } |
| |
| gen_library_src_path("generate_indexed_db_cc_file") { |
| name = "indexed_db" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/indexed_db/dart2js/indexed_db_dart2js.dart", |
| ] |
| output = "$target_gen_dir/indexed_db_gen.cc" |
| } |
| |
| gen_library_src_path("generate_web_gl_cc_file") { |
| name = "web_gl" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/web_gl/dart2js/web_gl_dart2js.dart", |
| ] |
| output = "$target_gen_dir/web_gl_gen.cc" |
| } |
| |
| gen_library_src_path("generate_metadata_cc_file") { |
| name = "metadata" |
| library_name = "metadata.dart" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/html/html_common/metadata.dart", |
| ] |
| output = "$target_gen_dir/metadata_gen.cc" |
| } |
| |
| gen_library_src_path("generate_web_sql_cc_file") { |
| name = "web_sql" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/web_sql/dart2js/web_sql_dart2js.dart", |
| ] |
| output = "$target_gen_dir/web_sql_gen.cc" |
| } |
| |
| gen_library_src_path("generate_svg_cc_file") { |
| name = "svg" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/svg/dart2js/svg_dart2js.dart", |
| ] |
| output = "$target_gen_dir/svg_gen.cc" |
| } |
| |
| gen_library_src_path("generate_web_audio_cc_file") { |
| name = "web_audio" |
| kind = "source" |
| sources = [ |
| "../../sdk/lib/web_audio/dart2js/web_audio_dart2js.dart", |
| ] |
| output = "$target_gen_dir/web_audio_gen.cc" |
| } |
| |
| config("libdart_builtin_config") { |
| if (!is_win) { |
| libs = [ "dl" ] |
| } |
| if (is_android) { |
| libs += [ |
| "android", |
| "log", |
| ] |
| } |
| } |
| |
| template("build_libdart_builtin") { |
| extra_configs = [] |
| if (defined(invoker.extra_configs)) { |
| extra_configs += invoker.extra_configs |
| } |
| static_library(target_name) { |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_config", |
| ] + extra_configs |
| if (is_fuchsia) { |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| public_configs = [ ":libdart_builtin_config" ] |
| deps = [ |
| ":generate_builtin_cc_file", |
| ":generate_cli_cc_file", |
| ":generate_cli_patch_cc_file", |
| ":generate_html_cc_file", |
| ":generate_html_common_cc_file", |
| ":generate_http_cc_file", |
| ":generate_indexed_db_cc_file", |
| ":generate_io_cc_file", |
| ":generate_io_patch_cc_file", |
| ":generate_js_cc_file", |
| ":generate_js_util_cc_file", |
| ":generate_metadata_cc_file", |
| ":generate_svg_cc_file", |
| ":generate_web_audio_cc_file", |
| ":generate_web_gl_cc_file", |
| ":generate_web_sql_cc_file", |
| ] |
| if (is_fuchsia) { |
| public_deps = [ |
| "//zircon/public/lib/fdio", |
| ] |
| } |
| include_dirs = [ ".." ] |
| set_sources_assignment_filter([ |
| "*_test.cc", |
| "*_test.h", |
| ]) |
| sources = [ |
| "log_android.cc", |
| "log_fuchsia.cc", |
| "log_linux.cc", |
| "log_macos.cc", |
| "log_win.cc", |
| ] + builtin_impl_sources |
| } |
| } |
| |
| build_libdart_builtin("libdart_builtin") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_config", |
| ] |
| } |
| |
| build_libdart_builtin("libdart_builtin_product") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_config", |
| ] |
| } |
| |
| build_libdart_builtin("libdart_builtin_fuchsia") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| } |
| |
| build_libdart_builtin("libdart_builtin_product_fuchsia") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| } |
| |
| template("build_gen_snapshot") { |
| extra_configs = [] |
| if (defined(invoker.extra_configs)) { |
| extra_configs += invoker.extra_configs |
| } |
| extra_deps = [] |
| if (defined(invoker.extra_deps)) { |
| extra_deps += invoker.extra_deps |
| } |
| executable(target_name) { |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_precompiler_config", |
| ] + extra_configs |
| if (is_fuchsia) { |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| deps = [ |
| ":gen_resources_cc", |
| ":generate_builtin_cc_file", |
| ":generate_http_cc_file", |
| ":generate_io_cc_file", |
| ":generate_io_patch_cc_file", |
| ":generate_cli_cc_file", |
| ":generate_cli_patch_cc_file", |
| ] + extra_deps |
| |
| sources = [ |
| # Include generated source files. |
| "$target_gen_dir/builtin_gen.cc", |
| "$target_gen_dir/cli_gen.cc", |
| "$target_gen_dir/cli_patch_gen.cc", |
| "$target_gen_dir/http_gen.cc", |
| "$target_gen_dir/io_gen.cc", |
| "$target_gen_dir/io_patch_gen.cc", |
| "$target_gen_dir/resources_gen.cc", |
| "address_sanitizer.cc", |
| "builtin.cc", |
| "builtin.h", |
| "gzip.cc", |
| "gzip.h", |
| "loader.cc", |
| "loader.h", |
| |
| # Very limited native resolver provided. |
| "builtin_common.cc", |
| "builtin_gen_snapshot.cc", |
| "dfe.cc", |
| "dfe.h", |
| "gen_snapshot.cc", |
| "options.cc", |
| "options.h", |
| "vmservice_impl.cc", |
| "vmservice_impl.h", |
| ] |
| |
| include_dirs = [ |
| "..", |
| "//third_party", |
| ] |
| |
| if (dart_use_tcmalloc) { |
| deps += [ "//third_party/tcmalloc" ] |
| } |
| |
| if (is_mac) { |
| libs = [ |
| "CoreFoundation.framework", |
| "CoreServices.framework", |
| ] |
| } |
| |
| if (is_win) { |
| libs = [ |
| "iphlpapi.lib", |
| "psapi.lib", |
| "ws2_32.lib", |
| "Rpcrt4.lib", |
| "shlwapi.lib", |
| "winmm.lib", |
| ] |
| } |
| } |
| } |
| |
| build_gen_snapshot("gen_snapshot") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_config", |
| ] |
| extra_deps = [ |
| ":gen_snapshot_dart_io", |
| ":libdart_builtin", |
| "..:libdart_nosnapshot_with_precompiler", |
| ] |
| } |
| |
| build_gen_snapshot("gen_snapshot_product") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_config", |
| ] |
| extra_deps = [ |
| ":gen_snapshot_dart_io_product", |
| ":libdart_builtin_product", |
| "..:libdart_nosnapshot_with_precompiler_product", |
| ] |
| } |
| |
| build_gen_snapshot("gen_snapshot_fuchsia") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| extra_deps = [ |
| ":gen_snapshot_dart_io_fuchsia", |
| ":libdart_builtin_fuchsia", |
| "..:libdart_nosnapshot_with_precompiler_fuchsia", |
| ] |
| } |
| |
| build_gen_snapshot("gen_snapshot_product_fuchsia") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| extra_deps = [ |
| ":gen_snapshot_dart_io_product_fuchsia", |
| ":libdart_builtin_product_fuchsia", |
| "..:libdart_nosnapshot_with_precompiler_product_fuchsia", |
| ] |
| } |
| |
| # A source set for the implementation of 'dart:io' library |
| # (without secure sockets) suitable for linking with gen_snapshot. |
| template("build_gen_snapshot_dart_io") { |
| extra_configs = [] |
| if (defined(invoker.extra_configs)) { |
| extra_configs += invoker.extra_configs |
| } |
| source_set(target_name) { |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_precompiler_config", |
| ] + extra_configs |
| deps = [] |
| |
| if (is_fuchsia) { |
| deps += [ "//garnet/public/lib/netstack/c" ] |
| public_deps = [ |
| "//zircon/public/lib/fdio", |
| ] |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| |
| deps += [ "$dart_zlib_path" ] |
| |
| custom_sources_filter = [ |
| "*_test.cc", |
| "*_test.h", |
| "builtin.cc", |
| "builtin_common.cc", |
| "builtin_gen_snapshot.cc", |
| ] |
| if (!is_mac && !is_ios) { |
| # Dart tree uses *_macos.* instead of *_mac.* |
| custom_sources_filter += [ |
| "*_macos.h", |
| "*_macos.cc", |
| ] |
| } |
| set_sources_assignment_filter(custom_sources_filter) |
| |
| defines = [ "DART_IO_SECURE_SOCKET_DISABLED" ] |
| |
| sources = io_impl_sources + builtin_impl_sources + cli_impl_sources |
| sources += [ |
| "io_natives.cc", |
| "io_natives.h", |
| ] |
| |
| include_dirs = [ |
| "..", |
| "//third_party", |
| ] |
| } |
| } |
| |
| build_gen_snapshot_dart_io("gen_snapshot_dart_io") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_config", |
| ] |
| } |
| |
| build_gen_snapshot_dart_io("gen_snapshot_dart_io_product") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_config", |
| ] |
| } |
| |
| build_gen_snapshot_dart_io("gen_snapshot_dart_io_fuchsia") { |
| extra_configs = [ |
| "..:dart_maybe_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| } |
| |
| build_gen_snapshot_dart_io("gen_snapshot_dart_io_product_fuchsia") { |
| extra_configs = [ |
| "..:dart_product_config", |
| "..:dart_os_fuchsia_config", |
| ] |
| } |
| |
| # A source set for the implementation of 'dart:io' library. |
| template("dart_io") { |
| extra_configs = [] |
| if (defined(invoker.extra_configs)) { |
| extra_configs += invoker.extra_configs |
| } |
| extra_sources = [] |
| if (defined(invoker.extra_sources)) { |
| extra_sources += invoker.extra_sources |
| } |
| source_set(target_name) { |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_os_config", |
| ] + extra_configs |
| if (is_fuchsia) { |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| custom_sources_filter = [ |
| "*_test.cc", |
| "*_test.h", |
| "builtin.cc", |
| "builtin_gen_snapshot.cc", |
| ] |
| if (!is_mac && !is_ios) { |
| # Dart tree uses *_macos.* instead of *_mac.* |
| custom_sources_filter += [ |
| "*_macos.h", |
| "*_macos.cc", |
| ] |
| } |
| set_sources_assignment_filter(custom_sources_filter) |
| |
| defines = [] |
| deps = [ |
| "$dart_zlib_path", |
| ] |
| if (is_mac || is_ios) { |
| libs = [ |
| "CoreFoundation.framework", |
| "Security.framework", |
| ] |
| |
| if (is_mac) { |
| libs += [ "CoreServices.framework" ] |
| } |
| } |
| |
| deps += [ "//third_party/boringssl" ] |
| |
| if (is_fuchsia) { |
| deps += [ "//garnet/public/lib/netstack/c" ] |
| public_deps = [ |
| "//zircon/public/lib/fdio", |
| ] |
| } |
| |
| sources = io_impl_sources + builtin_impl_sources + cli_impl_sources |
| sources += [ |
| "builtin_natives.cc", |
| "io_natives.cc", |
| "io_natives.h", |
| "log_android.cc", |
| "log_linux.cc", |
| "log_macos.cc", |
| "log_win.cc", |
| "log.h", |
| ] + extra_sources |
| |
| if (is_linux || is_win || is_fuchsia) { |
| if (dart_use_fallback_root_certificates) { |
| sources += [ "//third_party/root_certificates/root_certificates.cc" ] |
| } else { |
| defines += [ "DART_IO_ROOT_CERTS_DISABLED" ] |
| } |
| } |
| |
| include_dirs = [ |
| "..", |
| "//third_party", |
| ] |
| } |
| } |
| |
| dart_io("embedded_dart_io") { |
| extra_configs = [ "..:dart_maybe_product_config" ] |
| extra_sources = [ |
| "builtin_nolib.cc", |
| "embedded_dart_io.cc", |
| "embedded_dart_io.h", |
| ] |
| } |
| |
| dart_io("embedded_dart_io_product") { |
| extra_configs = [ "..:dart_product_config" ] |
| extra_sources = [ |
| "builtin_nolib.cc", |
| "embedded_dart_io.cc", |
| "embedded_dart_io.h", |
| ] |
| } |
| |
| dart_io("standalone_dart_io") { |
| extra_configs = [ "..:dart_maybe_product_config" ] |
| extra_sources = [] |
| } |
| |
| gen_snapshot_action("generate_snapshot_bin") { |
| vm_snapshot_data = "$target_gen_dir/vm_snapshot_data.bin" |
| vm_snapshot_instructions = "$target_gen_dir/vm_snapshot_instructions.bin" |
| isolate_snapshot_data = "$target_gen_dir/isolate_snapshot_data.bin" |
| isolate_snapshot_instructions = |
| "$target_gen_dir/isolate_snapshot_instructions.bin" |
| |
| inputs = [] |
| outputs = [ |
| vm_snapshot_data, |
| vm_snapshot_instructions, |
| isolate_snapshot_data, |
| isolate_snapshot_instructions, |
| ] |
| args = [ |
| "--deterministic", |
| "--snapshot_kind=" + dart_core_snapshot_kind, |
| "--vm_snapshot_data=" + rebase_path(vm_snapshot_data, root_build_dir), |
| "--vm_snapshot_instructions=" + |
| rebase_path(vm_snapshot_instructions, root_build_dir), |
| "--isolate_snapshot_data=" + |
| rebase_path(isolate_snapshot_data, root_build_dir), |
| "--isolate_snapshot_instructions=" + |
| rebase_path(isolate_snapshot_instructions, root_build_dir), |
| ] |
| } |
| |
| # Generates an assembly file defining a given symbol with the bytes from a |
| # binary file. Places the symbol in a text section if 'executable' is true, |
| # otherwise places the symbol in a read-only data section. |
| template("bin_to_assembly") { |
| assert(defined(invoker.deps), "Must define deps") |
| assert(defined(invoker.input), "Must define input binary file") |
| assert(defined(invoker.output), "Must define output assembly file") |
| assert(defined(invoker.symbol), "Must define symbol name") |
| assert(defined(invoker.executable), "Must define boolean executable") |
| |
| action(target_name) { |
| deps = invoker.deps |
| script = "../tools/bin_to_assembly.py" |
| args = [ |
| "--input", |
| rebase_path(invoker.input), |
| "--output", |
| rebase_path(invoker.output), |
| "--symbol_name", |
| invoker.symbol, |
| "--target_os", |
| current_os, |
| ] |
| if (defined(invoker.size_symbol)) { |
| args += [ |
| "--size_symbol_name", |
| invoker.size_symbol, |
| "--target_arch", |
| current_cpu, |
| ] |
| } |
| if (invoker.executable) { |
| args += [ "--executable" ] |
| } |
| inputs = [ |
| script, |
| invoker.input, |
| ] |
| outputs = [ |
| invoker.output, |
| ] |
| } |
| } |
| |
| bin_to_assembly("vm_snapshot_data_assembly") { |
| deps = [ |
| ":generate_snapshot_bin", |
| ] |
| input = "$target_gen_dir/vm_snapshot_data.bin" |
| output = "$target_gen_dir/vm_snapshot_data.S" |
| symbol = "kDartVmSnapshotData" |
| executable = false |
| } |
| |
| bin_to_assembly("vm_snapshot_instructions_assembly") { |
| deps = [ |
| ":generate_snapshot_bin", |
| ] |
| input = "$target_gen_dir/vm_snapshot_instructions.bin" |
| output = "$target_gen_dir/vm_snapshot_instructions.S" |
| symbol = "kDartVmSnapshotInstructions" |
| executable = true |
| } |
| |
| bin_to_assembly("isolate_snapshot_data_assembly") { |
| deps = [ |
| ":generate_snapshot_bin", |
| ] |
| input = "$target_gen_dir/isolate_snapshot_data.bin" |
| output = "$target_gen_dir/isolate_snapshot_data.S" |
| symbol = "kDartCoreIsolateSnapshotData" |
| executable = false |
| } |
| |
| bin_to_assembly("isolate_snapshot_instructions_assembly") { |
| deps = [ |
| ":generate_snapshot_bin", |
| ] |
| input = "$target_gen_dir/isolate_snapshot_instructions.bin" |
| output = "$target_gen_dir/isolate_snapshot_instructions.S" |
| symbol = "kDartCoreIsolateSnapshotInstructions" |
| executable = true |
| } |
| |
| bin_to_assembly("kernel_service_dill_S") { |
| deps = [ |
| "../../utils/kernel-service:kernel_service_dill", |
| ] |
| input = "$root_gen_dir/kernel_service.dill" |
| output = "$root_gen_dir/kernel_service.dill.S" |
| symbol = "kKernelServiceDill" |
| size_symbol = "kKernelServiceDillSize" |
| executable = false |
| } |
| |
| bin_to_assembly("platform_dill_S") { |
| deps = [ |
| "../vm:vm_legacy_platform", |
| ] |
| input = "$root_out_dir/vm_platform.dill" |
| output = "$target_gen_dir/vm_platform.dill.S" |
| symbol = "kPlatformDill" |
| size_symbol = "kPlatformDillSize" |
| executable = false |
| } |
| |
| bin_to_assembly("platform_strong_dill_S") { |
| deps = [ |
| "../vm:vm_platform", |
| ] |
| input = "$root_out_dir/vm_platform_strong.dill" |
| output = "$target_gen_dir/vm_platform_strong.dill.S" |
| symbol = "kPlatformStrongDill" |
| size_symbol = "kPlatformStrongDillSize" |
| executable = false |
| } |
| |
| source_set("dart_snapshot_cc") { |
| deps = [ |
| ":isolate_snapshot_data_assembly", |
| ":isolate_snapshot_instructions_assembly", |
| ":vm_snapshot_data_assembly", |
| ":vm_snapshot_instructions_assembly", |
| ] |
| sources = [ |
| "$target_gen_dir/isolate_snapshot_data.S", |
| "$target_gen_dir/isolate_snapshot_instructions.S", |
| "$target_gen_dir/vm_snapshot_data.S", |
| "$target_gen_dir/vm_snapshot_instructions.S", |
| ] |
| } |
| |
| source_set("dart_kernel_platform_cc") { |
| deps = [ |
| ":kernel_service_dill_S", |
| ":platform_dill_S", |
| ":platform_strong_dill_S", |
| ] |
| sources = [ |
| "$root_gen_dir/kernel_service.dill.S", |
| "$target_gen_dir/vm_platform.dill.S", |
| "$target_gen_dir/vm_platform_strong.dill.S", |
| ] |
| } |
| |
| template("dart_executable") { |
| extra_configs = [] |
| if (defined(invoker.extra_configs)) { |
| extra_configs += invoker.extra_configs |
| } |
| extra_deps = [] |
| if (defined(invoker.extra_deps)) { |
| extra_deps += invoker.extra_deps |
| } |
| extra_defines = [] |
| if (defined(invoker.extra_defines)) { |
| extra_defines = invoker.extra_defines |
| } |
| extra_sources = [] |
| if (defined(invoker.extra_sources)) { |
| extra_sources += invoker.extra_sources |
| } |
| target_type = "executable" |
| if (defined(invoker.target_type)) { |
| target_type = invoker.target_type |
| } |
| target(target_type, target_name) { |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_config", |
| "..:dart_os_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_maybe_product_config", |
| ] + extra_configs |
| if (is_fuchsia) { |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| if (target_os != current_os && target_os == "fuchsia") { |
| # We already have these in the standalone build, but Fuchsia doesn't |
| # have them. They are needed for running Fuchsia binaries built for the |
| # host. |
| if (is_linux) { |
| configs += [ "../../build/config/gcc:executable_ldconfig" ] |
| } else if (is_mac) { |
| configs += [ "../../build/config/mac:mac_dynamic_flags" ] |
| } |
| } |
| |
| deps = [ |
| ":standalone_dart_io", |
| ":libdart_builtin", |
| "//third_party/boringssl", |
| "$dart_zlib_path", |
| ] + extra_deps |
| |
| defines = extra_defines |
| if (exclude_kernel_service) { |
| defines += [ "EXCLUDE_CFE_AND_KERNEL_PLATFORM" ] |
| } |
| |
| if (dart_use_tcmalloc) { |
| deps += [ "//third_party/tcmalloc" ] |
| } |
| |
| sources = [ |
| "error_exit.cc", |
| "error_exit.h", |
| "main.cc", |
| "main_options.cc", |
| "main_options.h", |
| "options.cc", |
| "options.h", |
| "snapshot_utils.cc", |
| "snapshot_utils.h", |
| "vmservice_impl.cc", |
| "vmservice_impl.h", |
| ] + extra_sources |
| |
| include_dirs = [ |
| "..", |
| "//third_party", |
| ] |
| |
| if (is_win) { |
| ldflags = [ "/EXPORT:Dart_True" ] |
| } else { |
| # Adds all symbols to the dynamic symbol table, not just used ones. |
| # This is needed to make native extensions work. |
| ldflags = [ "-rdynamic" ] |
| } |
| |
| if (is_win) { |
| libs = [ |
| "iphlpapi.lib", |
| "psapi.lib", |
| "ws2_32.lib", |
| "Rpcrt4.lib", |
| "shlwapi.lib", |
| "winmm.lib", |
| ] |
| } |
| } |
| } |
| |
| dart_executable("dart") { |
| extra_deps = [ |
| "..:libdart_jit", |
| ":dart_snapshot_cc", |
| ":gen_resources_cc", |
| ] |
| if (dart_runtime_mode != "release") { |
| extra_deps += [ "../observatory:standalone_observatory_archive" ] |
| } |
| extra_sources = [ |
| "builtin_nolib.cc", |
| "dfe.cc", |
| "dfe.h", |
| "loader.cc", |
| "loader.h", |
| "gzip.cc", |
| "gzip.h", |
| "$target_gen_dir/resources_gen.cc", |
| ] |
| if (dart_runtime_mode == "release") { |
| extra_sources += [ "observatory_assets_empty.cc" ] |
| } |
| if (!exclude_kernel_service) { |
| extra_deps += [ ":dart_kernel_platform_cc" ] |
| } |
| } |
| |
| dart_executable("dart_precompiled_runtime") { |
| extra_configs = [ "..:dart_precompiled_runtime_config" ] |
| extra_deps = [ "..:libdart_precompiled_runtime" ] |
| if (dart_runtime_mode != "release") { |
| extra_deps += [ "../observatory:standalone_observatory_archive" ] |
| } |
| extra_sources = [ |
| "builtin_nolib.cc", |
| "snapshot_empty.cc", |
| "loader.cc", |
| "loader.h", |
| "gzip.cc", |
| "gzip.h", |
| ] |
| if (dart_runtime_mode == "release") { |
| extra_sources += [ "observatory_assets_empty.cc" ] |
| } |
| } |
| |
| dart_executable("dart_precompiled_runtime_for_linking") { |
| extra_configs = [ "..:dart_precompiled_runtime_config" ] |
| extra_deps = [ "..:libdart_precompiled_runtime" ] |
| if (dart_runtime_mode != "release") { |
| extra_deps += [ "../observatory:standalone_observatory_archive" ] |
| } |
| extra_sources = [ |
| "builtin_nolib.cc", |
| "snapshot_empty.cc", |
| "loader.cc", |
| "loader.h", |
| "gzip.cc", |
| "gzip.h", |
| ] |
| if (dart_runtime_mode == "release") { |
| extra_sources += [ "observatory_assets_empty.cc" ] |
| } |
| extra_defines = [ "DART_LINK_APP_SNAPSHOT" ] |
| target_type = "static_library" |
| } |
| |
| dart_executable("dart_bootstrap") { |
| extra_configs = [ |
| "..:dart_precompiler_config", |
| "..:dart_nosnapshot_config", |
| ] |
| extra_deps = [ |
| ":gen_resources_cc", |
| ":generate_builtin_cc_file", |
| ":generate_html_cc_file", |
| ":generate_html_common_cc_file", |
| ":generate_http_cc_file", |
| ":generate_indexed_db_cc_file", |
| ":generate_io_cc_file", |
| ":generate_io_patch_cc_file", |
| ":generate_js_cc_file", |
| ":generate_js_util_cc_file", |
| ":generate_metadata_cc_file", |
| ":generate_svg_cc_file", |
| ":generate_cli_cc_file", |
| ":generate_cli_patch_cc_file", |
| ":generate_web_audio_cc_file", |
| ":generate_web_gl_cc_file", |
| ":generate_web_sql_cc_file", |
| "..:libdart_nosnapshot_with_precompiler", |
| ] |
| extra_defines = [ "NO_OBSERVATORY" ] |
| extra_sources = [ |
| "builtin.cc", |
| "builtin.h", |
| "dfe.cc", |
| "dfe.h", |
| "loader.cc", |
| "loader.h", |
| "gzip.cc", |
| "gzip.h", |
| "observatory_assets_empty.cc", |
| "snapshot_empty.cc", |
| |
| # Include generated source files. |
| "$target_gen_dir/builtin_gen.cc", |
| "$target_gen_dir/html_common_gen.cc", |
| "$target_gen_dir/html_gen.cc", |
| "$target_gen_dir/http_gen.cc", |
| "$target_gen_dir/indexed_db_gen.cc", |
| "$target_gen_dir/io_gen.cc", |
| "$target_gen_dir/io_patch_gen.cc", |
| "$target_gen_dir/js_gen.cc", |
| "$target_gen_dir/js_util_gen.cc", |
| "$target_gen_dir/metadata_gen.cc", |
| "$target_gen_dir/resources_gen.cc", |
| "$target_gen_dir/svg_gen.cc", |
| "$target_gen_dir/cli_gen.cc", |
| "$target_gen_dir/cli_patch_gen.cc", |
| "$target_gen_dir/web_audio_gen.cc", |
| "$target_gen_dir/web_gl_gen.cc", |
| "$target_gen_dir/web_sql_gen.cc", |
| ] |
| if (!exclude_kernel_service) { |
| extra_deps += [ ":dart_kernel_platform_cc" ] |
| } |
| } |
| |
| executable("process_test") { |
| sources = [ |
| "process_test.cc", |
| ] |
| } |
| |
| action("generate_snapshot_test_dat_file") { |
| snapshot_test_dat_file = "$root_gen_dir/snapshot_test.dat" |
| snapshot_test_in_dat_file = "../vm/snapshot_test_in.dat" |
| snapshot_test_dart_file = "../vm/snapshot_test.dart" |
| inputs = [ |
| "../tools/create_string_literal.py", |
| snapshot_test_in_dat_file, |
| snapshot_test_dart_file, |
| ] |
| |
| outputs = [ |
| snapshot_test_dat_file, |
| ] |
| |
| script = "../tools/create_string_literal.py" |
| args = [ |
| "--output", |
| rebase_path(snapshot_test_dat_file), |
| "--input_cc", |
| rebase_path(snapshot_test_in_dat_file), |
| "--include", |
| "INTENTIONALLY_LEFT_BLANK", |
| "--var_name", |
| "INTENTIONALLY_LEFT_BLANK_TOO", |
| rebase_path(snapshot_test_dart_file), |
| ] |
| } |
| |
| executable("run_vm_tests") { |
| if (target_os == "fuchsia") { |
| testonly = true |
| } |
| |
| configs += [ |
| "..:dart_arch_config", |
| "..:dart_config", |
| "..:dart_os_config", |
| "..:dart_maybe_interpreter_config", |
| "..:dart_maybe_product_config", |
| ] |
| if (is_fuchsia) { |
| configs -= [ "//build/config:symbol_visibility_hidden" ] |
| } |
| |
| deps = [ |
| ":dart_kernel_platform_cc", |
| ":dart_snapshot_cc", |
| ":generate_snapshot_test_dat_file", |
| ":libdart_builtin", |
| ":standalone_dart_io", |
| "$dart_zlib_path", |
| "..:libdart_jit", |
| ] |
| include_dirs = [ |
| "..", |
| "$target_gen_dir", |
| ] |
| defines = [ "TESTING" ] |
| |
| if (dart_use_tcmalloc) { |
| deps += [ "//third_party/tcmalloc" ] |
| defines += [ "DART_USE_TCMALLOC" ] |
| } |
| |
| if (is_fuchsia) { |
| deps += [ "//zircon/public/lib/trace" ] |
| } |
| |
| # The VM sources are already included in libdart, so we just want to add in |
| # the tests here. |
| vm_tests = rebase_path(vm_sources_tests, ".", "../vm") |
| compiler_tests = rebase_path(compiler_sources_tests, ".", "../vm/compiler") |
| heap_tests = rebase_path(heap_sources_tests, ".", "../vm/heap") |
| |
| sources = [ |
| "builtin_nolib.cc", |
| "error_exit.cc", |
| "error_exit.h", |
| "run_vm_tests.cc", |
| "snapshot_utils.cc", |
| "snapshot_utils.h", |
| ] + builtin_impl_tests + vm_tests + compiler_tests + heap_tests |
| |
| if (!is_win) { |
| ldflags = [ "-rdynamic" ] |
| } |
| |
| if (is_win) { |
| libs = [ |
| "iphlpapi.lib", |
| "psapi.lib", |
| "ws2_32.lib", |
| "Rpcrt4.lib", |
| "shlwapi.lib", |
| "winmm.lib", |
| ] |
| } |
| } |
| |
| shared_library("test_extension") { |
| deps = [ |
| ":dart", |
| ] |
| sources = [ |
| "test_extension.c", |
| "test_extension_dllmain_win.cc", |
| ] |
| include_dirs = [ ".." ] |
| defines = [ |
| # The only effect of DART_SHARED_LIB is to export the Dart API. |
| "DART_SHARED_LIB", |
| ] |
| if (is_linux || is_android) { |
| cflags = [ "-fPIC" ] |
| } |
| if (is_win) { |
| libs = [ "dart.lib" ] |
| abs_root_out_dir = rebase_path(root_out_dir) |
| ldflags = [ "/LIBPATH:$abs_root_out_dir" ] |
| } |
| } |
| |
| shared_library("sample_extension") { |
| deps = [ |
| ":dart", |
| ] |
| sources = [ |
| "../../samples/sample_extension/sample_extension.cc", |
| "../../samples/sample_extension/sample_extension_dllmain_win.cc", |
| ] |
| include_dirs = [ ".." ] |
| defines = [ |
| # The only effect of DART_SHARED_LIB is to export the Dart API. |
| "DART_SHARED_LIB", |
| ] |
| if (is_linux || is_android) { |
| cflags = [ "-fPIC" ] |
| } |
| if (is_win) { |
| libs = [ "dart.lib" ] |
| abs_root_out_dir = rebase_path(root_out_dir) |
| ldflags = [ "/LIBPATH:$abs_root_out_dir" ] |
| } |
| } |
| |
| generate_entry_points_json_with_dart_bootstrap( |
| "precompiler_entry_points_json") { |
| # Dart script to precompile (any valid script would suffice). |
| input = "../tests/vm/dart/hello_world_test.dart" |
| |
| output = "$target_gen_dir/precompiler_entry_points.json" |
| } |