]> git.tdb.fi Git - builder.git/blob - source/vssolutionfile.cpp
fd13d5f8c5f42a0b6035085ab72fb2d7b904d073
[builder.git] / source / vssolutionfile.cpp
1 #include <msp/core/algorithm.h>
2 #include "builder.h"
3 #include "sourcepackage.h"
4 #include "vssolutionfile.h"
5
6 using namespace std;
7 using namespace Msp;
8
9 VsSolutionFile::VsSolutionFile(Builder &b, const SourcePackage &p):
10         FileTarget(b, p, p.get_source_directory()/(p.get_name()+".sln"))
11 {
12         tool = &builder.get_toolchain().get_tool("VSSG");
13 }
14
15 void VsSolutionFile::find_dependencies()
16 {
17         if(FileTarget *project = builder.get_vfs().get_target(package->get_source_directory()/(package->get_name()+".vcxproj")))
18                 add_dependency(*project);
19
20         Package::Requirements reqs = package->get_required_packages();
21         for(Package::Requirements::iterator i=reqs.begin(); i!=reqs.end(); ++i)
22                 if(const SourcePackage *spkg = dynamic_cast<const SourcePackage *>(*i))
23                 {
24                         if(FileTarget *project = builder.get_vfs().get_target(spkg->get_source_directory()/(spkg->get_name()+".vcxproj")))
25                                 add_dependency(*project);
26
27                         const Package::Requirements &rreqs = spkg->get_required_packages();
28                         for(Package::Requirements::const_iterator j=rreqs.begin(); j!=rreqs.end(); ++j)
29                                 if(find(reqs, *j)==reqs.end())
30                                         reqs.push_back(*j);
31                 }
32 }