]> git.tdb.fi Git - builder.git/blob - source/systemtools.cpp
Refactor transitive dependencies to work on all targets
[builder.git] / source / systemtools.cpp
1 #include "architecture.h"
2 #include "builder.h"
3 #include "clangcompiler.h"
4 #include "gnuarchiver.h"
5 #include "gnucompiler.h"
6 #include "gnulinker.h"
7 #include "mingwdlltool.h"
8 #include "systemtools.h"
9
10 using namespace std;
11
12 SystemTools::SystemTools(Builder &builder, const Architecture &arch)
13 {
14         const string &sys = arch.get_system();
15         if((sys=="darwin" || sys=="freebsd") && builder.get_vfs().find_binary("clang"))
16         {
17                 add_tool(new ClangCompiler(builder, arch, "CC"));
18                 add_tool(new ClangCompiler(builder, arch, "CXX"));
19                 add_tool(new ClangCompiler(builder, arch, "OBJC"));
20         }
21         else
22         {
23                 add_tool(new GnuCompiler(builder, arch, "CC"));
24                 add_tool(new GnuCompiler(builder, arch, "CXX"));
25                 add_tool(new GnuCompiler(builder, arch, "OBJC"));
26         }
27
28         add_tool(new GnuLinker(builder, arch));
29         add_tool(new GnuArchiver(builder, arch));
30         if(arch.get_system()=="windows")
31                 add_tool(new MingwDllTool(builder, arch));
32 }