diff --git a/.gitignore b/.gitignore
index d208518..27f8e12 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,8 @@
 /third_party/brotli/src/
 /third_party/colorama/src/
 /third_party/dart-sdk/
+/third_party/dart-pkg/vector_math
+/third_party/dart-pkg/box2d
 /third_party/dejavu-fonts-ttf-2.34/ttf/*.ttf
 /third_party/freetype/
 /third_party/go/tool/
diff --git a/DEPS b/DEPS
index 0c38ed5..3e481a7 100644
--- a/DEPS
+++ b/DEPS
@@ -31,6 +31,8 @@
   'lss_revision': 'e079768b7e3a94dcbe7d338496c0c3bde7151b6e',
   'nss_revision': 'bb4e75a43d007518ae7d618665ea2f25b0c60b63',
   'nacl_revision': '87d5dd90911a0657c27574f78e86b7dfc4ad8b29',
+  'vector_math_dart_revision': '65915583f7aa606cb47ed265f853c18c60102b81',
+  'box2d_dart_revision': 'c5e65d9546275e78ad2a1d51b459e7638f6e4323',
 }
 
 # Only these hosts are allowed for dependencies in this DEPS file.
@@ -100,6 +102,12 @@
 
   'src/native_client':
     Var('chromium_git') + '/native_client/src/native_client.git' + '@' + Var('nacl_revision'),
+
+  'src/third_party/dart-pkg/vector_math':
+      Var('chromium_git') + '/external/github.com/google/vector_math.dart.git' + '@' + Var('vector_math_dart_revision'),
+
+  'src/third_party/dart-pkg/box2d':
+      Var('chromium_git') + '/external/github.com/google/box2d.dart.git' + '@' + Var('box2d_dart_revision'),
 }
 
 
diff --git a/build/ls.py b/build/ls.py
new file mode 100755
index 0000000..638c3bd
--- /dev/null
+++ b/build/ls.py
@@ -0,0 +1,31 @@
+#!/usr/bin/python
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Recursively list files of the target directory. Ignores dot files."""
+
+import argparse
+import os
+import sys
+
+def main(target_directory):
+  for root, dirs, files in os.walk(target_directory):
+    files = [f for f in files if not f[0] == '.']
+    dirs[:] = [d for d in dirs if not d[0] == '.']
+    for f in files:
+      path = os.path.join(root, f)
+      print path
+
+if __name__ == '__main__':
+  parser = argparse.ArgumentParser(
+      description="Recursively list files of the target directory")
+  parser.add_argument("--target-directory",
+                      dest="target_directory",
+                      metavar="<target-directory>",
+                      type=str,
+                      required=True,
+                      help="The target directory")
+
+  args = parser.parse_args()
+  sys.exit(main(args.target_directory))
diff --git a/mojo/dart/embedder/BUILD.gn b/mojo/dart/embedder/BUILD.gn
index 207020f..ac64810 100644
--- a/mojo/dart/embedder/BUILD.gn
+++ b/mojo/dart/embedder/BUILD.gn
@@ -46,6 +46,7 @@
     "//crypto",
     "//dart/runtime:libdart",
     "//dart/runtime/bin:libdart_embedder_noio",
+    "//third_party/dart-pkg",
     "//mojo/public/c/system",
     "//mojo/public/cpp/system",
   ]
diff --git a/mojo/public/dart/rules.gni b/mojo/public/dart/rules.gni
index 03b17b1..7786cd4 100644
--- a/mojo/public/dart/rules.gni
+++ b/mojo/public/dart/rules.gni
@@ -215,6 +215,9 @@
 #   sources
 #       List of sources to include in the package.
 #
+#   pkg_dir (optional)
+#       Directory containing the package sources. This overrides sources.
+#
 #   deps (optional)
 #       Note: this can only contain mojom targets.
 #
@@ -224,7 +227,11 @@
 #       Directory containing sdk-ext .dart sources.
 #
 template("dart_pkg") {
-  pubspec_yaml_path = rebase_path("pubspec.yaml")
+  if (defined(invoker.pkg_dir)) {
+    pubspec_yaml_path = rebase_path("pubspec.yaml", "", invoker.pkg_dir)
+  } else {
+    pubspec_yaml_path = rebase_path("pubspec.yaml")
+  }
   dart_package_name_script =
       rebase_path("mojo/public/tools/dart_package_name.py", ".", mojo_sdk_root)
   package_name = exec_script(dart_package_name_script,
@@ -239,7 +246,7 @@
   package_root = rebase_path("$root_gen_dir/dart-pkg/packages")
   stamp_file = "$root_gen_dir/dart-pkg/${package_name}.stamp"
 
-  assert(defined(invoker.sources))
+  assert(defined(invoker.sources) || defined(invoker.pkg_dir))
 
   action(target_name) {
     deps = []
@@ -276,10 +283,23 @@
       stamp_file,
     ]
 
+    if (defined(invoker.sources)) {
+      sources = invoker.sources
+    } else {
+      assert(defined(invoker.pkg_dir))
+      list_script = rebase_path("build/ls.py", ".", mojo_sdk_root)
+      sources = exec_script(list_script,
+                            [
+                              "--target-directory",
+                              rebase_path(invoker.pkg_dir),
+                            ],
+                            "list lines")
+    }
+
     inputs = [
                list_mojoms_script,
                script,
-             ] + rebase_path(invoker.sources)
+             ] + rebase_path(sources)
 
     args = [
              "--package-name",
@@ -293,7 +313,7 @@
              "--stamp-file",
              rebase_path(stamp_file),
              "--package-sources",
-           ] + rebase_path(invoker.sources) + [ "--mojom-sources" ] +
+           ] + rebase_path(sources) + [ "--mojom-sources" ] +
            rebase_path(mojom_sources, "", mojo_sdk_root) +
            [ "--sdk-ext-directories" ] + rebase_path(sdk_ext_directory)
   }
diff --git a/third_party/dart-pkg/BUILD.gn b/third_party/dart-pkg/BUILD.gn
new file mode 100644
index 0000000..09d8e8d
--- /dev/null
+++ b/third_party/dart-pkg/BUILD.gn
@@ -0,0 +1,20 @@
+# Copyright 2015 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//mojo/public/dart/rules.gni")
+
+group("dart-pkg") {
+  deps = [
+    ":box2d",
+    ":vector_math",
+  ]
+}
+
+dart_pkg("box2d") {
+  pkg_dir = "//third_party/dart-pkg/box2d"
+}
+
+dart_pkg("vector_math") {
+  pkg_dir = "//third_party/dart-pkg/vector_math"
+}
