# 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/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) { deps += [ "//zircon/public/lib/launchpad" ] 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 if (is_fuchsia) { deps += [ "//zircon/public/lib/launchpad" ] } 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", "//zircon/public/lib/launchpad", ] 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 (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 } template("dill_to_cc") { assert(defined(invoker.dill_file), "Need dill_file in $target_name.") assert(defined(invoker.data_symbol), "Need data_symbol in $target_name.") assert(defined(invoker.size_symbol), "Need size_symbol in $target_name.") assert(defined(invoker.output), "Need output in $target_name.") extra_deps = [] if (defined(invoker.deps)) { extra_deps += invoker.deps } action(target_name) { deps = extra_deps script = "../tools/dill_to_data_cc.py" inputs = [ "../tools/dill_to_data_cc.py", invoker.dill_file, ] outputs = [ invoker.output, ] args = [ "--dill_file=" + rebase_path(invoker.dill_file), "--data_symbol=" + invoker.data_symbol, "--size_symbol=" + invoker.size_symbol, "--output=" + rebase_path(invoker.output), ] } } dill_to_cc("kernel_service_dill_cc") { deps = [ "../../utils/kernel-service:kernel_service_dill", ] dill_file = "$root_gen_dir/kernel_service.dill" data_symbol = "kKernelServiceDill" size_symbol = "kKernelServiceDillSize" output = "$root_gen_dir/kernel_service.dill.cc" } dill_to_cc("platform_dill_cc") { deps = [ "../vm:vm_legacy_platform", ] dill_file = "$root_out_dir/vm_platform.dill" data_symbol = "kPlatformDill" size_symbol = "kPlatformDillSize" output = "$target_gen_dir/vm_platform.dill.cc" } dill_to_cc("platform_strong_dill_cc") { deps = [ "../vm:vm_platform", ] dill_file = "$root_out_dir/vm_platform_strong.dill" data_symbol = "kPlatformStrongDill" size_symbol = "kPlatformStrongDillSize" output = "$target_gen_dir/vm_platform_strong.dill.cc" } 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_cc", ":platform_dill_cc", ":platform_strong_dill_cc", ] sources = [ "$root_gen_dir/kernel_service.dill.cc", "$target_gen_dir/vm_platform.dill.cc", "$target_gen_dir/vm_platform_strong.dill.cc", ] } 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 if (is_fuchsia) { deps += [ "//zircon/public/lib/launchpad" ] } 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") 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 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" }