-#include "archive.h"
+#include "builder.h"
#include "component.h"
#include "objectfile.h"
-#include "package.h"
+#include "sourcepackage.h"
#include "staticlibrary.h"
using namespace std;
+using namespace Msp;
-StaticLibrary::StaticLibrary(Builder &b, const Component &c, const std::list<ObjectFile *> &objs):
- Target(b, &c.get_package(), generate_target_name(c)),
- comp(c)
+StaticLibrary::StaticLibrary(Builder &b, const FS::Path &p):
+ FileTarget(b, p)
+{ }
+
+StaticLibrary::StaticLibrary(Builder &b, const Component &c, const list<ObjectFile *> &objs):
+ FileTarget(b, c.get_package(), c.get_package().get_out_dir()/generate_filename(c))
{
- buildable=true;
+ component = &c;
for(list<ObjectFile *>::const_iterator i=objs.begin(); i!=objs.end(); ++i)
- add_depend(*i);
-}
+ add_depend(**i);
-Action *StaticLibrary::build()
-{
- return Target::build(new Archive(builder, *this));;
+ install_location = "lib";
}
-string StaticLibrary::generate_target_name(const Component &c)
+string StaticLibrary::generate_filename(const Component &comp)
{
- return (c.get_package().get_out_dir()/("lib"+c.get_name()+".a")).str();
+ const Architecture &arch = comp.get_package().get_builder().get_current_arch();
+ return arch.get_static_library_patterns().front().apply(comp.get_name());
}