]> git.tdb.fi Git - builder.git/blobdiff - source/systemtools.cpp
Combine the gnu and clang toolchains into SystemToolchain
[builder.git] / source / systemtools.cpp
diff --git a/source/systemtools.cpp b/source/systemtools.cpp
new file mode 100644 (file)
index 0000000..bf90cf0
--- /dev/null
@@ -0,0 +1,36 @@
+#include "architecture.h"
+#include "builder.h"
+#include "clangccompiler.h"
+#include "clangcxxcompiler.h"
+#include "clangobjccompiler.h"
+#include "gnuarchiver.h"
+#include "gnuccompiler.h"
+#include "gnucxxcompiler.h"
+#include "gnulinker.h"
+#include "gnuobjccompiler.h"
+#include "mingwdlltool.h"
+#include "systemtools.h"
+
+using namespace std;
+
+SystemTools::SystemTools(Builder &builder, const Architecture &arch)
+{
+       const string &sys = arch.get_system();
+       if((sys=="darwin" || sys=="freebsd") && builder.get_vfs().find_binary("clang"))
+       {
+               add_tool(new ClangCCompiler(builder, arch));
+               add_tool(new ClangCxxCompiler(builder, arch));
+               add_tool(new ClangObjCCompiler(builder, arch));
+       }
+       else
+       {
+               add_tool(new GnuCCompiler(builder, arch));
+               add_tool(new GnuCxxCompiler(builder, arch));
+               add_tool(new GnuObjCCompiler(builder, arch));
+       }
+
+       add_tool(new GnuLinker(builder, arch));
+       add_tool(new GnuArchiver(builder, arch));
+       if(arch.get_system()=="windows")
+               add_tool(new MingwDllTool(builder, arch));
+}