Skip to content

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Dart

Overview

Dart artifacts are not built the same way in Fuchsia as they are on other platforms.

Instead of relying on pub to manage dependencies, sources of third-party packages we depend on are checked into the tree under //third_party/dart-pkg. This is to ensure we use consistent versions of our dependencies across multiple builds.

Likewise, no build output is placed in the source tree as everything goes under out/. That includes .packages files, which are generated as part of the build based on a target's dependency.

Exiting Dart programs

The Dart runner for Fuchsia does not monitor the FIDL channels opened by Dart programs and as a result does not end the program normally, but rather waits for the explicit call to fuchsia.exit() to indicate the program should be ended.

Note: Calling exit() from dart:io will result in an exception since components are not allowed to call this method since it would shutdown the dart_runner process.

import 'package:fuchsia/fuchsia.dart' as fuchsia;

void main(List<String> args) {
  print('Hello Dart!');
  fuchsia.exit(23);
}

Targets

There are five gn targets for building Dart:

See the definitions of each of these targets for how to use them.

Package layout {#layout}

We use a layout very similar to the standard layout.

my_package/
  |
  |-- pubspec.yaml           # Empty, used as a marker [mandatory]
  |-- BUILD.gn               # Contains all targets
  |-- analysis_options.yaml  # Analysis configuration [mandatory]
  |-- lib/                   # dart_library contents
  |-- bin/                   # dart_binary's (target) or dart_tool's (host)
  |-- test/                  # dart_test contents

Going further