]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Support building static libraries (but not using them yet)
[builder.git] / source / builder.cpp
index 0b1d1bf55163b3a8c44d2a767bcb4e790a0b7b7a..28d57d44012ce1465720185b1ea5d04c7558b910 100644 (file)
@@ -18,6 +18,8 @@
 #include "misc.h"
 #include "objectfile.h"
 #include "package.h"
+#include "sharedlibrary.h"
+#include "staticlibrary.h"
 #include "systemlibrary.h"
 #include "virtualtarget.h"
 
@@ -443,12 +445,28 @@ int Builder::create_targets()
 
                        if(build_exe)
                        {
-                               Executable *exe=new Executable(*this, *j, objs);
+                               Executable    *exe=0;
+                               StaticLibrary *slib=0;
+                               if(j->get_type()==Component::LIBRARY)
+                               {
+                                       exe=new SharedLibrary(*this, *j, objs);
+                                       slib=new StaticLibrary(*this, *j, objs);
+                                       add_target(slib);
+                               }
+                               else
+                                       exe=new Executable(*this, *j, objs);
+                               
                                add_target(exe);
                                if(i->second==default_pkg)
+                               {
                                        def_tgt->add_depend(exe);
+                                       if(slib) def_tgt->add_depend(slib);
+                               }
                                else
+                               {
                                        world->add_depend(exe);
+                                       if(slib) world->add_depend(slib);
+                               }
 
                                if(j->get_install())
                                {
@@ -462,6 +480,13 @@ int Builder::create_targets()
                                                Install *inst=new Install(*this, *i->second, *exe, (inst_base/inst_dir/Path::basename(exe->get_name())).str());
                                                add_target(inst);
                                                install->add_depend(inst);
+
+                                               if(slib)
+                                               {
+                                                       inst=new Install(*this, *i->second, *slib, (inst_base/inst_dir/Path::basename(slib->get_name())).str());
+                                                       add_target(inst);
+                                                       install->add_depend(inst);
+                                               }
                                        }
                                }
                        }