BUILD.gn 4.9 KB
Newer Older
1 2 3 4
# Copyright 2019 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

5 6 7
import("//third_party/dart/build/dart/dart_action.gni")
import("//third_party/dart/utils/compile_platform.gni")

8
sdk_dill = "$root_out_dir/flutter_web_sdk/kernel/flutter_ddc_sdk.dill"
9

10 11 12 13 14 15
web_ui_sources = exec_script("//third_party/dart/tools/list_dart_files.py",
                             [
                               "absolute",
                               rebase_path("//flutter/lib/web_ui/lib/src/ui"),
                             ],
                             "list lines")
16

17
web_ui_sources += [ "//flutter/lib/web_ui/lib/ui.dart" ]
18 19 20 21 22

web_engine_sources =
    exec_script("//third_party/dart/tools/list_dart_files.py",
                [
                  "absolute",
23
                  rebase_path("//flutter/lib/web_ui/lib/src/engine"),
24 25 26
                ],
                "list lines")

27
web_engine_sources += [ "//flutter/lib/web_ui/lib/src/engine.dart" ]
28

29 30
group("web_sdk") {
  deps = [
31
    ":flutter_dartdevc_kernel_sdk",
32
    ":flutter_dartdevc_kernel_sdk_outline",
33 34 35
    ":web_engine_sources",
    ":web_ui_library",
    ":web_ui_sources",
36
  ]
37 38
}

39 40 41 42 43 44
prebuilt_dart_action("web_ui_sources") {
  inputs = web_ui_sources + [ "sdk_rewriter.dart" ]

  packages = "//third_party/dart/.packages"
  script = "sdk_rewriter.dart"
  output_dir = rebase_path("$root_out_dir/flutter_web_sdk/lib/ui/")
45
  input_dir = rebase_path("//flutter/lib/web_ui/lib/")
46

47 48 49 50 51
  args = [
    "--output-dir=$output_dir",
    "--input-dir=$input_dir",
    "--ui",
  ]
52 53

  outputs = [
54
    "$root_out_dir/flutter_web_engine_sdk_stamp",
55
  ]
56 57 58 59 60

  foreach(source_file, web_ui_sources) {
    path = rebase_path(source_file)
    args += [ "--input=$path" ]
  }
61 62
}

63 64 65 66 67 68
prebuilt_dart_action("web_engine_sources") {
  inputs = web_engine_sources + [ "sdk_rewriter.dart" ]

  packages = "//third_party/dart/.packages"
  script = "sdk_rewriter.dart"
  output_dir = rebase_path("$root_out_dir/flutter_web_sdk/lib/_engine/")
69
  input_dir = rebase_path("//flutter/lib/web_ui/lib/src/")
70 71 72 73 74

  args = [
    "--output-dir=$output_dir",
    "--input-dir=$input_dir",
    "--engine",
75 76 77
  ]

  outputs = [
78
    "$root_out_dir/flutter_web_sdk_stamp",
79 80
  ]

81 82 83 84 85
  foreach(source_file, web_engine_sources) {
    path = rebase_path(source_file)
    args += [ "--input=$path" ]
  }
}
86

87 88
copy("web_ui_library") {
  sources = [
89
    "//flutter/web_sdk/libraries.json",
90 91 92
  ]

  outputs = [
93
    "$root_out_dir/flutter_web_sdk/{{source_file_part}}",
94 95 96
  ]
}

97 98
# Compile the DDC SDK's summary.
prebuilt_dart_action("flutter_dartdevc_kernel_sdk_outline") {
99
  deps = [
100
    "//third_party/dart:create_sdk",
101 102 103 104
    "//third_party/dart/pkg:pkg_files_stamp",
    "//third_party/dart/utils/dartdevc:dartdevc_files_stamp",
    "//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp",
  ]
105

106
  inputs = [ "sdk_rewriter.dart" ] + web_ui_sources + web_engine_sources
107

108 109 110 111
  outputs = [
    sdk_dill,
  ]

112 113 114 115 116 117 118 119 120 121 122
  script = "//third_party/dart/utils/bazel/kernel_worker.dart"

  args = [
    "--summary-only",
    "--target",
    "ddc",
    "--packages-file",
    "file:///" + rebase_path("//third_party/dart/.packages"),
    "--multi-root-scheme",
    "org-dartlang-sdk",
    "--multi-root",
123
    "file:///" + rebase_path("$root_out_dir"),
124
    "--libraries-file",
125
    "org-dartlang-sdk:///flutter_web_sdk/libraries.json",
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
    "--output",
    rebase_path(sdk_dill),
    "--source",
    "dart:core",

    # Additional Flutter web dart libraries
    "--source",
    "dart:ui",
    "--source",
    "dart:_engine",
  ]
}

# Compiles the DDC SDK's JS code.
prebuilt_dart_action("flutter_dartdevc_kernel_sdk") {
  deps = [
142
    "//third_party/dart:create_sdk",
143 144 145 146 147
    "//third_party/dart/pkg:pkg_files_stamp",
    "//third_party/dart/utils/dartdevc:dartdevc_files_stamp",
    "//third_party/dart/utils/dartdevc:dartdevc_sdk_patch_stamp",
  ]

148
  inputs = [ "sdk_rewriter.dart" ] + web_ui_sources + web_engine_sources
149

150 151
  packages = "//third_party/dart/.packages"

152 153 154 155 156 157
  script = "//third_party/dart/pkg/dev_compiler/bin/dartdevc.dart"

  outputs = [
    "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js",
    "$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js.map",
  ]
158 159

  args = [
160 161 162 163 164 165 166 167 168
    "-k",
    "--compile-sdk",
    "dart:core",

    # Additional Flutter web dart libraries
    "dart:ui",
    "dart:_engine",
    "--no-summarize",
    "--packages",
169
    "file:///" + rebase_path("//third_party/dart/.packages"),
170 171 172
    "--multi-root-scheme",
    "org-dartlang-sdk",
    "--multi-root",
173
    "file:///" + rebase_path("$root_out_dir"),
174 175 176
    "--multi-root-output-path",
    rebase_path("$root_out_dir/"),
    "--libraries-file",
177 178
    "org-dartlang-sdk:///flutter_web_sdk/libraries.json",
    "--inline-source-map",
179 180 181 182
    "--modules",
    "amd",
    "-o",
    rebase_path("$root_out_dir/flutter_web_sdk/kernel/amd/dart_sdk.js"),
183 184 185 186
    "--modules",
    "legacy",
    "-o",
    rebase_path("$root_out_dir/flutter_web_sdk/kernel/legacy/dart_sdk.js"),
187 188
  ]
}