]> git.tdb.fi Git - builder.git/commitdiff
Make tempdir a global option
authorMikko Rasa <tdb@tdb.fi>
Sun, 15 Jul 2012 21:09:37 +0000 (00:09 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sun, 15 Jul 2012 21:09:37 +0000 (00:09 +0300)
source/builder.cpp
source/builder.h
source/sourcepackage.cpp

index c0574e924d51512ba5af04ff11e14517e78bebf0..03429cf8ffa0999723a767bbaf074ead6228a5cc 100644 (file)
@@ -50,7 +50,8 @@ Builder::Builder(int argc, char **argv):
        conf_all(false),
        conf_only(false),
        build_all(false),
-       create_makefile(false)
+       create_makefile(false),
+       tempdir("temp")
 {
        string analyze_mode;
        string work_dir;
@@ -58,6 +59,7 @@ Builder::Builder(int argc, char **argv):
        unsigned max_depth = 5;
        StringList cmdline_warn;
        string prfx;
+       string temp_str;
        string arch;
        bool no_externals = false;
        unsigned verbose = 1;
@@ -88,6 +90,7 @@ Builder::Builder(int argc, char **argv):
        getopt.add_option(     "full-paths", full_paths,    GetOpt::NO_ARG).set_help("Output full paths in analysis.");
        getopt.add_option(     "max-depth",  max_depth,     GetOpt::REQUIRED_ARG).set_help("Maximum depth to show in analysis.", "NUM");
        getopt.add_option(     "prefix",     prfx,          GetOpt::REQUIRED_ARG).set_help("Directory to install things to.", "DIR");
+       getopt.add_option(     "tempdir",    temp_str,      GetOpt::REQUIRED_ARG).set_help("Store temporary files in DIR.", "DIR");
        getopt.add_option(     "warnings",   cmdline_warn,  GetOpt::REQUIRED_ARG).set_help("Compiler warnings to use.", "LIST");
        usagemsg = getopt.generate_usage(argv[0])+" [<target> ...]";
        helpmsg = getopt.generate_help();
@@ -187,6 +190,9 @@ Builder::Builder(int argc, char **argv):
        else
                prefix = FS::getcwd()/prfx;
 
+       if(!temp_str.empty())
+               tempdir = temp_str;
+
        if(!build_type_name.empty())
        {
                BuildTypeMap::iterator i = build_types.find(build_type_name);
@@ -276,6 +282,10 @@ int Builder::main()
        logger.log("environment", format("Building on %s, for %s%s", native_arch.get_name(),
                current_arch->get_name(), (current_arch->is_native() ? " (native)" : "")));
        logger.log("environment", format("Prefix is %s", prefix));
+       if(tempdir.is_absolute())
+               logger.log("environment", format("Temporary directory is %s", tempdir));
+       else
+               logger.log("environment", format("Using per-package temporary directory %s", tempdir));
        if(build_type)
                logger.log("environment", format("Build type is %s", build_type->get_name()));
 
index cd6bf16d34fd950ea68ce0fc14a3506ce3e814b6..cdf615d768383d9691371c2c2e186f7dabad5b4c 100644 (file)
@@ -84,6 +84,7 @@ private:
        bool build_all;
        bool create_makefile;
        Msp::FS::Path prefix;
+       Msp::FS::Path tempdir;
        StringList warnings;
 
        static std::string usagemsg;
@@ -108,6 +109,7 @@ public:
        const Architecture &get_current_arch() const { return *current_arch; }
        const Architecture &get_native_arch() const { return native_arch; }
        const Msp::FS::Path &get_prefix() const { return prefix; }
+       const Msp::FS::Path &get_temp_directory() const { return tempdir; }
        const StringList &get_warnings() const { return warnings; }
 
        const Toolchain &get_toolchain() const { return toolchain; }
index 85f64a673ea7bd0864804544abf182a06278ae9a..029d5240faecb84541ce70a54421dfbd9c95a27d 100644 (file)
@@ -43,7 +43,12 @@ FS::Path SourcePackage::get_temp_dir() const
                subdir += '.';
                subdir += build_type->get_name();
        }
-       return source/config.get_option("tempdir").value/subdir;
+
+       const FS::Path &temp = builder.get_temp_directory();
+       if(temp.is_absolute())
+               return temp/name/subdir;
+       else
+               return source/temp/subdir;
 }
 
 FS::Path SourcePackage::get_out_dir() const
@@ -135,8 +140,6 @@ void SourcePackage::do_configure(const StringMap &opts, unsigned flag)
 
 void SourcePackage::init_config()
 {
-       config.add_option("tempdir",    "temp",    "Directory for storing temporary files");
-
        for(FeatureList::iterator i=features.begin(); i!=features.end(); ++i)
                config.add_option("with_"+i->name, i->def_value, i->descr);