Index: runtime/bin/gen_snapshot.cc |
diff --git a/runtime/bin/gen_snapshot.cc b/runtime/bin/gen_snapshot.cc |
index 3a72a058fa2f72e839ebf455867535fec22eed4f..dfd096436792f09c9e6a53bb07c2fa924d258992 100644 |
--- a/runtime/bin/gen_snapshot.cc |
+++ b/runtime/bin/gen_snapshot.cc |
@@ -80,6 +80,7 @@ static const char* isolate_snapshot_instructions_filename = NULL; |
static const char* assembly_filename = NULL; |
static const char* script_snapshot_filename = NULL; |
static bool dependencies_only = false; |
+static bool print_dependencies = false; |
static const char* dependencies_filename = NULL; |
@@ -331,6 +332,17 @@ static bool ProcessDependenciesOnlyOption(const char* option) { |
return false; |
} |
+static bool ProcessPrintDependenciesOption(const char* option) { |
+ const char* name = ProcessOption(option, "--print_dependencies"); |
+ if (name == NULL) { |
+ name = ProcessOption(option, "--print-dependencies"); |
+ } |
+ if (name != NULL) { |
+ print_dependencies = true; |
+ return true; |
+ } |
+ return false; |
+} |
static bool ProcessEmbedderEntryPointsManifestOption(const char* option) { |
const char* name = ProcessOption(option, "--embedder_entry_points_manifest="); |
@@ -406,6 +418,7 @@ static int ParseArguments(int argc, |
ProcessScriptSnapshotOption(argv[i]) || |
ProcessDependenciesOption(argv[i]) || |
ProcessDependenciesOnlyOption(argv[i]) || |
+ ProcessPrintDependenciesOption(argv[i]) || |
ProcessEmbedderEntryPointsManifestOption(argv[i]) || |
ProcessURLmappingOption(argv[i]) || ProcessPackageRootOption(argv[i]) || |
ProcessPackagesOption(argv[i]) || ProcessEnvironmentOption(argv[i])) { |
@@ -673,55 +686,72 @@ static void CreateAndWriteDependenciesFile() { |
return; |
} |
- ASSERT(dependencies_filename != NULL); |
- File* file = File::Open(dependencies_filename, File::kWriteTruncate); |
- if (file == NULL) { |
- Log::PrintErr("Error: Unable to open dependencies file: %s\n\n", |
- dependencies_filename); |
- exit(kErrorExitCode); |
- } |
+ ASSERT((dependencies_filename != NULL) || print_dependencies); |
bool success = true; |
+ File* file = NULL; |
+ if (dependencies_filename != NULL) { |
+ file = File::Open(dependencies_filename, File::kWriteTruncate); |
+ if (file == NULL) { |
+ Log::PrintErr("Error: Unable to open dependencies file: %s\n\n", |
+ dependencies_filename); |
+ exit(kErrorExitCode); |
+ } |
- // Targets: |
- switch (snapshot_kind) { |
- case kCore: |
- success &= file->Print("%s ", vm_snapshot_data_filename); |
- success &= file->Print("%s ", isolate_snapshot_data_filename); |
- break; |
- case kScript: |
- success &= file->Print("%s ", script_snapshot_filename); |
- break; |
- case kAppAOTAssembly: |
- success &= file->Print("%s ", assembly_filename); |
- break; |
- case kAppAOTBlobs: |
- success &= file->Print("%s ", vm_snapshot_data_filename); |
- success &= file->Print("%s ", vm_snapshot_instructions_filename); |
- success &= file->Print("%s ", isolate_snapshot_data_filename); |
- success &= file->Print("%s ", isolate_snapshot_instructions_filename); |
- break; |
- } |
+ // Targets: |
+ switch (snapshot_kind) { |
+ case kCore: |
+ success &= file->Print("%s ", vm_snapshot_data_filename); |
+ success &= file->Print("%s ", isolate_snapshot_data_filename); |
+ break; |
+ case kScript: |
+ success &= file->Print("%s ", script_snapshot_filename); |
+ break; |
+ case kAppAOTAssembly: |
+ success &= file->Print("%s ", assembly_filename); |
+ break; |
+ case kAppAOTBlobs: |
+ success &= file->Print("%s ", vm_snapshot_data_filename); |
+ success &= file->Print("%s ", vm_snapshot_instructions_filename); |
+ success &= file->Print("%s ", isolate_snapshot_data_filename); |
+ success &= file->Print("%s ", isolate_snapshot_instructions_filename); |
+ break; |
+ } |
- success &= file->Print(": "); |
+ success &= file->Print(": "); |
+ } |
// Sources: |
if (snapshot_kind == kScript) { |
- success &= file->Print("%s ", vm_snapshot_data_filename); |
- success &= file->Print("%s ", isolate_snapshot_data_filename); |
+ if (dependencies_filename != NULL) { |
+ success &= file->Print("%s ", vm_snapshot_data_filename); |
+ success &= file->Print("%s ", isolate_snapshot_data_filename); |
+ } |
+ if (print_dependencies) { |
+ Log::Print("%s\n", vm_snapshot_data_filename); |
+ Log::Print("%s\n", isolate_snapshot_data_filename); |
+ } |
} |
for (intptr_t i = 0; i < dependencies->length(); i++) { |
char* dep = dependencies->At(i); |
- success &= file->Print("%s ", dep); |
+ if (dependencies_filename != NULL) { |
+ success &= file->Print("%s ", dep); |
+ } |
+ if (print_dependencies) { |
+ Log::Print("%s\n", dep); |
+ } |
free(dep); |
} |
- success &= file->Print("\n"); |
- if (!success) { |
- Log::PrintErr("Error: Unable to write dependencies file: %s\n\n", |
- dependencies_filename); |
- exit(kErrorExitCode); |
+ if (dependencies_filename != NULL) { |
+ success &= file->Print("\n"); |
+ |
+ if (!success) { |
+ Log::PrintErr("Error: Unable to write dependencies file: %s\n\n", |
+ dependencies_filename); |
+ exit(kErrorExitCode); |
+ } |
+ file->Release(); |
} |
- file->Release(); |
delete dependencies; |
isolate_data->set_dependencies(NULL); |
} |
@@ -839,6 +869,7 @@ static void PrintUsage() { |
" --dependencies=<output-file> Generates a Makefile with snapshot output \n" |
" files as targets and all transitive imports\n" |
" as sources. \n" |
+" --print_dependencies Prints all transitive imports to stdout. \n" |
" --dependencies_only Don't create and output the snapshot. \n" |
" \n" |
" To create a core snapshot: \n" |
@@ -1565,7 +1596,7 @@ int main(int argc, char** argv) { |
const bool is_kernel_file = |
TryReadKernel(app_script_name, &kernel, &kernel_length); |
- if (dependencies_filename != NULL) { |
+ if ((dependencies_filename != NULL) || print_dependencies) { |
isolate_data->set_dependencies(new MallocGrowableArray<char*>()); |
} |