#include "config.h"
#include "logger.h"
#include "packagemanager.h"
-#include "problem.h"
#include "target.h"
#include "toolchain.h"
#include "virtualfilesystem.h"
class SourcePackage;
/**
-The main application class. Handles command line options and supervises the
-build process.
+This class ties everything else together. It also contains code for loading
+build files and supervising the build process.
*/
class Builder
{
void architecture(const std::string &);
void binpkg(const std::string &);
void build_type(const std::string &);
- void profile(const std::string &);
void package(const std::string &);
};
-public:
- typedef std::list<Problem> ProblemList;
-
private:
typedef std::map<std::string, BuildType> BuildTypeMap;
Logger default_logger;
const Logger *logger;
- ProblemList problems;
Msp::FS::Path prefix;
Msp::FS::Path tempdir;
const Architecture &get_current_arch() const { return *current_arch; }
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; }
BuildGraph &get_build_graph() { return build_graph; }
void set_prefix(const Msp::FS::Path &);
void set_logger(const Logger *);
const Logger &get_logger() const { return *logger; }
- void problem(const std::string &, const std::string &);
- const ProblemList &get_problems() const { return problems; }
+ std::list<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);
- void load_build_file(const Msp::FS::Path &, const Config::InputOptions &, bool);
+ /** 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);