]> git.tdb.fi Git - builder.git/blobdiff - source/tool.h
Support source generators that combine multiple files into one
[builder.git] / source / tool.h
index ad89e47431b3b47eee53c8d7a747ef98cce2707c..2f8c25b4f56aedc10a45090215995c64f5ba7410 100644 (file)
@@ -21,6 +21,13 @@ Examples include compilers and linkers.
 class Tool
 {
 public:
+       enum ProcessingUnit
+       {
+               ONE_FILE,
+               DIRECTORY,
+               COMPONENT
+       };
+
        typedef std::list<Msp::FS::Path> SearchPath;
        typedef std::list<std::string> SuffixList;
 
@@ -32,6 +39,7 @@ protected:
        FileTarget *executable;
        SuffixList input_suffixes;
        SuffixList aux_suffixes;
+       ProcessingUnit processing_unit;
        SearchPath system_path;
        BuildInfo build_info;
        bool prepared;
@@ -70,6 +78,9 @@ public:
        auxiliary suffixes are considered as well */
        bool accepts_suffix(const std::string &, bool aux = false) const;
 
+       /** Returns the grouping unit this tool prefers to process. */
+       ProcessingUnit get_processing_unit() const { return processing_unit; }
+
        /// Returns the systemwide search path for source files.
        const SearchPath &get_system_path() const { return system_path; }
 
@@ -125,4 +136,7 @@ protected:
        SubTool(Tool &);
 };
 
+
+void operator>>(const Msp::LexicalConverter &, Tool::ProcessingUnit &);
+
 #endif