#ifndef BUILDER_H_
#define BUILDER_H_
-#include <list>
#include <map>
#include <string>
#include <msp/datafile/loader.h>
};
private:
- typedef std::map<std::string, BuildType> BuildTypeMap;
-
PackageManager package_manager;
Architecture native_arch;
- Architecture *current_arch;
- BuildTypeMap build_types;
- BuildType *build_type;
+ Architecture *current_arch = 0;
+ std::map<std::string, BuildType> build_types;
+ BuildType *build_type = 0;
Toolchain toolchain;
VirtualFileSystem vfs;
BuildGraph build_graph;
const Logger *logger;
Msp::FS::Path prefix;
- Msp::FS::Path tempdir;
+ Msp::FS::Path tempdir = "temp";
- Loader *top_loader;
+ Loader *top_loader = 0;
public:
Builder();
const Architecture &get_native_arch() const { return native_arch; }
void set_build_type(const std::string &);
std::vector<std::string> get_build_types() const;
- const BuildType &get_build_type() const { return *build_type; }
+ const BuildType &get_build_type() const;
BuildGraph &get_build_graph() { return build_graph; }
void set_prefix(const Msp::FS::Path &);
void set_temp_directory(const Msp::FS::Path &);
void set_logger(const Logger *);
const Logger &get_logger() const { return *logger; }
- std::list<std::string> collect_problems() const;
+ std::vector<std::string> collect_problems() const;
/** Loads a build file. If opts is not null, it is used to configure any
packages loaded from this file. If all is true, external packages are also
configured. */
void load_build_file(const Msp::FS::Path &, const Config::InputOptions *opts = 0, bool all = false);
+ /** Saves package configuration and dependency caches. */
+ void save_caches();
+
/** Builds the goal targets. The build graph must be prepared first. */
int build(unsigned jobs = 1, bool dry_run = false, bool show_progress = false);