Index: lib/src/compiler.dart |
diff --git a/lib/src/compiler.dart b/lib/src/compiler.dart |
index 91e97c88eacbc34c1b3e950572f83af21b4fdd37..1723d4c5fb58fb83a8a694452cf0c64c0b5c666c 100644 |
--- a/lib/src/compiler.dart |
+++ b/lib/src/compiler.dart |
@@ -78,6 +78,7 @@ class BatchCompiler extends AbstractCompiler { |
/// Already compiled sources, so we don't compile them again. |
final _compiled = new HashSet<LibraryElement>(); |
+ bool _sdkCopied = false; |
bool _failure = false; |
bool get failure => _failure; |
@@ -101,6 +102,7 @@ class BatchCompiler extends AbstractCompiler { |
void reset() { |
_compiled.clear(); |
+ _sdkCopied = false; |
} |
/// Compiles every file in [options.inputs]. |
@@ -178,11 +180,17 @@ class BatchCompiler extends AbstractCompiler { |
} |
void _copyDartRuntime() { |
+ if (_sdkCopied) return; |
+ _sdkCopied = true; |
for (var file in defaultRuntimeFiles) { |
- var input = path.join(options.runtimeDir, file); |
- var output = path.join(_runtimeOutputDir, file); |
- new Directory(path.dirname(output)).createSync(recursive: true); |
- new File(input).copySync(output); |
+ var input = new File(path.join(options.runtimeDir, file)); |
+ var output = new File(path.join(_runtimeOutputDir, file)); |
+ if (output.existsSync() && |
+ output.lastModifiedSync() == input.lastModifiedSync()) { |
+ continue; |
+ } |
+ new Directory(path.dirname(output.path)).createSync(recursive: true); |
+ input.copySync(output.path); |
} |
} |