#include "virtualfilesystem.h"
class Analyzer;
-class Config;
class FileTarget;
class Package;
class SourcePackage;
/**
-The main application class. Controls and owns everything. Rules the world.
+The main application class. Handles command line options and supervises the
+build process.
*/
class Builder: public Msp::RegisteredApplication<Builder>
{
typedef std::map<std::string, BuildType> BuildTypeMap;
StringList cmdline_targets;
- StringMap cmdline_options;
+ Config::InputOptions cmdline_options;
Msp::FS::Path cwd;
PackageManager package_manager;
bool build_all;
bool create_makefile;
Msp::FS::Path prefix;
+ Msp::FS::Path tempdir;
StringList warnings;
static std::string usagemsg;
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; }
int load_build_file(const Msp::FS::Path &);
private:
- /** Creates targets for all packages and prepares them for building.
- Returns 0 if everything went ok, -1 if something bad happened and a build
- shouldn't be attempted. */
- int create_targets();
+ /** Prepares packages and targets for building. Returns true if everything
+ went ok, or false if something bad happened and a build shouldn't be
+ attempted. */
+ bool prepare_build();
/** Supervises the build process, starting new actions when slots become
available. */