X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fsourcepackage.cpp;h=df1677fcce8edc638f8a8eb66cfafe2b6dee7b25;hb=49ee08bb6f63f6b3a8cdd3b7cf032dea9b2cba8a;hp=838ab16ed53d2b1e0c7180d4972827f4c15fce82;hpb=04c316da6d5d90e43cba262f54d90ca231f703bf;p=builder.git diff --git a/source/sourcepackage.cpp b/source/sourcepackage.cpp index 838ab16..df1677f 100644 --- a/source/sourcepackage.cpp +++ b/source/sourcepackage.cpp @@ -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(*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(config.get_option("debug").value))