#include <msp/path/path.h>
#include "config.h"
#include "misc.h"
+#include "problem.h"
#include "target.h"
class Analyzer;
class Config;
class Package;
+class SourcePackage;
/**
The main application class. Controls and owns everything. Rules the world.
bool get_dry_run() const { return dry_run; }
bool get_build_all() const { return build_all; }
Package *get_package(const std::string &);
- Package *get_default_package() const { return default_pkg; }
+ SourcePackage *get_main_package() const { return main_pkg; }
Target *get_target(const std::string &) const;
const TargetMap &get_targets() const { return targets; }
Target *get_header(const std::string &, const std::string &, const std::string &, const StringList &);
std::string get_tool(const std::string &, const std::string &);
void apply_profile_template(Config &, const std::string &) const;
void add_target(Target *);
+ void problem(const std::string &, const std::string &);
int main();
~Builder();
Builder &bld;
Msp::Path::Path src;
+ void architecture(const std::string &, const std::string &);
+ void binpkg(const std::string &);
+ void profile(const std::string &);
void package(const std::string &);
};
+ class ProfileLoader: public Msp::DataFile::Loader
+ {
+ public:
+ ProfileLoader(StringMap &);
+ private:
+ StringMap &profile;
+
+ void option(const std::string &, const std::string &);
+ };
+
typedef std::list<Package *> PackageList;
typedef std::map<std::string, Package *> PackageMap;
typedef std::map<std::string, StringMap> ToolMap;
Msp::Path::Path cwd;
PackageMap packages;
- PackageList new_pkgs;
- Package *default_pkg;
+ SourcePackage *main_pkg;
TargetMap targets;
TargetList new_tgts;
StringMap archs; //< arch -> prefix
ProfileTemplateMap profile_tmpl;
+ ProblemList problems;
Analyzer *analyzer;
bool build;
unsigned clean;