]> git.tdb.fi Git - builder.git/blobdiff - source/builder.cpp
Always prepare cmdline to avoid some dependency hassle
[builder.git] / source / builder.cpp
index 7135a8d97b1a42a4e6aa24860ade31c32fa4f9b4..0905bb6779530af63a6fd2f25151cf4248609715 100644 (file)
@@ -258,19 +258,19 @@ int Builder::main()
                        if(dynamic_cast<SourcePackage *>(*i))
                                IO::print("*");
                        unsigned count=0;
-                       unsigned ood_count=0;
+                       unsigned to_be_built=0;
                        for(TargetMap::iterator j=targets.begin(); j!=targets.end(); ++j)
                                if(j->second->get_package()==*i)
                                {
                                        ++count;
                                        if(j->second->get_rebuild())
-                                               ++ood_count;
+                                               ++to_be_built;
                                }
                        if(count)
                        {
                                IO::print(" (%d targets", count);
-                               if(ood_count)
-                                       IO::print(", %d out-of-date", ood_count);
+                               if(to_be_built)
+                                       IO::print(", %d to be built", to_be_built);
                                IO::print(")");
                        }
                        IO::print("\n");
@@ -285,7 +285,8 @@ int Builder::main()
                IO::print(IO::cerr, "The following problems were detected:\n");
                for(ProblemList::iterator i=problems.begin(); i!=problems.end(); ++i)
                        IO::print(IO::cerr, "  %s: %s\n", i->package, i->descr);
-               IO::print(IO::cerr, "Please fix them and try again.\n");
+               if(!analyzer)
+                       IO::print(IO::cerr, "Please fix them and try again.\n");
                return 1;
        }
 
@@ -640,18 +641,7 @@ int Builder::create_targets()
                cmdline->add_depend(tgt);
        }
 
-       /* If world is to be built, prepare cmdline.  If not, add cmdline to world
-       and prepare world.  I don't really like this, but it keeps the graph
-       acyclic.
-       
-       XXX Could we skip preparing targets we are not interested in? */
-       if(build_world)
-               cmdline->prepare();
-       else
-       {
-               world->add_depend(cmdline);
-               world->prepare();
-       }
+       cmdline->prepare();
 
        for(PackageMap::iterator i=packages.begin(); i!=packages.end(); ++i)
                if(SourcePackage *spkg=dynamic_cast<SourcePackage *>(i->second))
@@ -727,7 +717,11 @@ int Builder::do_build()
 {
        Target *cmdline=get_target("cmdline");
 
-       unsigned total=cmdline->count_rebuild();
+       unsigned total=0;
+       for(map<string, Target *>::const_iterator i=targets.begin(); i!=targets.end(); ++i)
+               if(i->second->is_buildable() && i->second->get_rebuild())
+                       ++total;
+
        if(!total)
        {
                IO::print("Already up to date\n");