]> git.tdb.fi Git - builder.git/commitdiff
Add a list of auxiliary suffixes to Tool
authorMikko Rasa <tdb@tdb.fi>
Fri, 8 Jun 2012 22:47:17 +0000 (01:47 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 8 Jul 2012 21:08:53 +0000 (00:08 +0300)
source/gnuccompiler.cpp
source/gnucxxcompiler.cpp
source/tool.cpp
source/tool.h
source/toolchain.cpp
source/toolchain.h

index 8fc8b6c9da626d3d45344598cbf774fc4132bd50..5c2141322365c481bddd60f029819f9a45cdb7a0 100644 (file)
@@ -8,6 +8,7 @@ GnuCCompiler::GnuCCompiler(Builder &b):
        GnuCompiler(b, "CC", "gcc")
 {
        input_suffixes.push_back(".c");
+       aux_suffixes.push_back(".h");
 }
 
 Target *GnuCCompiler::create_source(const Component &comp, const FS::Path &path) const
index 7c863a51b2ad5aff193b340bceedcbd42021a34d..fb7fbdce2cf37d0601f545e40c71d5c9528e0a5d 100644 (file)
@@ -8,6 +8,7 @@ GnuCxxCompiler::GnuCxxCompiler(Builder &b):
 {
        input_suffixes.push_back(".cpp");
        input_suffixes.push_back(".cc");
+       aux_suffixes.push_back(".hpp");
 }
 
 Target *GnuCxxCompiler::create_source(const Component &comp, const FS::Path &path) const
index e1858493add33c2624f78cd0585235d7603c03a1..5556cb346e7c1efeeee808aa275818545f185518 100644 (file)
@@ -8,9 +8,14 @@ Tool::Tool(Builder &b, const string &t):
        tag(t)
 { }
 
-bool Tool::accepts_suffix(const string &suffix) const
+bool Tool::accepts_suffix(const string &suffix, bool aux) const
 {
-       return find(input_suffixes.begin(), input_suffixes.end(), suffix)!=input_suffixes.end();
+       if(find(input_suffixes.begin(), input_suffixes.end(), suffix)!=input_suffixes.end())
+               return true;
+       else if(aux)
+               return find(aux_suffixes.begin(), aux_suffixes.end(), suffix)!=aux_suffixes.end();
+       else
+               return false;
 }
 
 Target *Tool::create_target(Target &source, const string &arg) const
index 5f210654597f325185a6e5c26e3f9c965026ec97..22fc3b28568293ea3a6b8bdb51faafc0d43da474 100644 (file)
@@ -12,18 +12,23 @@ class Task;
 
 class Tool
 {
+public:
+       typedef std::list<std::string> SuffixList;
+
 protected:
        Builder &builder;
        std::string tag;
-       std::list<std::string> input_suffixes;
+       SuffixList input_suffixes;
+       SuffixList aux_suffixes;
 
        Tool(Builder &, const std::string &);
 public:
        virtual ~Tool() { }
 
        const std::string &get_tag() const { return tag; }
-       const std::list<std::string> &get_input_suffixes() const { return input_suffixes; }
-       bool accepts_suffix(const std::string &) const;
+       const SuffixList &get_input_suffixes() const { return input_suffixes; }
+       const SuffixList &get_auxiliary_suffixes() const { return aux_suffixes; }
+       bool accepts_suffix(const std::string &, bool = false) const;
 
        virtual Target *create_source(const Component &, const Msp::FS::Path &) const { return 0; }
        Target *create_target(Target &, const std::string & = std::string()) const;
index 6c7dae1e5c43dd4c5391fd822ff1d4aa50572978..cdbc7aa0ae4e4e55ebfe76b28b8efc85df59b510 100644 (file)
@@ -21,10 +21,10 @@ const Tool &Toolchain::get_tool(const string &tag) const
        return *get_item(tools, tag);
 }
 
-const Tool *Toolchain::get_tool_for_suffix(const string &suffix) const
+const Tool *Toolchain::get_tool_for_suffix(const string &suffix, bool aux) const
 {
        for(ToolMap::const_iterator i=tools.begin(); i!=tools.end(); ++i)
-               if(i->second->accepts_suffix(suffix))
+               if(i->second->accepts_suffix(suffix, aux))
                        return i->second;
 
        return 0;
index 1060e09e559b8ffde1b8c8aa9f5f54f16b4cd567..3da6cda9e43ac8cad5438aeccb351ce0743dc0bf 100644 (file)
@@ -18,7 +18,7 @@ public:
 
        void add_tool(Tool *);
        const Tool &get_tool(const std::string &) const;
-       const Tool *get_tool_for_suffix(const std::string &) const;
+       const Tool *get_tool_for_suffix(const std::string &, bool = false) const;
 };
 
 #endif