# Copyright (c) 2017, 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. # This GN file contains build rules for assembling the Dart SDK. There are # two possible variants: the "Full" SDK, and the "Platform" SDK. If you want # to make a new subset of the Full SDK, make it the same way we make # the Platform SDK. # # Warning: # If you need to copy something into dart-sdk/lib/foo in addition to the stuff # copied there by :copy_libraries_nnbd, then you must depend on ":copy_libraries_nnbd", # or ":copy_libraries_nnbd" may delete/overwrite your addition, and the build will # fail. import("../build/dart/copy_tree.gni") import("../runtime/runtime_args.gni") declare_args() { # Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries. dart_platform_sdk_nnbd = true # Path to stripped dart binaries relative to build output directory. # TODO(rnystrom): These should use different filenames once the runtime's # BUILD.gn file has additional rules to generate the NNBD versions of these # executables. dart_stripped_binary_nnbd = "dart" dartaotruntime_stripped_binary_nnbd = "dartaotruntime" gen_snapshot_stripped_binary_nnbd = "gen_snapshot" } # The directory layout of the SDK is as follows: # # ..dart-sdk/ # ....bin/ # ......dart or dart.exe (executable) # ......dart.lib (import library for VM native extensions on Windows) # ......dartaotruntime or dartaotruntime.exe (executable) # ......dartdoc # ......dartfmt # ......dart2aot # ......dart2js # ......dartanalyzer # ......dartdevc # ......utils/gen_snapshot or utils/gen_snapshot.exe (executable) # ......pub # ......snapshots/ # ........analysis_server.dart.snapshot # ........dart2js.dart.snapshot # ........dartanalyzer.dart.snapshot # ........dartdoc.dart.snapshot # ........dartfmt.dart.snapshot # ........dartdevc.dart.snapshot # ........gen_kernel.dart.snapshot # ........kernel_worker.dart.snapshot # ........pub.dart.snapshot #.........resources/ #...........dartdoc/ #..............packages #.............resources/ #.............templates/ # ....include/ # ......dart_api.h # ......dart_native_api.h # ......dart_tools_api.h # ....lib/ # ......libraries.json # ......_internal/ #.........strong.sum #.........dart2js_platform.dill #.........dart2js_server_platform.dill #.........dart2js_platform_strong.dill #.........dart2js_server_platform_strong.dill #.........vm_platform_strong.dill #.........dev_compiler/ # ......async/ # ......collection/ # ......convert/ # ......core/ # ......html/ # ......_http/ # ......internal/ # ......io/ # ......isolate/ # ......js/ # ......js_util/ # ......math/ # ......mirrors/ # ......typed_data/ # ......wasm/ # ......api_readme.md # ....model/ # ......lexeme/ # ........idx2word.json # ........model.tflite # ........word2idx.json # Scripts that go under bin/ _platform_sdk_scripts = [ "dartanalyzer", "dartfmt", "pub", ] _full_sdk_scripts = [ "dart2js", "dartanalyzer", "dartdevc", "dartfmt", "pub", ] # Scripts not ending in _sdk that go under bin/ _scripts = [ "dartdoc" ] # Snapshots that go under bin/snapshots _platform_sdk_snapshots = [ [ "dartanalyzer", "../utils/dartanalyzer:generate_dartanalyzer_snapshot", ], [ "dart2native", "../utils/dart2native:generate_dart2native_snapshot", ], [ "dartdoc", "../utils/dartdoc", ], [ "dartfmt", "../utils/dartfmt", ], [ "pub", "../utils/pub", ], ] if (create_kernel_service_snapshot) { _platform_sdk_snapshots += [ [ "kernel-service", "../utils/kernel-service:kernel-service_snapshot", ] ] } if (dart_target_arch != "arm") { _platform_sdk_snapshots += [ [ "analysis_server", "../utils/analysis_server", ] ] } _full_sdk_snapshots = [ [ "dart2js", "../utils/compiler:dart2js", ], [ "dartanalyzer", "../utils/dartanalyzer:generate_dartanalyzer_snapshot", ], [ "dart2native", "../utils/dart2native:generate_dart2native_snapshot", ], [ "dartdevc", "../utils/dartdevc", ], [ "dartdoc", "../utils/dartdoc", ], [ "dartfmt", "../utils/dartfmt", ], [ "kernel_worker", "../utils/bazel:kernel_worker", ], [ "pub", "../utils/pub", ], ] if (create_kernel_service_snapshot) { _full_sdk_snapshots += [ [ "kernel-service", "../utils/kernel-service:kernel-service_snapshot", ] ] } if (dart_target_arch != "arm") { _full_sdk_snapshots += [ [ "analysis_server", "../utils/analysis_server", ] ] } # Libraries that go under lib/ _full_sdk_libraries = [ "_chrome", "_internal", "async", "cli", "collection", "convert", "core", "developer", "ffi", "html", "_http", "indexed_db", "internal", "io", "isolate", "js", "js_util", "math", "mirrors", "svg", "typed_data", "wasm", "web_audio", "web_gl", "web_sql", ] # Apps running on the platform SDK shouldn't be using Dart4Web libraries, but # the analyzer and dartdoc expect all the library sources to be present. # # _platform_sdk_libraries = [ # "_internal", # "async", # "cli", # "collection", # "convert", # "core", # "developer", # "html", # "_http", # "internal", # "io", # "isolate", # "math", # "mirrors", # "typed_data", # ] _platform_sdk_libraries = _full_sdk_libraries # From here down to the copy_trees() invocation, we collect all the information # about trees that need to be copied in the list of scopes, copy_tree_specs. copy_tree_specs = [] # This rule copies dartdoc templates to # bin/resources/dartdoc/templates copy_tree_specs += [ { target = "copy_dartdoc_templates_nnbd" visibility = [ ":copy_dartdoc_files_nnbd" ] source = "../third_party/pkg/dartdoc/lib/templates" dest = "$root_out_dir/dart-sdk-nnbd/bin/resources/dartdoc/templates" ignore_patterns = "{}" }, ] # This rule copies dartdoc resources to # bin/resources/dartdoc/resources copy_tree_specs += [ { target = "copy_dartdoc_resources_nnbd" visibility = [ ":copy_dartdoc_files_nnbd" ] source = "../third_party/pkg/dartdoc/lib/resources" dest = "$root_out_dir/dart-sdk-nnbd/bin/resources/dartdoc/resources" ignore_patterns = "{}" }, ] # This loop generates rules to copy libraries to lib/ foreach(library, _full_sdk_libraries) { copy_tree_specs += [ { target = "copy_${library}_library_nnbd" visibility = [ ":copy_platform_sdk_libraries_nnbd", ":copy_full_sdk_libraries_nnbd", ] source = "lib/$library" dest = "$root_out_dir/dart-sdk-nnbd/lib/$library" ignore_patterns = "*.svn,doc,*.py,*.gypi,*.sh,.gitignore" }, ] } if (is_win) { copy_tree_specs += [ { target = "copy_7zip_nnbd" visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", ] source = "../third_party/7zip" dest = "$root_out_dir/dart-sdk-nnbd/lib/_internal/pub/asset/7zip" ignore_patterns = ".svn" }, ] } if (target_cpu == "x64") { copy_tree_specs += [ { target = "copy_language_model_nnbd" visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", ] source = "../pkg/analysis_server/language_model" dest = "$root_out_dir/dart-sdk-nnbd/model" ignore_patterns = "{}" }, { target = "copy_libtensorflowlite_c_nnbd" visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", ] source = "../third_party/pkg/tflite_native/lib/src/blobs" dest = "$root_out_dir/dart-sdk-nnbd/bin/snapshots" ignore_patterns = "{}" }, ] } # This generates targets for everything in copy_tree_specs. The targets have the # same name as the "target" fields in the scopes of copy_tree_specs. copy_trees("copy_trees_nnbd") { sources = copy_tree_specs } # Copies the Dart VM binary into bin/ if (target_os != current_os && target_os == "fuchsia") { # In the Fuchsia build, this has to use a symlink for two reasons. # First, it makes the lookup of shared libraries relative to $ORIGIN # (Linux) or @loader_path (macOS) find the libraries where they are, # since those lookups use the directory of the symlink target rather # than of the link itself (as they would for a copy or hard link). # Second, when the dart binary is built as a "variant" (e.g. with a # sanitizer), then $root_out_dir/dart is itself a symlink to the real # binary in the selected variant toolchain's $root_out_dir and since # the "copy" tool is actually a hard link rather than a copy, it will # make a link to the symlink rather than the symlink's target, and the # relative symlink interpreted from a different containing directory # will not find the actual binary. action("copy_dart_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] # TODO(rnystrom): This probably needs to be forked for NNBD. dart_label = "../runtime/bin:dart" deps = [ dart_label, ] dart_out = get_label_info(dart_label, "root_out_dir") sources = [ "$dart_out/$dart_stripped_binary_nnbd", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/$dart_stripped_binary_nnbd", ] script = "/bin/ln" args = [ "-snf", rebase_path(sources[0], get_path_info(outputs[0], "dir")), rebase_path(outputs[0]), ] } } else { copy("copy_dart_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] deps = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "../runtime/bin:dart", ] dart_out = get_label_info("../runtime/bin:dart", "root_out_dir") if (is_win) { sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$dart_out/dart.exe", ] } else { sources = [ "$dart_out/$dart_stripped_binary_nnbd", ] } if (is_win) { sources += [ "$dart_out/dart.lib" ] } outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/{{source_file_part}}", ] } } copy("copy_dartaotruntime_nnbd") { deps = [ "../runtime/bin:dartaotruntime", ] dartaotruntime_out = get_label_info("../runtime/bin:dartaotruntime", "root_out_dir") if (is_win) { sources = [ "$dartaotruntime_out/dartaotruntime.exe", ] } else { sources = [ "$dartaotruntime_out/$dartaotruntime_stripped_binary_nnbd", ] } if (is_win) { sources += [ "$dartaotruntime_out/dartaotruntime.lib" ] } outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/{{source_file_part}}", ] } copy("copy_gen_snapshot_nnbd") { deps = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "../runtime/bin:gen_snapshot", ] gen_snapshot_out = get_label_info("../runtime/bin:gen_snapshot", "root_out_dir") if (is_win) { sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_snapshot_out/gen_snapshot.exe", ] } else { sources = [ "$gen_snapshot_out/$gen_snapshot_stripped_binary_nnbd", ] } outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/utils/{{source_file_part}}", ] } copy("copy_dart2aot_nnbd") { ext = "" if (is_win) { ext = ".bat" } sources = [ "bin/dart2aot$ext", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/{{source_file_part}}", ] } copy("copy_dart2native_nnbd") { deps = [ ":copy_gen_kernel_snapshot_nnbd", ":copy_gen_snapshot_nnbd", ] ext = "" if (is_win) { ext = ".bat" } sources = [ "bin/dart2native$ext", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/{{source_file_part}}", ] } copy("copy_gen_kernel_snapshot_nnbd") { deps = [ "../utils/gen_kernel", ] sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$root_gen_dir/gen_kernel.dart.snapshot", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/snapshots/{{source_file_part}}", ] } # A template for copying the things in _platform_sdk_scripts and # _full_sdk_scripts into bin/ template("copy_sdk_script_nnbd") { assert(defined(invoker.name), "copy_sdk_script_nnbd must define 'name'") name = invoker.name ext = "" if (is_win) { ext = ".bat" } copy(target_name) { visibility = [ ":copy_platform_sdk_scripts_nnbd", ":copy_full_sdk_scripts_nnbd", ] sources = [ "bin/${name}_sdk$ext", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/$name$ext", ] } } foreach(sdk_script, _full_sdk_scripts) { copy_sdk_script_nnbd("copy_${sdk_script}_script_nnbd") { name = sdk_script } } foreach(script, _scripts) { copy("copy_${script}_script_nnbd") { visibility = [ ":copy_platform_sdk_scripts_nnbd", ":copy_full_sdk_scripts_nnbd", ] ext = "" if (is_win) { ext = ".bat" } sources = [ "bin/$script$ext", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/{{source_file_part}}", ] } } # This is the main target for copying scripts in _platform_sdk_scripts to bin/ group("copy_platform_sdk_scripts_nnbd") { visibility = [ ":create_platform_sdk_nnbd" ] public_deps = [] foreach(sdk_script, _platform_sdk_scripts) { public_deps += [ ":copy_${sdk_script}_script_nnbd" ] } foreach(script, _scripts) { public_deps += [ ":copy_${script}_script_nnbd" ] } } # This is the main target for copying scripts in _full_sdk_scripts to bin/ group("copy_full_sdk_scripts_nnbd") { visibility = [ ":create_full_sdk_nnbd" ] public_deps = [] foreach(sdk_script, _full_sdk_scripts) { public_deps += [ ":copy_${sdk_script}_script_nnbd" ] } foreach(script, _scripts) { public_deps += [ ":copy_${script}_script_nnbd" ] } } # This loop generates "copy" targets that put snapshots into bin/snapshots foreach(snapshot, _full_sdk_snapshots) { copy("copy_${snapshot[0]}_snapshot_nnbd") { visibility = [ ":copy_platform_sdk_snapshots_nnbd", ":copy_full_sdk_snapshots_nnbd", ] deps = [ snapshot[1], ] sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$root_gen_dir/${snapshot[0]}.dart.snapshot", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/bin/snapshots/{{source_file_part}}", ] } } # This is the main rule for copying snapshots from _platform_sdk_snapshots to # bin/snapshots group("copy_platform_sdk_snapshots_nnbd") { visibility = [ ":create_platform_sdk_nnbd" ] public_deps = [] foreach(snapshot, _platform_sdk_snapshots) { public_deps += [ ":copy_${snapshot[0]}_snapshot_nnbd" ] } } # This is the main rule for copying snapshots from _full_sdk_snapshots to # bin/snapshots group("copy_full_sdk_snapshots_nnbd") { visibility = [ ":create_full_sdk_nnbd" ] public_deps = [] foreach(snapshot, _full_sdk_snapshots) { public_deps += [ ":copy_${snapshot[0]}_snapshot_nnbd" ] } } # This rule writes the .packages file for dartdoc resources. write_file("$root_out_dir/dart-sdk-nnbd/bin/resources/dartdoc/.packages", "dartdoc:.") # This is the main rule for copying the files that dartdoc needs. group("copy_dartdoc_files_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] public_deps = [ ":copy_dartdoc_resources_nnbd", ":copy_dartdoc_templates_nnbd", ] } # This rule copies analyzer summaries to lib/_internal copy("copy_analysis_summaries_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", "../utils/dartanalyzer:generate_summary_strong", ] sources = [ "$root_gen_dir/strong.sum", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/{{source_file_part}}", ] } # This rule copies dill files to lib/_internal. copy("copy_vm_dill_files_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", "../runtime/vm:kernel_platform_files", ] sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$root_out_dir/vm_platform_strong.dill", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/{{source_file_part}}", ] } copy("copy_abi_dill_files_nnbd") { visibility = [ ":create_sdk_with_abi_versions_nnbd" ] sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "../tools/abiversions", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/abiversions", ] } copy("copy_dart2js_dill_files_nnbd") { visibility = [ ":create_full_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", "../utils/compiler:compile_dart2js_platform", "../utils/compiler:compile_dart2js_server_platform", ] sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$root_out_dir/dart2js_platform.dill", "$root_out_dir/dart2js_server_platform.dill", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/{{source_file_part}}", ] } # This rule copies ddc summaries to lib/_internal copy("copy_dev_compiler_summary_nnbd") { visibility = [ ":copy_dev_compiler_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", "../utils/dartdevc:dartdevc_kernel_sdk_outline", "../utils/dartdevc:dartdevc_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. # TODO(vsm): Remove post CFE. "$gen_dir/ddc_sdk.sum", "$gen_dir/kernel/ddc_sdk.dill", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/{{source_file_part}}", ] } # TODO(vsm): Remove the old non-CFE versions of the SDK once we've completed # DDC to Kernel (DDK) migration. # This rule copies DDC's JS SDK and require.js to lib/dev_compiler/amd. copy("copy_dev_compiler_js_amd_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/js/amd/dart_sdk.js", "$gen_dir/js/amd/dart_sdk.js.map", "../third_party/requirejs/require.js", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/amd/{{source_file_part}}", ] } # This rule copies DDC's JS SDK and run.js to lib/dev_compiler/common. copy("copy_dev_compiler_js_common_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/js/common/dart_sdk.js", "$gen_dir/js/common/dart_sdk.js.map", "../pkg/dev_compiler/lib/js/common/run.js", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/common/{{source_file_part}}", ] } # This rule copies DDC's JS SDK to lib/dev_compiler/es6. copy("copy_dev_compiler_js_es6_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/js/es6/dart_sdk.js", "$gen_dir/js/es6/dart_sdk.js.map", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/es6/{{source_file_part}}", ] } # This rule copies DDK's JS SDK and require.js to lib/dev_compiler/kernel/amd. copy("copy_dev_compiler_js_amd_kernel_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_kernel_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_kernel_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/kernel/amd/dart_sdk.js", "$gen_dir/kernel/amd/dart_sdk.js.map", "../third_party/requirejs/require.js", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/kernel/amd/{{source_file_part}}", ] } # This rule copies DDK's JS SDK to lib/dev_compiler/kernel/common. copy("copy_dev_compiler_js_common_kernel_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_kernel_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_kernel_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/kernel/common/dart_sdk.js", "$gen_dir/kernel/common/dart_sdk.js.map", "../pkg/dev_compiler/lib/js/common/run.js", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/kernel/common/{{source_file_part}}", ] } # This rule copies DDK's JS SDK to lib/dev_compiler/kernel/es6. copy("copy_dev_compiler_js_es6_kernel_nnbd") { visibility = [ ":copy_dev_compiler_js_nnbd" ] deps = [ "../utils/dartdevc:dartdevc_kernel_sdk", ] gen_dir = get_label_info("../utils/dartdevc:dartdevc_kernel_sdk", "target_gen_dir") sources = [ # TODO(rnystrom): This probably needs to be forked for NNBD. "$gen_dir/kernel/es6/dart_sdk.js", "$gen_dir/kernel/es6/dart_sdk.js.map", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/kernel/es6/{{source_file_part}}", ] } # Copies all of the JS artifacts needed by DDC. group("copy_dev_compiler_js_nnbd") { visibility = [ ":copy_dev_compiler_sdk_nnbd", ":copy_dev_compiler_tools_nnbd", ] public_deps = [ ":copy_dev_compiler_js_amd_nnbd", ":copy_dev_compiler_js_amd_kernel_nnbd", ":copy_dev_compiler_js_common_nnbd", ":copy_dev_compiler_js_common_kernel_nnbd", ":copy_dev_compiler_js_es6_nnbd", ":copy_dev_compiler_js_es6_kernel_nnbd", ] } # This rule copies tools to go along with ddc. copy("copy_dev_compiler_tools_nnbd") { visibility = [ ":copy_dev_compiler_sdk_nnbd" ] deps = [ ":copy_dev_compiler_js_nnbd", "../utils/dartdevc:dartdevc_web", "../utils/dartdevc:stack_trace_mapper", ] dart_out = get_label_info("../utils/dartdevc:dartdevc_web", "root_out_dir") sources = [ "$dart_out/dev_compiler/build/web/dart_stack_trace_mapper.js", "$dart_out/dev_compiler/build/web/ddc_web_compiler.js", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/dev_compiler/web/{{source_file_part}}", ] } # This is the main rule for copying ddc's dependencies to lib/ group("copy_dev_compiler_sdk_nnbd") { visibility = [ ":create_full_sdk_nnbd" ] public_deps = [ ":copy_dev_compiler_js_nnbd", ":copy_dev_compiler_summary_nnbd", ":copy_dev_compiler_tools_nnbd", ] } # This rule copies header files to include/ copy("copy_headers_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] sources = [ "../runtime/include/dart_api.h", "../runtime/include/dart_native_api.h", "../runtime/include/dart_tools_api.h", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/include/{{source_file_part}}", ] } # This rule copies libraries.json files to lib/ copy("copy_libraries_specification_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] sources = [ "lib/libraries.json", ] deps = [ ":copy_libraries_nnbd", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/{{source_file_part}}", ] } # This is the main rule to copy libraries in _platform_sdk_libraries to lib/ group("copy_platform_sdk_libraries_nnbd") { visibility = [ ":create_platform_sdk_nnbd", ":copy_libraries_nnbd", ] public_deps = [] foreach(library, _platform_sdk_libraries) { public_deps += [ ":copy_${library}_library_nnbd" ] } } # This is the main rule to copy libraries in _full_sdk_libraries to lib/ group("copy_full_sdk_libraries_nnbd") { visibility = [ ":create_full_sdk_nnbd", ":copy_libraries_nnbd", ] public_deps = [] foreach(library, _full_sdk_libraries) { public_deps += [ ":copy_${library}_library_nnbd" ] } } group("copy_libraries_nnbd") { if (dart_platform_sdk_nnbd) { public_deps = [ ":copy_platform_sdk_libraries_nnbd", ] } else { public_deps = [ ":copy_full_sdk_libraries_nnbd", ] } } # This rule writes the version file. action("write_version_file_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] inputs = [ "../tools/VERSION", "../.git/logs/HEAD", ] output = "$root_out_dir/dart-sdk-nnbd/version" outputs = [ output, ] script = "../tools/write_version_file.py" args = [ "--output", rebase_path(output), ] } # This rule writes the revision file. action("write_revision_file_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] inputs = [ "../.git/logs/HEAD", ] output = "$root_out_dir/dart-sdk-nnbd/revision" outputs = [ output, ] script = "../tools/write_revision_file.py" args = [ "--output", rebase_path(output), ] } # Copy libraries.dart to lib/_internal/libraries.dart for backwards # compatibility. # # TODO(sigmund): stop copying libraries.dart. Old versions (<=0.25.1-alpha.4) # of the analyzer package do not support the new location of this file. We # should be able to remove the old file once we release a newer version of # analyzer and popular frameworks have migrated to use it. copy("copy_libraries_dart_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] deps = [ ":copy_libraries_nnbd", ] sources = [ "lib/_internal/sdk_library_metadata/lib/libraries.dart", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/_internal/{{source_file_part}}", ] } # This rule copies the README file. copy("copy_readme_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] sources = [ "../README.dart-sdk", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/README", ] } # This rule copies the LICENSE file. copy("copy_license_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] sources = [ "../LICENSE", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/LICENSE", ] } # This rule generates a custom dartdoc_options.yaml file. action("write_dartdoc_options_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] inputs = [ "../.git/logs/HEAD", ] output = "$root_out_dir/dart-sdk-nnbd/dartdoc_options.yaml" outputs = [ output, ] script = "../tools/write_dartdoc_options_file.py" args = [ "--output", rebase_path(output), ] } # This rule copies the API readme file to lib/ copy("copy_api_readme_nnbd") { visibility = [ ":create_common_sdk_nnbd" ] sources = [ "api_readme.md", ] outputs = [ "$root_out_dir/dart-sdk-nnbd/lib/api_readme.md", ] } # Parts common to both platform and full SDKs. group("create_common_sdk_nnbd") { visibility = [ ":create_sdk_nnbd" ] public_deps = [ ":copy_analysis_summaries_nnbd", ":copy_api_readme_nnbd", ":copy_dart_nnbd", ":copy_dart2native_nnbd", ":copy_dartdoc_files_nnbd", ":copy_headers_nnbd", ":copy_libraries_dart_nnbd", ":copy_libraries_specification_nnbd", ":copy_license_nnbd", ":copy_readme_nnbd", ":copy_vm_dill_files_nnbd", ":write_dartdoc_options_nnbd", ":write_revision_file_nnbd", ":write_version_file_nnbd", ] if (is_win) { public_deps += [ ":copy_7zip_nnbd" ] } if (target_cpu == "x64") { public_deps += [ ":copy_language_model_nnbd", ":copy_libtensorflowlite_c_nnbd", ] } } # Parts specific to the platform SDK. group("create_platform_sdk_nnbd") { visibility = [ ":create_sdk_nnbd" ] public_deps = [ ":copy_platform_sdk_libraries_nnbd", ":copy_platform_sdk_scripts_nnbd", ":copy_platform_sdk_snapshots_nnbd", ] } # Parts specific to the full SDK. group("create_full_sdk_nnbd") { visibility = [ ":create_sdk_nnbd" ] public_deps = [ ":copy_dart2js_dill_files_nnbd", ":copy_dev_compiler_sdk_nnbd", ":copy_full_sdk_libraries_nnbd", ":copy_full_sdk_scripts_nnbd", ":copy_full_sdk_snapshots_nnbd", ] } # The main target to depend on from ../BUILD.gn group("create_sdk_nnbd") { public_deps = [ ":create_common_sdk_nnbd", ] if (dart_platform_sdk_nnbd) { public_deps += [ ":create_platform_sdk_nnbd" ] } else { public_deps += [ ":create_full_sdk_nnbd" ] } } # Same as create_sdk, but with abi version files. group("create_sdk_with_abi_versions_nnbd") { public_deps = [ ":copy_abi_dill_files_nnbd", ":create_sdk_nnbd", ] }