| OLD | NEW |
| 1 # Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file | 1 # Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file |
| 2 # for details. All rights reserved. Use of this source code is governed by a | 2 # for details. All rights reserved. Use of this source code is governed by a |
| 3 # BSD-style license that can be found in the LICENSE file. | 3 # BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 # The SDK for Fuchsia does not include: | 5 # This GN file contains build rules for assembling the Dart SDK. There are |
| 6 # dart2js | 6 # two possible variants: the "Full" SDK, and the "Platform" SDK. If you want |
| 7 # dartdoc | 7 # to make a new subset of the Full SDK, make it the same way we make |
| 8 # ddc | 8 # the Platform SDK. |
| 9 # and libraries that are browser-specific, since these are not used and require | 9 # |
| 10 # significant time to build. | 10 # Warning: |
| 11 # TODO(zra): Assemble the SDK completely with GN, and remove create_sdk.py. | 11 # If you need to copy something into dart-sdk/lib/foo in addition to the stuff |
| 12 if (defined(is_fuchsia) && (is_fuchsia || is_fuchsia_host)) { | 12 # copied there by :copy_libraries, then you must depend on ":copy_libraries", |
| 13 template("copy_tree") { | 13 # or ":copy_libraries" may delete/overwrite your addition, and the build will |
| 14 assert(defined(invoker.source), "copy_tree must define 'source'") | 14 # fail. |
| 15 assert(defined(invoker.dest), "copy_tree must define 'dest'") | 15 |
| 16 source = invoker.source | 16 import("../build/copy_tree.gni") |
| 17 dest = invoker.dest | 17 |
| 18 action(target_name) { | 18 declare_args() { |
| 19 deps = [] | 19 # Build a SDK with less stuff. It excludes dart2js, ddc, and web libraries. |
| 20 if (defined(invoker.deps)) { | 20 dart_platform_sdk = false |
| 21 deps += invoker.deps | 21 } |
| 22 } | 22 |
| 23 | 23 if (is_fuchsia || is_fuchsia_host) { |
| 24 common_args = [ | 24 dart_platform_sdk = true |
| 25 "--from", | 25 } |
| 26 rebase_path(source), | 26 |
| 27 "--to", | 27 # The directory layout of the SDK is as follows: |
| 28 rebase_path(dest), | 28 # |
| 29 ] | 29 # ..dart-sdk/ |
| 30 if (defined(invoker.exclude)) { | 30 # ....bin/ |
| 31 common_args += [ | 31 # ......dart or dart.exe (executable) |
| 32 "--exclude", | 32 # ......dart.lib (import library for VM native extensions on Windows) |
| 33 invoker.exclude, | 33 # ......dartdoc |
| 34 ] | 34 # ......dartfmt |
| 35 } | 35 # ......dart2js |
| 36 | 36 # ......dartanalyzer |
| 37 dry_run_args = common_args + [ "--dry-run" ] | 37 # ......dartdevc |
| 38 input_files = | 38 # ......pub |
| 39 exec_script("../tools/copy_tree.py", dry_run_args, "list lines") | 39 # ......snapshots/ |
| 40 inputs = input_files | 40 # ........analysis_server.dart.snapshot |
| 41 relative_files = rebase_path(input_files, rebase_path(source)) | 41 # ........dart2js.dart.snapshot |
| 42 | 42 # ........dartanalyzer.dart.snapshot |
| 43 output_files = [] | 43 # ........dartdoc.dart.snapshot |
| 44 foreach(input, relative_files) { | 44 # ........dartfmt.dart.snapshot |
| 45 output_files += [ "$dest/$input" ] | 45 # ........dartdevc.dart.snapshot |
| 46 } | 46 # ........pub.dart.snapshot |
| 47 | 47 # ........utils_wrapper.dart.snapshot |
| 48 outputs = output_files | 48 #.........resources/ |
| 49 script = "../tools/copy_tree.py" | 49 #...........dartdoc/ |
| 50 args = common_args | 50 #..............packages |
| 51 } | 51 #.............resources/ |
| 52 } | 52 #.............templates/ |
| 53 | 53 # ....include/ |
| 54 copy("copy_dart") { | 54 # ......dart_api.h |
| 55 deps = [ | 55 # ......dart_mirrors_api.h |
| 56 "../runtime/bin:dart", | 56 # ......dart_native_api.h |
| 57 # ......dart_tools_api.h |
| 58 # ....lib/ |
| 59 # ......dart_client.platform |
| 60 # ......dart_server.platform |
| 61 # ......dart_shared.platform |
| 62 # ......_internal/ |
| 63 #.........spec.sum |
| 64 #.........strong.sum |
| 65 #.........dev_compiler/ |
| 66 # ......analysis_server/ |
| 67 # ......analyzer/ |
| 68 # ......async/ |
| 69 # ......collection/ |
| 70 # ......convert/ |
| 71 # ......core/ |
| 72 # ......front_end/ |
| 73 # ......html/ |
| 74 # ......internal/ |
| 75 # ......io/ |
| 76 # ......isolate/ |
| 77 # ......js/ |
| 78 # ......js_util/ |
| 79 # ......kernel/ |
| 80 # ......math/ |
| 81 # ......mirrors/ |
| 82 # ......typed_data/ |
| 83 # ......api_readme.md |
| 84 |
| 85 # Scripts that go under bin/ |
| 86 _platform_sdk_scripts = [ |
| 87 "dartanalyzer", |
| 88 "dartfmt", |
| 89 "pub", |
| 90 ] |
| 91 |
| 92 _full_sdk_scripts = [ |
| 93 "dart2js", |
| 94 "dartanalyzer", |
| 95 "dartdevc", |
| 96 "dartfmt", |
| 97 "pub", |
| 98 ] |
| 99 |
| 100 # Scripts not ending in _sdk that go under bin/ |
| 101 _scripts = [ "dartdoc" ] |
| 102 |
| 103 # Snapshots that go under bin/snapshots |
| 104 _platform_sdk_snapshots = [ |
| 105 [ |
| 106 "analysis_server", |
| 107 "../utils/analysis_server", |
| 108 ], |
| 109 [ |
| 110 "dartanalyzer", |
| 111 "../utils/dartanalyzer:generate_dartanalyzer_snapshot", |
| 112 ], |
| 113 [ |
| 114 "dartdoc", |
| 115 "../utils/dartdoc", |
| 116 ], |
| 117 [ |
| 118 "dartfmt", |
| 119 "../utils/dartfmt", |
| 120 ], |
| 121 [ |
| 122 "pub", |
| 123 "../utils/pub", |
| 124 ], |
| 125 ] |
| 126 |
| 127 _full_sdk_snapshots = [ |
| 128 [ |
| 129 "analysis_server", |
| 130 "../utils/analysis_server", |
| 131 ], |
| 132 [ |
| 133 "dart2js", |
| 134 "../utils/compiler:dart2js", |
| 135 ], |
| 136 [ |
| 137 "dartanalyzer", |
| 138 "../utils/dartanalyzer:generate_dartanalyzer_snapshot", |
| 139 ], |
| 140 [ |
| 141 "dartdevc", |
| 142 "../utils/dartdevc", |
| 143 ], |
| 144 [ |
| 145 "dartdoc", |
| 146 "../utils/dartdoc", |
| 147 ], |
| 148 [ |
| 149 "dartfmt", |
| 150 "../utils/dartfmt", |
| 151 ], |
| 152 [ |
| 153 "pub", |
| 154 "../utils/pub", |
| 155 ], |
| 156 [ |
| 157 "utils_wrapper", |
| 158 "../utils/compiler:utils_wrapper", |
| 159 ], |
| 160 ] |
| 161 |
| 162 # Libraries that go under lib/ |
| 163 _platform_sdk_libraries = [ |
| 164 "_internal", |
| 165 "async", |
| 166 "collection", |
| 167 "convert", |
| 168 "core", |
| 169 "developer", |
| 170 "internal", |
| 171 "io", |
| 172 "isolate", |
| 173 "math", |
| 174 "mirrors", |
| 175 "profiler", |
| 176 "typed_data", |
| 177 ] |
| 178 |
| 179 _full_sdk_libraries = [ |
| 180 "_blink", |
| 181 "_chrome", |
| 182 "_internal", |
| 183 "async", |
| 184 "collection", |
| 185 "convert", |
| 186 "core", |
| 187 "developer", |
| 188 "html", |
| 189 "indexed_db", |
| 190 "internal", |
| 191 "io", |
| 192 "isolate", |
| 193 "js", |
| 194 "js_util", |
| 195 "math", |
| 196 "mirrors", |
| 197 "profiler", |
| 198 "svg", |
| 199 "typed_data", |
| 200 "web_audio", |
| 201 "web_gl", |
| 202 "web_sql", |
| 203 ] |
| 204 |
| 205 # Package sources copied to lib/ |
| 206 _analyzer_source_dirs = [ |
| 207 "analyzer", |
| 208 "analysis_server", |
| 209 "front_end", |
| 210 "kernel", |
| 211 ] |
| 212 |
| 213 # Copies the Dart VM binary into bin/ |
| 214 copy("copy_dart") { |
| 215 visibility = [ ":create_common_sdk" ] |
| 216 deps = [ |
| 217 "../runtime/bin:dart", |
| 218 ] |
| 219 dart_out = get_label_info("../runtime/bin:dart", "root_out_dir") |
| 220 if (is_win) { |
| 221 sources = [ |
| 222 "$dart_out/dart.exe", |
| 57 ] | 223 ] |
| 58 dart_out = get_label_info("../runtime/bin:dart", "root_out_dir") | 224 } else if (is_fuchsia || is_fuchsia_host) { |
| 59 dart_name = get_label_info("../runtime/bin:dart", "name") | |
| 60 sources = [ | 225 sources = [ |
| 61 "$dart_out/$dart_name", | 226 "$dart_out/dart", |
| 62 ] | 227 ] |
| 63 outputs = [ | 228 } else { |
| 64 "$root_out_dir/dart-sdk/bin/dart", | 229 sources = [ |
| 230 "$dart_out/exe.stripped/dart", |
| 65 ] | 231 ] |
| 66 } | 232 } |
| 67 | 233 if (is_win) { |
| 234 sources += [ "$dart_out/dart.lib" ] |
| 235 } |
| 236 outputs = [ |
| 237 "$root_out_dir/dart-sdk/bin/{{source_file_part}}", |
| 238 ] |
| 239 } |
| 240 |
| 241 # Copies dynamically linked libraries into bin/. This is currently only needed |
| 242 # for Fuchsia when building for Linux hosts. |
| 243 if (is_fuchsia_host && is_linux) { |
| 68 copy("copy_dylibs") { | 244 copy("copy_dylibs") { |
| 245 visibility = [ ":create_common_sdk" ] |
| 69 deps = [ | 246 deps = [ |
| 70 "//third_party/boringssl:crypto", | 247 "//third_party/boringssl:crypto", |
| 71 "//third_party/boringssl:ssl", | 248 "//third_party/boringssl:ssl", |
| 72 "//third_party/zlib", | 249 "//third_party/zlib", |
| 73 ] | 250 ] |
| 74 crypto_out = | 251 crypto_out = |
| 75 get_label_info("//third_party/boringssl:crypto", "root_out_dir") | 252 get_label_info("//third_party/boringssl:crypto", "root_out_dir") |
| 76 crypto_name = get_label_info("//third_party/boringssl:crypto", "name") | 253 crypto_name = get_label_info("//third_party/boringssl:crypto", "name") |
| 77 ssl_out = get_label_info("//third_party/boringssl:ssl", "root_out_dir") | 254 ssl_out = get_label_info("//third_party/boringssl:ssl", "root_out_dir") |
| 78 ssl_name = get_label_info("//third_party/boringssl:ssl", "name") | 255 ssl_name = get_label_info("//third_party/boringssl:ssl", "name") |
| 79 zlib_out = get_label_info("//third_party/zlib", "root_out_dir") | 256 zlib_out = get_label_info("//third_party/zlib", "root_out_dir") |
| 80 sources = [ | 257 sources = [ |
| 81 "$crypto_out/lib${crypto_name}.so", | 258 "$crypto_out/lib${crypto_name}.so", |
| 82 "$ssl_out/lib${ssl_name}.so", | 259 "$ssl_out/lib${ssl_name}.so", |
| 83 "$zlib_out/libz.so", | 260 "$zlib_out/libz.so", |
| 84 ] | 261 ] |
| 85 outputs = [ | 262 outputs = [ |
| 86 "$root_out_dir/dart-sdk/bin/{{source_file_part}}", | 263 "$root_out_dir/dart-sdk/bin/{{source_file_part}}", |
| 87 ] | 264 ] |
| 88 } | 265 } |
| 89 | 266 } |
| 90 template("copy_sdk_script") { | 267 |
| 91 assert(defined(invoker.name), "copy_sdk_script must define 'name'") | 268 # A template for copying the things in _platform_sdk_scripts and |
| 92 name = invoker.name | 269 # _full_sdk_scripts into bin/ |
| 93 copy(target_name) { | 270 template("copy_sdk_script") { |
| 94 sources = [ | 271 assert(defined(invoker.name), "copy_sdk_script must define 'name'") |
| 95 "bin/${name}_sdk", | 272 name = invoker.name |
| 96 ] | 273 ext = "" |
| 97 outputs = [ | 274 if (is_win) { |
| 98 "$root_out_dir/dart-sdk/bin/${name}", | 275 ext = ".bat" |
| 99 ] | 276 } |
| 277 copy(target_name) { |
| 278 visibility = [ |
| 279 ":copy_platform_sdk_scripts", |
| 280 ":copy_full_sdk_scripts", |
| 281 ] |
| 282 sources = [ |
| 283 "bin/${name}_sdk$ext", |
| 284 ] |
| 285 outputs = [ |
| 286 "$root_out_dir/dart-sdk/bin/$name$ext", |
| 287 ] |
| 288 } |
| 289 } |
| 290 |
| 291 foreach(sdk_script, _full_sdk_scripts) { |
| 292 copy_sdk_script("copy_${sdk_script}_script") { |
| 293 name = sdk_script |
| 294 } |
| 295 } |
| 296 |
| 297 foreach(script, _scripts) { |
| 298 copy("copy_${script}_script") { |
| 299 visibility = [ |
| 300 ":copy_platform_sdk_scripts", |
| 301 ":copy_full_sdk_scripts", |
| 302 ] |
| 303 ext = "" |
| 304 if (is_win) { |
| 305 ext = ".bat" |
| 100 } | 306 } |
| 101 } | 307 sources = [ |
| 102 | 308 "bin/$script$ext", |
| 103 _sdk_scripts = [ | 309 ] |
| 104 "dartanalyzer", | 310 outputs = [ |
| 105 "dartfmt", | 311 "$root_out_dir/dart-sdk/bin/{{source_file_part}}", |
| 106 "pub", | 312 ] |
| 107 ] | 313 } |
| 108 | 314 } |
| 109 foreach(sdk_script, _sdk_scripts) { | 315 |
| 110 copy_sdk_script("copy_${sdk_script}_script") { | 316 # This is the main target for copying scripts in _platform_sdk_scripts to bin/ |
| 111 name = sdk_script | 317 group("copy_platform_sdk_scripts") { |
| 112 } | 318 visibility = [ ":create_platform_sdk" ] |
| 113 } | 319 deps = [] |
| 114 | 320 foreach(sdk_script, _platform_sdk_scripts) { |
| 115 group("copy_scripts") { | 321 deps += [ ":copy_${sdk_script}_script" ] |
| 322 } |
| 323 foreach(script, _scripts) { |
| 324 deps += [ ":copy_${script}_script" ] |
| 325 } |
| 326 } |
| 327 |
| 328 # This is the main target for copying scripts in _full_sdk_scripts to bin/ |
| 329 group("copy_full_sdk_scripts") { |
| 330 visibility = [ ":create_full_sdk" ] |
| 331 deps = [] |
| 332 foreach(sdk_script, _full_sdk_scripts) { |
| 333 deps += [ ":copy_${sdk_script}_script" ] |
| 334 } |
| 335 foreach(script, _scripts) { |
| 336 deps += [ ":copy_${script}_script" ] |
| 337 } |
| 338 } |
| 339 |
| 340 # This loop generates "copy" targets that put snapshots into bin/snapshots |
| 341 foreach(snapshot, _full_sdk_snapshots) { |
| 342 copy("copy_${snapshot[0]}_snapshot") { |
| 343 visibility = [ |
| 344 ":copy_platform_sdk_snapshots", |
| 345 ":copy_full_sdk_snapshots", |
| 346 ] |
| 116 deps = [ | 347 deps = [ |
| 117 ":copy_dartanalyzer_script", | 348 snapshot[1], |
| 118 ":copy_dartfmt_script", | 349 ] |
| 119 ":copy_pub_script", | 350 sources = [ |
| 120 ] | 351 "$root_gen_dir/${snapshot[0]}.dart.snapshot", |
| 121 } | 352 ] |
| 122 | 353 outputs = [ |
| 123 _snapshots = [ | 354 "$root_out_dir/dart-sdk/bin/snapshots/{{source_file_part}}", |
| 124 [ | 355 ] |
| 125 "analysis_server", | 356 } |
| 126 "../utils/analysis_server", | 357 } |
| 127 ], | 358 |
| 128 [ | 359 # This is the main rule for copying snapshots from _platform_sdk_snapshots to |
| 129 "dartanalyzer", | 360 # bin/snapshots |
| 130 "../utils/dartanalyzer:generate_dartanalyzer_snapshot", | 361 group("copy_platform_sdk_snapshots") { |
| 131 ], | 362 visibility = [ ":create_platform_sdk" ] |
| 132 [ | 363 deps = [] |
| 133 "dartfmt", | 364 foreach(snapshot, _platform_sdk_snapshots) { |
| 134 "../utils/dartfmt", | 365 deps += [ ":copy_${snapshot[0]}_snapshot" ] |
| 135 ], | 366 } |
| 136 [ | 367 } |
| 137 "pub", | 368 |
| 138 "../utils/pub", | 369 # This is the main rule for copying snapshots from _full_sdk_snapshots to |
| 139 ], | 370 # bin/snapshots |
| 140 ] | 371 group("copy_full_sdk_snapshots") { |
| 141 | 372 visibility = [ ":create_full_sdk" ] |
| 142 foreach(snapshot, _snapshots) { | 373 deps = [] |
| 143 copy("copy_${snapshot[0]}_snapshot") { | 374 foreach(snapshot, _full_sdk_snapshots) { |
| 144 deps = [ | 375 deps += [ ":copy_${snapshot[0]}_snapshot" ] |
| 145 snapshot[1], | 376 } |
| 146 ] | 377 } |
| 147 sources = [ | 378 |
| 148 "$root_gen_dir/${snapshot[0]}.dart.snapshot", | 379 # This loop generates rules for copying analyzer sources into lib/ |
| 149 ] | 380 foreach(analyzer_source_dir, _analyzer_source_dirs) { |
| 150 outputs = [ | 381 copy_tree("copy_${analyzer_source_dir}_source_dir") { |
| 151 "$root_out_dir/dart-sdk/bin/snapshots/{{source_file_part}}", | 382 visibility = [ ":copy_analyzer_sources" ] |
| 152 ] | 383 source = "../pkg/$analyzer_source_dir" |
| 153 } | 384 dest = "$root_out_dir/dart-sdk/lib/$analyzer_source_dir" |
| 154 } | 385 exclude = "*.svn,doc,*.py,*.gypi,*.sh,.gitignore,packages" |
| 155 | 386 } |
| 156 group("copy_snapshots") { | 387 } |
| 388 |
| 389 # This is the main rule for copying analyzer sources to lib/ |
| 390 group("copy_analyzer_sources") { |
| 391 visibility = [ ":create_common_sdk" ] |
| 392 deps = [] |
| 393 foreach(analyzer_source_dir, _analyzer_source_dirs) { |
| 394 deps += [ ":copy_${analyzer_source_dir}_source_dir" ] |
| 395 } |
| 396 } |
| 397 |
| 398 # This rule copies dartdoc templates to |
| 399 # bin/snapshots/resources/dartdoc/templates |
| 400 copy_tree("copy_dartdoc_templates") { |
| 401 visibility = [ ":copy_dartdoc_files" ] |
| 402 source = "../third_party/pkg/dartdoc/lib/templates" |
| 403 dest = "$root_out_dir/dart-sdk/bin/snapshots/resources/dartdoc/templates" |
| 404 } |
| 405 |
| 406 # This rule copies dartdoc resources to |
| 407 # bin/snapshots/resources/dartdoc/resources |
| 408 copy_tree("copy_dartdoc_resources") { |
| 409 visibility = [ ":copy_dartdoc_files" ] |
| 410 source = "../third_party/pkg/dartdoc/lib/resources" |
| 411 dest = "$root_out_dir/dart-sdk/bin/snapshots/resources/dartdoc/resources" |
| 412 } |
| 413 |
| 414 # This rule writes the .packages file for dartdoc resources. |
| 415 write_file("$root_out_dir/dart-sdk/bin/snapshots/resources/dartdoc/.packages", |
| 416 "dartdoc:.") |
| 417 |
| 418 # This is the main rule for copying the files that dartdoc needs. |
| 419 group("copy_dartdoc_files") { |
| 420 visibility = [ ":create_common_sdk" ] |
| 421 deps = [ |
| 422 ":copy_dartdoc_resources", |
| 423 ":copy_dartdoc_templates", |
| 424 ] |
| 425 } |
| 426 |
| 427 # This rule copies analyzer summaries to lib/_internal |
| 428 copy("copy_analysis_summaries") { |
| 429 visibility = [ ":create_common_sdk" ] |
| 430 deps = [ |
| 431 ":copy_libraries", |
| 432 "../utils/dartanalyzer:generate_summary_spec", |
| 433 "../utils/dartanalyzer:generate_summary_strong", |
| 434 ] |
| 435 sources = [ |
| 436 "$root_gen_dir/spec.sum", |
| 437 "$root_gen_dir/strong.sum", |
| 438 ] |
| 439 outputs = [ |
| 440 "$root_out_dir/dart-sdk/lib/_internal/{{source_file_part}}", |
| 441 ] |
| 442 } |
| 443 |
| 444 # This rule copies ddc summaries to lib/_internal |
| 445 copy("copy_dev_compiler_summary") { |
| 446 visibility = [ ":copy_dev_compiler_sdk" ] |
| 447 deps = [ |
| 448 ":copy_libraries", |
| 449 ] |
| 450 sources = [ |
| 451 "../pkg/dev_compiler/lib/sdk/ddc_sdk.sum", |
| 452 ] |
| 453 outputs = [ |
| 454 "$root_out_dir/dart-sdk/lib/_internal/{{source_file_part}}", |
| 455 ] |
| 456 } |
| 457 |
| 458 # This rule copies js needed by ddc to lib/dev_compiler |
| 459 copy_tree("copy_dev_compiler_js") { |
| 460 visibility = [ |
| 461 ":copy_dev_compiler_sdk", |
| 462 ":copy_dev_compiler_require_js", |
| 463 ] |
| 464 source = "../pkg/dev_compiler/lib/js" |
| 465 dest = "$root_out_dir/dart-sdk/lib/dev_compiler" |
| 466 } |
| 467 |
| 468 # This rule copies require.js to lib/dev_compiler/amd |
| 469 copy("copy_dev_compiler_require_js") { |
| 470 visibility = [ ":copy_dev_compiler_sdk" ] |
| 471 deps = [ |
| 472 ":copy_dev_compiler_js", |
| 473 ] |
| 474 sources = [ |
| 475 "../third_party/requirejs/require.js", |
| 476 ] |
| 477 outputs = [ |
| 478 "$root_out_dir/dart-sdk/lib/dev_compiler/amd/{{source_file_part}}", |
| 479 ] |
| 480 } |
| 481 |
| 482 # This is the main rule for copying ddc's dependencies to lib/ |
| 483 group("copy_dev_compiler_sdk") { |
| 484 visibility = [ ":create_full_sdk" ] |
| 485 deps = [ |
| 486 ":copy_dev_compiler_js", |
| 487 ":copy_dev_compiler_require_js", |
| 488 ":copy_dev_compiler_summary", |
| 489 ] |
| 490 } |
| 491 |
| 492 # This rule copies header files to include/ |
| 493 copy("copy_headers") { |
| 494 visibility = [ ":create_common_sdk" ] |
| 495 sources = [ |
| 496 "../runtime/include/dart_api.h", |
| 497 "../runtime/include/dart_mirrors_api.h", |
| 498 "../runtime/include/dart_native_api.h", |
| 499 "../runtime/include/dart_tools_api.h", |
| 500 ] |
| 501 outputs = [ |
| 502 "$root_out_dir/dart-sdk/include/{{source_file_part}}", |
| 503 ] |
| 504 } |
| 505 |
| 506 # This rule copies .platform files to lib/ |
| 507 copy("copy_platform_files") { |
| 508 visibility = [ ":create_common_sdk" ] |
| 509 sources = [ |
| 510 "lib/dart_client.platform", |
| 511 "lib/dart_server.platform", |
| 512 "lib/dart_shared.platform", |
| 513 ] |
| 514 outputs = [ |
| 515 "$root_out_dir/dart-sdk/lib/{{source_file_part}}", |
| 516 ] |
| 517 } |
| 518 |
| 519 # This rule copies pub assets to lib/_internal/pub/asset |
| 520 copy_tree("copy_pub_assets") { |
| 521 visibility = [ |
| 522 ":create_common_sdk", |
| 523 ":copy_7zip", |
| 524 ] |
| 525 deps = [ |
| 526 ":copy_libraries", |
| 527 ] |
| 528 source = "../third_party/pkg/pub/lib/src/asset" |
| 529 dest = "$root_out_dir/dart-sdk/lib/_internal/pub/asset" |
| 530 } |
| 531 |
| 532 # This loop generates rules to copy libraries to lib/ |
| 533 foreach(library, _full_sdk_libraries) { |
| 534 copy_tree("copy_${library}_library") { |
| 535 visibility = [ |
| 536 ":copy_platform_sdk_libraries", |
| 537 ":copy_full_sdk_libraries", |
| 538 ] |
| 539 source = "lib/$library" |
| 540 dest = "$root_out_dir/dart-sdk/lib/$library" |
| 541 exclude = "*.svn,doc,*.py,*.gypi,*.sh,.gitignore" |
| 542 } |
| 543 } |
| 544 |
| 545 # This is the main rule to copy libraries in _platform_sdk_libraries to lib/ |
| 546 group("copy_platform_sdk_libraries") { |
| 547 visibility = [ |
| 548 ":create_platform_sdk", |
| 549 ":copy_libraries", |
| 550 ] |
| 551 deps = [] |
| 552 foreach(library, _platform_sdk_libraries) { |
| 553 deps += [ ":copy_${library}_library" ] |
| 554 } |
| 555 } |
| 556 |
| 557 # This is the main rule to copy libraries in _full_sdk_libraries to lib/ |
| 558 group("copy_full_sdk_libraries") { |
| 559 visibility = [ |
| 560 ":create_full_sdk", |
| 561 ":copy_libraries", |
| 562 ] |
| 563 deps = [] |
| 564 foreach(library, _full_sdk_libraries) { |
| 565 deps += [ ":copy_${library}_library" ] |
| 566 } |
| 567 } |
| 568 |
| 569 group("copy_libraries") { |
| 570 if (dart_platform_sdk) { |
| 157 deps = [ | 571 deps = [ |
| 158 ":copy_analysis_server_snapshot", | 572 ":copy_platform_sdk_libraries", |
| 159 ":copy_dartanalyzer_snapshot", | 573 ] |
| 160 ":copy_dartfmt_snapshot", | 574 } else { |
| 161 ":copy_pub_snapshot", | 575 deps = [ |
| 162 ] | 576 ":copy_full_sdk_libraries", |
| 163 } | 577 ] |
| 164 | 578 } |
| 165 copy("copy_analysis_summaries") { | 579 } |
| 580 |
| 581 if (is_win) { |
| 582 copy_tree("copy_7zip") { |
| 583 visibility = [ ":create_common_sdk" ] |
| 166 deps = [ | 584 deps = [ |
| 167 ":copy_libraries", | 585 ":copy_libraries", |
| 168 "../utils/dartanalyzer:generate_summary_spec", | |
| 169 "../utils/dartanalyzer:generate_summary_strong", | |
| 170 ] | |
| 171 sources = [ | |
| 172 "$root_gen_dir/spec.sum", | |
| 173 "$root_gen_dir/strong.sum", | |
| 174 ] | |
| 175 outputs = [ | |
| 176 "$root_out_dir/dart-sdk/lib/_internal/{{source_file_part}}", | |
| 177 ] | |
| 178 } | |
| 179 | |
| 180 copy("copy_headers") { | |
| 181 sources = [ | |
| 182 "../runtime/include/dart_api.h", | |
| 183 "../runtime/include/dart_mirrors_api.h", | |
| 184 "../runtime/include/dart_native_api.h", | |
| 185 "../runtime/include/dart_tools_api.h", | |
| 186 ] | |
| 187 outputs = [ | |
| 188 "$root_out_dir/dart-sdk/include/{{source_file_part}}", | |
| 189 ] | |
| 190 } | |
| 191 | |
| 192 copy("copy_platform_files") { | |
| 193 sources = [ | |
| 194 "lib/dart_client.platform", | |
| 195 "lib/dart_server.platform", | |
| 196 "lib/dart_shared.platform", | |
| 197 ] | |
| 198 outputs = [ | |
| 199 "$root_out_dir/dart-sdk/lib/{{source_file_part}}", | |
| 200 ] | |
| 201 } | |
| 202 | |
| 203 copy_tree("copy_pub_assets") { | |
| 204 deps = [ | |
| 205 ":copy_libraries", | |
| 206 ] | |
| 207 source = "../third_party/pkg/pub/lib/src/asset" | |
| 208 dest = "$root_out_dir/dart-sdk/lib/_internal/pub/asset" | |
| 209 } | |
| 210 | |
| 211 _libraries = [ | |
| 212 "_internal", | |
| 213 "async", | |
| 214 "collection", | |
| 215 "convert", | |
| 216 "core", | |
| 217 "developer", | |
| 218 "internal", | |
| 219 "io", | |
| 220 "isolate", | |
| 221 "math", | |
| 222 "mirrors", | |
| 223 "profiler", | |
| 224 "typed_data", | |
| 225 ] | |
| 226 | |
| 227 foreach(library, _libraries) { | |
| 228 copy_tree("copy_${library}_library") { | |
| 229 source = "lib/$library" | |
| 230 dest = "$root_out_dir/dart-sdk/lib/$library" | |
| 231 exclude = "*.svn,doc,*.py,*.gypi,*.sh,.gitignore" | |
| 232 } | |
| 233 } | |
| 234 | |
| 235 group("copy_libraries") { | |
| 236 deps = [ | |
| 237 ":copy__internal_library", | |
| 238 ":copy_async_library", | |
| 239 ":copy_collection_library", | |
| 240 ":copy_convert_library", | |
| 241 ":copy_core_library", | |
| 242 ":copy_developer_library", | |
| 243 ":copy_internal_library", | |
| 244 ":copy_io_library", | |
| 245 ":copy_isolate_library", | |
| 246 ":copy_math_library", | |
| 247 ":copy_mirrors_library", | |
| 248 ":copy_profiler_library", | |
| 249 ":copy_typed_data_library", | |
| 250 ] | |
| 251 } | |
| 252 | |
| 253 action("write_version_file") { | |
| 254 output = "$root_out_dir/dart-sdk/version" | |
| 255 outputs = [ | |
| 256 output, | |
| 257 ] | |
| 258 script = "../tools/write_version_file.py" | |
| 259 args = [ | |
| 260 "--output", | |
| 261 rebase_path(output), | |
| 262 ] | |
| 263 } | |
| 264 | |
| 265 action("write_revision_file") { | |
| 266 output = "$root_out_dir/dart-sdk/revision" | |
| 267 outputs = [ | |
| 268 output, | |
| 269 ] | |
| 270 script = "../tools/write_revision_file.py" | |
| 271 args = [ | |
| 272 "--output", | |
| 273 rebase_path(output), | |
| 274 ] | |
| 275 } | |
| 276 | |
| 277 copy("copy_readme") { | |
| 278 sources = [ | |
| 279 "../README.dart-sdk", | |
| 280 ] | |
| 281 outputs = [ | |
| 282 "$root_out_dir/dart-sdk/README", | |
| 283 ] | |
| 284 } | |
| 285 | |
| 286 copy("copy_license") { | |
| 287 sources = [ | |
| 288 "../LICENSE", | |
| 289 ] | |
| 290 outputs = [ | |
| 291 "$root_out_dir/dart-sdk/LICENSE", | |
| 292 ] | |
| 293 } | |
| 294 | |
| 295 copy("copy_api_readme") { | |
| 296 sources = [ | |
| 297 "api_readme.md", | |
| 298 ] | |
| 299 outputs = [ | |
| 300 "$root_out_dir/dart-sdk/lib/api_readme.md", | |
| 301 ] | |
| 302 } | |
| 303 | |
| 304 group("create_sdk") { | |
| 305 deps = [ | |
| 306 ":copy_analysis_summaries", | |
| 307 ":copy_api_readme", | |
| 308 ":copy_dart", | |
| 309 ":copy_headers", | |
| 310 ":copy_libraries", | |
| 311 ":copy_license", | |
| 312 ":copy_platform_files", | |
| 313 ":copy_pub_assets", | 586 ":copy_pub_assets", |
| 314 ":copy_readme", | 587 ] |
| 315 ":copy_scripts", | 588 source = "../third_party/7zip" |
| 316 ":copy_snapshots", | 589 dest = "$root_out_dir/dart-sdk/lib/_internal/pub/asset/7zip" |
| 317 ":write_revision_file", | 590 exclude = ".svn" |
| 318 ":write_version_file", | 591 } |
| 319 ] | 592 } |
| 320 if (is_fuchsia_host && is_linux) { | 593 |
| 321 deps += [ ":copy_dylibs" ] | 594 # This rule writes the version file. |
| 322 } | 595 action("write_version_file") { |
| 323 } | 596 visibility = [ ":create_common_sdk" ] |
| 324 } else { | 597 output = "$root_out_dir/dart-sdk/version" |
| 325 action("create_sdk") { | 598 outputs = [ |
| 326 deps = [ | 599 output, |
| 327 "../runtime/bin:dart", | 600 ] |
| 328 "../utils/analysis_server", | 601 script = "../tools/write_version_file.py" |
| 329 "../utils/compiler:dart2js", | 602 args = [ |
| 330 "../utils/compiler:utils_wrapper", | 603 "--output", |
| 331 "../utils/dartanalyzer:generate_dartanalyzer_snapshot", | 604 rebase_path(output), |
| 332 "../utils/dartanalyzer:generate_summary_spec", | 605 ] |
| 333 "../utils/dartanalyzer:generate_summary_strong", | 606 } |
| 334 "../utils/dartdevc", | 607 |
| 335 "../utils/dartdoc", | 608 # This rule writes the revision file. |
| 336 "../utils/dartfmt", | 609 action("write_revision_file") { |
| 337 "../utils/pub", | 610 visibility = [ ":create_common_sdk" ] |
| 338 ] | 611 output = "$root_out_dir/dart-sdk/revision" |
| 339 | 612 outputs = [ |
| 340 sdk_lib_files = exec_script("../tools/list_dart_files.py", | 613 output, |
| 341 [ | 614 ] |
| 342 "absolute", | 615 script = "../tools/write_revision_file.py" |
| 343 rebase_path("lib"), | 616 args = [ |
| 344 ], | 617 "--output", |
| 345 "list lines") | 618 rebase_path(output), |
| 346 | 619 ] |
| 347 preamble_files = | 620 } |
| 348 exec_script("../tools/list_files.py", | 621 |
| 349 [ | 622 # Copy libraries.dart to lib/_internal/libraries.dart for backwards |
| 350 "absolute", | 623 # compatibility. |
| 351 "", | 624 # |
| 352 rebase_path("lib/_internal/js_runtime/lib/preambles"), | 625 # TODO(sigmund): stop copying libraries.dart. Old versions (<=0.25.1-alpha.4) |
| 353 ], | 626 # of the analyzer package do not support the new location of this file. We |
| 354 "list lines") | 627 # should be able to remove the old file once we release a newer version of |
| 355 | 628 # analyzer and popular frameworks have migrated to use it. |
| 356 sdk_bin_files = exec_script("../tools/list_files.py", | 629 copy("copy_libraries_dart") { |
| 357 [ | 630 visibility = [ ":create_common_sdk" ] |
| 358 "absolute", | 631 deps = [ |
| 359 "", | 632 ":copy_libraries", |
| 360 rebase_path("bin"), | 633 ] |
| 361 ], | 634 sources = [ |
| 362 "list lines") | 635 "lib/_internal/sdk_library_metadata/lib/libraries.dart", |
| 363 | 636 ] |
| 364 inputs = sdk_lib_files + preamble_files + sdk_bin_files + [ | 637 outputs = [ |
| 365 "lib/dart_client.platform", | 638 "$root_out_dir/dart-sdk/lib/_internal/{{source_file_part}}", |
| 366 "lib/dart_server.platform", | 639 ] |
| 367 "lib/dart_shared.platform", | 640 } |
| 368 "$root_gen_dir/dart2js.dart.snapshot", | 641 |
| 369 "$root_gen_dir/utils_wrapper.dart.snapshot", | 642 # This rule copies the README file. |
| 370 "$root_gen_dir/pub.dart.snapshot", | 643 copy("copy_readme") { |
| 371 "$root_gen_dir/dartanalyzer.dart.snapshot", | 644 visibility = [ ":create_common_sdk" ] |
| 372 "$root_gen_dir/dartdevc.dart.snapshot", | 645 sources = [ |
| 373 "$root_gen_dir/dartfmt.dart.snapshot", | 646 "../README.dart-sdk", |
| 374 "$root_gen_dir/analysis_server.dart.snapshot", | 647 ] |
| 375 "$root_gen_dir/dartdoc.dart.snapshot", | 648 outputs = [ |
| 376 "$root_gen_dir/spec.sum", | 649 "$root_out_dir/dart-sdk/README", |
| 377 "$root_gen_dir/strong.sum", | 650 ] |
| 378 "../tools/VERSION", | 651 } |
| 379 ] | 652 |
| 380 | 653 # This rule copies the LICENSE file. |
| 381 outputs = [ | 654 copy("copy_license") { |
| 382 "$root_out_dir/dart-sdk/README", | 655 visibility = [ ":create_common_sdk" ] |
| 383 ] | 656 sources = [ |
| 384 | 657 "../LICENSE", |
| 385 script = "../tools/create_sdk.py" | 658 ] |
| 386 args = [ | 659 outputs = [ |
| 387 "--sdk_output_dir", | 660 "$root_out_dir/dart-sdk/LICENSE", |
| 388 rebase_path("$root_out_dir/dart-sdk"), | 661 ] |
| 389 "--snapshot_location", | 662 } |
| 390 rebase_path("$root_gen_dir"), | 663 |
| 391 ] | 664 # This rule copies the API readme file to lib/ |
| 392 } | 665 copy("copy_api_readme") { |
| 393 | 666 visibility = [ ":create_common_sdk" ] |
| 394 copy("copy_dev_compiler_tools") { | 667 sources = [ |
| 395 deps = [ | 668 "api_readme.md", |
| 396 ":create_sdk", | 669 ] |
| 397 "../utils/dartdevc:dartdevc_web", | 670 outputs = [ |
| 398 "../utils/dartdevc:stack_trace_mapper", | 671 "$root_out_dir/dart-sdk/lib/api_readme.md", |
| 399 ] | 672 ] |
| 400 dart_out = get_label_info("../utils/dartdevc:dartdevc_web", "root_out_dir") | 673 } |
| 401 sources = [ | 674 |
| 402 "$dart_out/dev_compiler/build/web/ddc_web_compiler.js", | 675 # Parts common to both platform and full SDKs. |
| 403 "$dart_out/dev_compiler/build/web/dart_stack_trace_mapper.js", | 676 group("create_common_sdk") { |
| 404 ] | 677 visibility = [ ":create_sdk" ] |
| 405 outputs = [ | 678 deps = [ |
| 406 "$root_out_dir/dart-sdk/lib/dev_compiler/web/{{source_file_part}}", | 679 ":copy_analysis_summaries", |
| 407 ] | 680 ":copy_analyzer_sources", |
| 408 } | 681 ":copy_api_readme", |
| 409 } | 682 ":copy_dart", |
| 683 ":copy_dartdoc_files", |
| 684 ":copy_headers", |
| 685 ":copy_libraries_dart", |
| 686 ":copy_license", |
| 687 ":copy_platform_files", |
| 688 ":copy_pub_assets", |
| 689 ":copy_readme", |
| 690 ":write_revision_file", |
| 691 ":write_version_file", |
| 692 ] |
| 693 if (is_win) { |
| 694 deps += [ ":copy_7zip" ] |
| 695 } |
| 696 if (is_fuchsia_host && is_linux) { |
| 697 deps += [ ":copy_dylibs" ] |
| 698 } |
| 699 } |
| 700 |
| 701 # Parts specific to the platform SDK. |
| 702 group("create_platform_sdk") { |
| 703 visibility = [ ":create_sdk" ] |
| 704 deps = [ |
| 705 ":copy_platform_sdk_libraries", |
| 706 ":copy_platform_sdk_scripts", |
| 707 ":copy_platform_sdk_snapshots", |
| 708 ] |
| 709 } |
| 710 |
| 711 # Parts specific to the full SDK. |
| 712 group("create_full_sdk") { |
| 713 visibility = [ |
| 714 ":copy_dev_compiler_tools", |
| 715 ":create_sdk", |
| 716 ] |
| 717 deps = [ |
| 718 ":copy_dev_compiler_sdk", |
| 719 ":copy_full_sdk_libraries", |
| 720 ":copy_full_sdk_scripts", |
| 721 ":copy_full_sdk_snapshots", |
| 722 ] |
| 723 } |
| 724 |
| 725 # The main target to depend on from ../BUILD.gn |
| 726 group("create_sdk") { |
| 727 deps = [ |
| 728 ":create_common_sdk", |
| 729 ] |
| 730 if (dart_platform_sdk) { |
| 731 deps += [ ":create_platform_sdk" ] |
| 732 } else { |
| 733 deps += [ ":create_full_sdk" ] |
| 734 } |
| 735 } |
| 736 |
| 737 # This rule copies tools to go along with ddc. |
| 738 copy("copy_dev_compiler_tools") { |
| 739 deps = [ |
| 740 ":create_full_sdk", |
| 741 "../utils/dartdevc:dartdevc_web", |
| 742 "../utils/dartdevc:stack_trace_mapper", |
| 743 ] |
| 744 dart_out = get_label_info("../utils/dartdevc:dartdevc_web", "root_out_dir") |
| 745 sources = [ |
| 746 "$dart_out/dev_compiler/build/web/dart_stack_trace_mapper.js", |
| 747 "$dart_out/dev_compiler/build/web/ddc_web_compiler.js", |
| 748 ] |
| 749 outputs = [ |
| 750 "$root_out_dir/dart-sdk/lib/dev_compiler/web/{{source_file_part}}", |
| 751 ] |
| 752 } |
| OLD | NEW |