]> git.tdb.fi Git - builder.git/blob - source/staticlibrary.cpp
More flexible way to manage filename patterns
[builder.git] / source / staticlibrary.cpp
1 #include "builder.h"
2 #include "component.h"
3 #include "objectfile.h"
4 #include "sourcepackage.h"
5 #include "staticlibrary.h"
6
7 using namespace std;
8 using namespace Msp;
9
10 StaticLibrary::StaticLibrary(Builder &b, const FS::Path &p):
11         FileTarget(b, p)
12 { }
13
14 StaticLibrary::StaticLibrary(Builder &b, const Component &c, const list<ObjectFile *> &objs):
15         FileTarget(b, c.get_package(), c.get_package().get_output_directory()/generate_filename(c))
16 {
17         component = &c;
18         for(list<ObjectFile *>::const_iterator i=objs.begin(); i!=objs.end(); ++i)
19                 add_dependency(**i);
20
21         install_location = "lib";
22         nested_build_sig = true;
23         arch_in_build_sig = true;
24 }
25
26 string StaticLibrary::generate_filename(const Component &comp)
27 {
28         const Architecture &arch = comp.get_package().get_builder().get_current_arch();
29         return arch.create_filename<StaticLibrary>(comp.get_name());
30 }
31
32 void StaticLibrary::add_required_library(const string &lib)
33 {
34         build_info.libs.push_back(lib);
35 }
36
37 void StaticLibrary::add_library_path(const FS::Path &pth)
38 {
39         build_info.libpath.push_back(pth);
40 }
41
42 void StaticLibrary::collect_build_info(BuildInfo &binfo) const
43 {
44         Target::collect_build_info(binfo);
45         binfo.update_from(build_info);
46 }