]> git.tdb.fi Git - builder.git/blobdiff - source/sourcepackage.cpp
Various fixes to package dependency and build info handling
[builder.git] / source / sourcepackage.cpp
index 838ab16ed53d2b1e0c7180d4972827f4c15fce82..df1677fcce8edc638f8a8eb66cfafe2b6dee7b25 100644 (file)
@@ -1,7 +1,7 @@
 /* $Id$
 
 This file is part of builder
-Copyright © 2007-2009  Mikko Rasa, Mikkosoft Productions
+Copyright © 2007-2010  Mikko Rasa, Mikkosoft Productions
 Distributed under the LGPL
 */
 
@@ -35,7 +35,8 @@ SourcePackage::SourcePackage(Builder &b, const string &n, const FS::Path &s):
 
 FS::Path SourcePackage::get_temp_dir() const
 {
-       return source/config.get_option("tempdir").value/builder.get_current_arch().get_name()/config.get_option("profile").value;
+       string subdir = format("%s.%s", builder.get_current_arch().get_name(), config.get_option("profile").value);
+       return source/config.get_option("tempdir").value/subdir;
 }
 
 FS::Path SourcePackage::get_out_dir() const
@@ -106,14 +107,6 @@ void SourcePackage::do_configure(const StringMap &opts, unsigned flag)
                                        requires.push_back(pkg);
                }
 
-       base_reqs = requires;
-
-       for(ComponentList::iterator i=components.begin(); i!=components.end(); ++i)
-       {
-               const PackageList &reqs = i->get_requires();
-               requires.insert(requires.end(), reqs.begin(), reqs.end());
-       }
-
        for(PackageList::iterator i=requires.begin(); i!=requires.end(); ++i)
        {
                BinaryPackage *bpkg = dynamic_cast<BinaryPackage *>(*i);
@@ -122,6 +115,13 @@ void SourcePackage::do_configure(const StringMap &opts, unsigned flag)
        }
 
        deps_cache.load();
+
+       for(ComponentList::iterator i=components.begin(); i!=components.end(); ++i)
+       {
+               const PackageList &reqs = i->get_requires();
+               for(PackageList::const_iterator j=reqs.begin(); j!=reqs.end(); ++j)
+                       (*j)->configure(opts, flag&2);
+       }
 }
 
 void SourcePackage::init_config()
@@ -129,10 +129,9 @@ void SourcePackage::init_config()
        config.add_option("profile",    "default", "Configuration profile");
        config.add_option("tempdir",    "temp",    "Directory for storing temporary files");
        config.add_option("outdir",     ".",       "Directory to put build results in");
-       config.add_option("optimize",   "0",       "Apply compiler optimizations");
+       config.add_option("optimize",   "0",       "Compiler optimization level");
        config.add_option("strip",      "no",      "Strip symbols from programs");
        config.add_option("debug",      "no",      "Produce debugging symbols");
-       config.add_option("cpu",        "none",    "CPU type to optimize for");
        config.add_option("staticlibs", "local",   "Use static libraries");
 
        for(FeatureList::iterator i=features.begin(); i!=features.end(); ++i)
@@ -148,15 +147,7 @@ void SourcePackage::init_config()
 
 void SourcePackage::create_build_info()
 {
-       for(PackageList::iterator i=base_reqs.begin(); i!=base_reqs.end(); ++i)
-       {
-               const BuildInfo &ebi = (*i)->get_exported_binfo();
-               build_info.add(ebi);
-
-               export_binfo.cflags.insert(export_binfo.cflags.end(), ebi.cflags.begin(), ebi.cflags.end());
-               export_binfo.incpath.insert(export_binfo.incpath.end(), ebi.incpath.begin(), ebi.incpath.end());
-               export_binfo.defines.insert(export_binfo.defines.end(), ebi.defines.begin(), ebi.defines.end());
-       }
+       build_info.add(builder.get_current_arch().get_build_info());
 
        // XXX Currently, a package-specific settings will override cmdline.  This might or might not be desirable.
        const StringList &warnings = builder.get_warnings();
@@ -177,9 +168,6 @@ void SourcePackage::create_build_info()
        {
                build_info.cflags.push_back("-O"+optimize);
                build_info.ldflags.push_back("-O"+optimize);
-               string cpu = config.get_option("cpu").value;
-               if(cpu!="none")
-                       build_info.cflags.push_back("-march="+cpu);
        }
 
        if(lexical_cast<bool>(config.get_option("debug").value))