From 532c94145b6605361513682601f1d8e9f97a2497 Mon Sep 17 00:00:00 2001 From: Richard Geary Date: Fri, 23 Jan 2015 12:35:03 -0500 Subject: Add support for outputting dependency manifest files, used by ninja and make Use --manifest-file=somefile.d to output the dependency manifest. This file will contain a list of files which were read by protoc as part of creating the output files. It doesn't include the plugin inputs if plugins are used, that could be a later extension. The manifest file is in the format : . The manifest file format only allows you to specify one output file, which isn't a problem as it's used to detect input changes in order to detect when to rerun the protoc command. The output file used in the manifest is the manifest filename itself; to use this in ninja you should declare the manifest file as the first output as well as the depfile input. --- src/google/protobuf/compiler/command_line_interface.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/google/protobuf/compiler/command_line_interface.h') diff --git a/src/google/protobuf/compiler/command_line_interface.h b/src/google/protobuf/compiler/command_line_interface.h index 74a0adb4..59d57fbf 100644 --- a/src/google/protobuf/compiler/command_line_interface.h +++ b/src/google/protobuf/compiler/command_line_interface.h @@ -247,6 +247,11 @@ class LIBPROTOC_EXPORT CommandLineInterface { // Implements the --descriptor_set_out option. bool WriteDescriptorSet(const vector parsed_files); + // Implements the --manifest-file option + bool GenerateDependencyManifestFile( + const vector parsed_files, + DiskSourceTree * source_tree); + // Get all transitive dependencies of the given file (including the file // itself), adding them to the given list of FileDescriptorProtos. The // protos will be ordered such that every file is listed before any file that @@ -353,6 +358,10 @@ class LIBPROTOC_EXPORT CommandLineInterface { // FileDescriptorSet should be written. Otherwise, empty. string descriptor_set_name_; + // If --manifest_file was given, this is the filename to which the input + // file should be written. Otherwise, empty. + string manifest_name_; + // True if --include_imports was given, meaning that we should // write all transitive dependencies to the DescriptorSet. Otherwise, only // the .proto files listed on the command-line are added. -- cgit v1.2.3