]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Add DependencyCache to speed up build preparation
[builder.git] / source / builder.cpp
index 962429672c213180e7900bd1fd7c1db20e3e57a8..353bc29a74588945142b29b536bfa17e201ec1e7 100644 (file)
@@ -1,9 +1,16 @@
+/* $Id$
+
+This file is part of builder
+Copyright © 2006-2007 Mikko Rasa, Mikkosoft Productions
+Distributed under the LGPL
+*/
+
 #include <fstream>
 #include <iostream>
 #include <set>
 #include <msp/core/error.h>
 #include <msp/core/getopt.h>
-#include <msp/parser/parser.h>
+#include <msp/datafile/parser.h>
 #include <msp/path/utils.h>
 #include <msp/strings/utils.h>
 #include <msp/time/units.h>
@@ -18,6 +25,7 @@
 #include "pkgconfig.h"
 #include "sharedlibrary.h"
 #include "systemlibrary.h"
+#include "tarball.h"
 #include "unlink.h"
 #include "virtualtarget.h"
 
@@ -478,7 +486,7 @@ int Builder::load_build_file(const Path::Path &fn)
        if(!in)
                return -1;
 
-       Parser::Parser parser(in, fn.str());
+       DataFile::Parser parser(in, fn.str());
        Loader loader(*this, fn.subpath(0, fn.size()-1));
        loader.load(parser);
 
@@ -501,6 +509,9 @@ int Builder::create_targets()
        Target *install=new VirtualTarget(*this, "install");
        world->add_depend(install);
 
+       Target *tarballs=new VirtualTarget(*this, "tarballs");
+       world->add_depend(tarballs);
+
        for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i)
        {
                if(!i->second)
@@ -517,6 +528,8 @@ int Builder::create_targets()
                        PkgConfig *pc=new PkgConfig(*this, *i->second);
                        install->add_depend(new Install(*this, *i->second, *pc));
                }
+
+               tarballs->add_depend(new TarBall(*this, *i->second));
        }
 
        // Find dependencies until no new targets are created
@@ -570,6 +583,9 @@ int Builder::create_targets()
                world->prepare();
        }
 
+       for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i)
+               i->second->get_deps_cache().save();
+
        return 0;
 }