| Index: runtime/vm/BUILD.gn
 | 
| diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
 | 
| index 562f750024e334915f5d9721d493d1bed19009b1..d7edae646170d4cf3176eb580da4ab14c809fbe4 100644
 | 
| --- a/runtime/vm/BUILD.gn
 | 
| +++ b/runtime/vm/BUILD.gn
 | 
| @@ -141,13 +141,17 @@ static_library("libdart_vm_nosnapshot_with_precompiler") {
 | 
|  }
 | 
|  
 | 
|  
 | 
| -template("process_library_source") {
 | 
| +template("generate_library_source") {
 | 
| +  assert(defined(invoker.libname), "Need libname in $target_name")
 | 
|    assert(defined(invoker.filename), "Need a filename in $target_name")
 | 
| +  assert(defined(invoker.kind), "Need kind in $target_name")
 | 
|    assert(defined(invoker.output), "Need output in $target_name")
 | 
|    assert(defined(invoker.path), "Need path in $target_name")
 | 
|    action(target_name) {
 | 
|      visibility = [ ":*" ]  # Only targets in this file can see this.
 | 
| +    libname = invoker.libname
 | 
|      filename = invoker.filename
 | 
| +    kind = invoker.kind
 | 
|      path = invoker.path
 | 
|  
 | 
|      lib_sources_gypi =
 | 
| @@ -158,37 +162,20 @@ template("process_library_source") {
 | 
|      lib_sources =
 | 
|          rebase_path(lib_sources_gypi.sources, ".", path)
 | 
|  
 | 
| -    script = invoker.script
 | 
| -    inputs = invoker.inputs + [script]
 | 
| -    inputs += lib_sources
 | 
| -    outputs = [invoker.output]
 | 
| -    args = invoker.args + rebase_path(lib_sources, root_build_dir)
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template("generate_library_source") {
 | 
| -  assert(defined(invoker.libname), "Need libname in $target_name")
 | 
| -  assert(defined(invoker.filename), "Need a filename in $target_name")
 | 
| -  assert(defined(invoker.kind), "Need kind in $target_name")
 | 
| -  assert(defined(invoker.output), "Need output in $target_name")
 | 
| -  assert(defined(invoker.path), "Need path in $target_name")
 | 
| -
 | 
| -  process_library_source(target_name) {
 | 
| -    libname = invoker.libname
 | 
| -    filename = invoker.filename
 | 
| -    kind = invoker.kind
 | 
| -    output = invoker.output
 | 
| -    path = invoker.path
 | 
|      script = "../tools/gen_library_src_paths.py"
 | 
| -    inputs = ["../lib/libgen_in.cc"]
 | 
| +    inputs = [
 | 
| +      "../tools/gen_library_src_paths.py",
 | 
| +      "../lib/libgen_in.cc",
 | 
| +    ]
 | 
| +    inputs += lib_sources
 | 
| +    outputs = [ invoker.output, ]
 | 
|      args = [
 | 
|        "--output", rebase_path(invoker.output, root_build_dir),
 | 
|        "--input_cc", rebase_path("../lib/libgen_in.cc", root_build_dir),
 | 
|        "--include", "vm/bootstrap.h",
 | 
|        "--var_name", "dart::Bootstrap::${libname}_${kind}_paths_",
 | 
| -      "--library_name", "dart:${libname}",
 | 
| -    ]
 | 
| +      "--library_name", "dart:${libname}",] +
 | 
| +      rebase_path(lib_sources, root_build_dir)
 | 
|    }
 | 
|  }
 | 
|  
 | 
| @@ -312,104 +299,3 @@ generate_core_libraries("core_libraries") {
 | 
|      ["_vmservice", "vmservice", true, "../../sdk/lib/vmservice", "../lib"],
 | 
|    ]
 | 
|  }
 | 
| -
 | 
| -
 | 
| -template("concatenate_patch") {
 | 
| -  assert(defined(invoker.libname), "Need a name in $target_name")
 | 
| -  assert(defined(invoker.dir), "Need a dir in $target_name")
 | 
| -  assert(defined(invoker.output), "Need an output in $target_name")
 | 
| -
 | 
| -  process_library_source(target_name) {
 | 
| -    output = invoker.output
 | 
| -    path = "../${invoker.dir}"
 | 
| -    filename = invoker.libname
 | 
| -    script = "../tools/concatenate_patches.py"
 | 
| -    args = [ "--output", rebase_path(output, root_build_dir)]
 | 
| -    inputs = []
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -template("generate_patched_sdk") {
 | 
| -  assert(defined(invoker.libraries), "Need libraries in $target_name")
 | 
| -
 | 
| -  concatenation_target_names = []
 | 
| -  concatenation_files = []
 | 
| -
 | 
| -  # Concatenate vm library patches.
 | 
| -  foreach(library, invoker.libraries) {
 | 
| -    name = library[1]
 | 
| -
 | 
| -    target_output = "$target_gen_dir/patches/${name}_patch.dart"
 | 
| -    concatenate_patch("concatenate_${name}_patch") {
 | 
| -      libname = name
 | 
| -      dir = library[0]
 | 
| -      output = target_output
 | 
| -    }
 | 
| -    concatenation_target_names += [ ":concatenate_${name}_patch" ]
 | 
| -    concatenation_files += [ target_output ]
 | 
| -  }
 | 
| -
 | 
| -  # Build the patched sdk out of the concatenated patches and the special
 | 
| -  # libraries.
 | 
| -  action(target_name) {
 | 
| -    deps = concatenation_target_names
 | 
| -
 | 
| -    patches_dir = "$target_gen_dir/patches"
 | 
| -    patched_sdk_dir = "$target_gen_dir/patched_sdk"
 | 
| -
 | 
| -    script = "../../tools/patch_sdk.py"
 | 
| -
 | 
| -    # We list all files which make up the sdk (modulo patches) and get them back
 | 
| -    # as a GN list object.
 | 
| -    shared_sdk_sources = exec_script(
 | 
| -        "../../tools/list_dart_files.py", ["../../sdk/lib"], "list lines")
 | 
| -
 | 
| -    # We list the `patch_sdk.dart` tool here because the [script] (which is
 | 
| -    # implicitly an input) will call it.
 | 
| -    inputs = [ "../../tools/patch_sdk.dart" ]
 | 
| -    # Files below are not patches, they will not be in [concatenation_files] but
 | 
| -    # the `patch_sdk.dart` script will copy them into the patched sdk.
 | 
| -    inputs += [
 | 
| -      "../lib/typed_data.dart",
 | 
| -      "../bin/builtin.dart",
 | 
| -      "../bin/vmservice/vmservice_io.dart",
 | 
| -      "../bin/vmservice/loader.dart",
 | 
| -      "../bin/vmservice/server.dart",
 | 
| -    ]
 | 
| -    # Add all the normal sdk sources.
 | 
| -    inputs += shared_sdk_sources
 | 
| -    # Add all the concatenated patch files.
 | 
| -    inputs += concatenation_files
 | 
| -
 | 
| -    outputs = [
 | 
| -      # Instead of listing all outputs we list a single well-known one.
 | 
| -      "${patched_sdk_dir}/lib/core/core.dart",
 | 
| -    ]
 | 
| -
 | 
| -    args = [
 | 
| -        "vm",
 | 
| -        rebase_path("../../sdk"),
 | 
| -        rebase_path(patches_dir, root_build_dir),
 | 
| -        rebase_path(patched_sdk_dir, root_build_dir),
 | 
| -    ]
 | 
| -  }
 | 
| -}
 | 
| -
 | 
| -
 | 
| -generate_patched_sdk("patched_sdk") {
 | 
| -  libraries = [
 | 
| -    ["lib", "async"],
 | 
| -    ["lib", "collection"],
 | 
| -    ["lib", "convert"],
 | 
| -    ["lib", "core"],
 | 
| -    ["lib", "developer"],
 | 
| -    ["lib", "internal"],
 | 
| -    ["lib", "isolate"],
 | 
| -    ["lib", "math"],
 | 
| -    ["lib", "mirrors"],
 | 
| -    ["lib", "profiler"],
 | 
| -    ["lib", "vmservice"],
 | 
| -    ["bin", "io"],
 | 
| -  ]
 | 
| -}
 | 
| 
 |