]> git.tdb.fi Git - builder.git/blob - source/systemtools.cpp
Combine the gnu and clang toolchains into SystemToolchain
[builder.git] / source / systemtools.cpp
1 #include "architecture.h"
2 #include "builder.h"
3 #include "clangccompiler.h"
4 #include "clangcxxcompiler.h"
5 #include "clangobjccompiler.h"
6 #include "gnuarchiver.h"
7 #include "gnuccompiler.h"
8 #include "gnucxxcompiler.h"
9 #include "gnulinker.h"
10 #include "gnuobjccompiler.h"
11 #include "mingwdlltool.h"
12 #include "systemtools.h"
13
14 using namespace std;
15
16 SystemTools::SystemTools(Builder &builder, const Architecture &arch)
17 {
18         const string &sys = arch.get_system();
19         if((sys=="darwin" || sys=="freebsd") && builder.get_vfs().find_binary("clang"))
20         {
21                 add_tool(new ClangCCompiler(builder, arch));
22                 add_tool(new ClangCxxCompiler(builder, arch));
23                 add_tool(new ClangObjCCompiler(builder, arch));
24         }
25         else
26         {
27                 add_tool(new GnuCCompiler(builder, arch));
28                 add_tool(new GnuCxxCompiler(builder, arch));
29                 add_tool(new GnuObjCCompiler(builder, arch));
30         }
31
32         add_tool(new GnuLinker(builder, arch));
33         add_tool(new GnuArchiver(builder, arch));
34         if(arch.get_system()=="windows")
35                 add_tool(new MingwDllTool(builder, arch));
36 }