]> git.tdb.fi Git - builder.git/blob - source/objectfile.cpp
d29cd11df850759833705e0103264c50d09de512
[builder.git] / source / objectfile.cpp
1 #include <msp/path/utils.h>
2 #include "builder.h"
3 #include "compile.h"
4 #include "component.h"
5 #include "objectfile.h"
6 #include "package.h"
7 #include "sourcefile.h"
8
9 using namespace std;
10 using namespace Msp;
11
12 ObjectFile::ObjectFile(Builder &b, const Component &c, SourceFile &src):
13         Target(b, &c.get_package(), generate_target_name(c, src.get_name())),
14         comp(c)
15 {
16         buildable=true;
17         add_depend(&src);
18 }
19
20 Action *ObjectFile::build()
21 {
22         return Target::build(new Compile(builder, depends.front()->get_name(), name, comp));
23 }
24
25 string ObjectFile::generate_target_name(const Component &comp, const string &src)
26 {
27         return (comp.get_package().get_source()/"temp"/comp.get_name()/(Path::splitext(src.substr(src.rfind('/')+1)).base+".o")).str();
28 }