X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.h;h=18f4b52c56dfa744f085d4e3e2eaeb2e486856b4;hb=43bd25ffcb0b4f7882773f4676b209a99cb73c04;hp=90a8a7c4efe600b1341bf5d5934d0273447394df;hpb=242c55b17e6608b29a77ca17a5b677e202a3ca90;p=builder.git diff --git a/source/builder.h b/source/builder.h index 90a8a7c..18f4b52 100644 --- a/source/builder.h +++ b/source/builder.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of builder -Copyright © 2006-2009 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #ifndef BUILDER_H_ #define BUILDER_H_ @@ -22,13 +15,15 @@ Distributed under the LGPL class Analyzer; class Config; +class FileTarget; class Package; class SourcePackage; +class VirtualTarget; /** The main application class. Controls and owns everything. Rules the world. */ -class Builder: public Msp::Application +class Builder: public Msp::RegisteredApplication { private: class Loader: public Msp::DataFile::Loader @@ -40,8 +35,8 @@ private: public: Loader(Builder &, const Msp::FS::Path &); private: - void architecture(const std::string &); void binpkg(const std::string &); + void cross_prefix(const std::string &, const std::string &); void profile(const std::string &); void package(const std::string &); }; @@ -69,15 +64,16 @@ private: SourcePackage *main_pkg; PathList pkg_path; PathList pkg_dirs; + bool no_externals; TargetMap targets; TargetList new_tgts; TargetMap includes; TargetMap libraries; - ArchMap archs; - Architecture *native_arch; - const Architecture *current_arch; + Architecture native_arch; + Architecture *current_arch; + StringMap cross_prefixes; ProfileTemplateMap profile_tmpl; ProblemList problems; @@ -98,7 +94,8 @@ private: Msp::FS::Path prefix; StringList warnings; - static Msp::Application::RegApp reg; + static std::string usagemsg; + static std::string helpmsg; public: Builder(int, char **); @@ -115,6 +112,8 @@ public: SourcePackage *get_main_package() const { return main_pkg; } + std::string run_pkgconfig(const std::string &, const std::string &); + /** Looks up a target by name. Returns 0 if no such target exists. */ Target *get_target(const std::string &) const; @@ -124,7 +123,7 @@ public: path. Considers known targets as well as existing files. If a matching target is not found but a file exists, a new SystemHeader target will be created and returned. */ - Target *get_header(const std::string &, const std::string &, const StringList &); + Target *get_header(const std::string &, const Msp::FS::Path &, const StringList &); /** Tries to locate a library in a library path. The library name should be the same as would be given to the linker with -l, i.e. without the "lib" @@ -134,16 +133,16 @@ public: Target *get_library(const std::string &, const StringList &, LibMode); const Msp::FS::Path &get_cwd() const { return cwd; } - const Architecture &get_architecture(const std::string &) const; const Architecture &get_current_arch() const { return *current_arch; } - const Architecture &get_native_arch() const { return *native_arch; } + const Architecture &get_native_arch() const { return native_arch; } const Msp::FS::Path &get_prefix() const { return prefix; } const StringList &get_warnings() const { return warnings; } void apply_profile_template(Config &, const std::string &) const; /** Adds a target to both the target map and the new target queue. Called from Target constructor. */ - void add_target(Target *); + void add_target(FileTarget *); + void add_target(VirtualTarget *); void problem(const std::string &, const std::string &);