]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Implement --build-all
[builder.git] / source / builder.cpp
index 1917cd42288223796c123ae23797a04734b5e6e4..e9491eb8a9bc417c350b6b2f55a378b69bffa7b0 100644 (file)
@@ -1,4 +1,5 @@
 #include <fstream>
+#include <iostream>
 #include <msp/progress.h>
 #include <msp/strconv.h>
 #include <msp/strutils.h>
@@ -47,6 +48,7 @@ Builder::Builder(int argc, char **argv):
        getopt.add_option(GetOpt::Option('f', "file", GetOpt::REQUIRED, "Build"));
        getopt.add_option(GetOpt::Option("chrome", GetOpt::NONE));
        getopt.add_option(GetOpt::Option("full-paths", GetOpt::NONE));
+       getopt.add_option(GetOpt::Option('A', "conf-all", GetOpt::NONE));
        int index=getopt(argc, argv);
 
        verbose+=getopt['v'].count();
@@ -76,16 +78,15 @@ Builder::Builder(int argc, char **argv):
        }
 
        dry_run=getopt['n'];
-
        jobs=max(strtol(getopt['j'].arg()), 1L);
-
        chrome=getopt["chrome"];
+       conf_all=getopt['A'];
+       build_file=getopt['f'].arg();
+       build_all=getopt['B'];
 
        if(getopt['C'])
                chdir(getopt['C'].arg().c_str());
 
-       build_file=getopt['f'].arg();
-
        for(int i=index; i<argc; ++i)
        {
                string v(argv[i]);
@@ -234,7 +235,6 @@ int Builder::main()
 
        default_pkg=packages.begin()->second;
 
-       bool conf_all=cmdline_options.count("conf_all");
        while(!new_pkgs.empty())
        {
                Package *pkg=new_pkgs.front();
@@ -273,10 +273,21 @@ int Builder::main()
                        if(i->second->get_buildable())
                                cout<<'*';
                        unsigned count=0;
+                       unsigned ood_count=0;
                        for(TargetMap::iterator j=targets.begin(); j!=targets.end(); ++j)
                                if(j->second->get_package()==i->second)
+                               {
                                        ++count;
-                       cout<<" ("<<count<<" targets)\n";
+                                       if(j->second->get_rebuild())
+                                               ++ood_count;
+                               }
+                       if(count)
+                       {
+                               cout<<" ("<<count<<" targets";
+                               if(ood_count)
+                                       cout<<", "<<ood_count<<" out-of-date";
+                               cout<<")\n";
+                       }
                }
        }