]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Generate export definitions with dlltool
[builder.git] / source / builder.cpp
index c61d4a77c71c8f98e53790cd4d95028ebb0cc378..6794842c50d2c872e8ac36e560d2d2dc58fd624c 100644 (file)
@@ -21,6 +21,7 @@
 #include "gnucxxcompiler.h"
 #include "gnulinker.h"
 #include "installedfile.h"
+#include "mingwdlltool.h"
 #include "package.h"
 #include "pkgconfiggenerator.h"
 #include "sharedlibrary.h"
@@ -203,6 +204,8 @@ Builder::Builder(int argc, char **argv):
        toolchain.add_tool(new Copy(*this));
        toolchain.add_tool(new Tar(*this));
        toolchain.add_tool(new PkgConfigGenerator(*this));
+       if(current_arch->get_system()=="windows")
+               toolchain.add_tool(new MingwDllTool(*this, *current_arch));
 }
 
 Builder::~Builder()
@@ -341,9 +344,12 @@ void Builder::add_primary_target(Target &t)
 
 void Builder::add_installed_target(Target &t)
 {
-       Target *install = get_target("install");
-       const Tool &copy = toolchain.get_tool("CP");
-       install->add_dependency(*copy.create_target(t));
+       Target *inst_tgt = 0;
+       if(const Tool *tool = t.get_tool())
+               inst_tgt = tool->create_install(t);
+       if(!inst_tgt)
+               inst_tgt = toolchain.get_tool("CP").create_target(t);
+       get_target("install")->add_dependency(*inst_tgt);
 }
 
 void Builder::usage(const char *reason, const char *argv0, bool brief)