X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fbuilder.h;h=44bf878b4efa1e1b24d4793b669a1b08e5b342dc;hb=0c83b922e56976a30506d9f8d43c9dcd38d573b5;hp=653a81ad22cf51ca83bbced40c0183c991b89947;hpb=433f9ef196b6f5af6bb38447b650f5afaa5a783a;p=builder.git diff --git a/source/builder.h b/source/builder.h index 653a81a..44bf878 100644 --- a/source/builder.h +++ b/source/builder.h @@ -1,10 +1,3 @@ -/* $Id$ - -This file is part of builder -Copyright © 2006-2010 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 @@ -57,6 +52,10 @@ private: void option(const std::string &, const std::string &); }; +public: + typedef std::map TargetMap; + +private: typedef std::list PackageList; typedef std::map PackageMap; typedef std::map ProfileTemplateMap; @@ -69,8 +68,10 @@ private: SourcePackage *main_pkg; PathList pkg_path; PathList pkg_dirs; + bool no_externals; TargetMap targets; + TargetMap targets_by_path; TargetList new_tgts; TargetMap includes; TargetMap libraries; @@ -98,7 +99,6 @@ private: Msp::FS::Path prefix; StringList warnings; - static Msp::Application::RegApp reg; static std::string usagemsg; static std::string helpmsg; @@ -122,6 +122,8 @@ public: /** Looks up a target by name. Returns 0 if no such target exists. */ Target *get_target(const std::string &) const; + FileTarget *get_target_by_path(const Msp::FS::Path &) const; + const TargetMap &get_targets() const { return targets; } /** Tries to locate a header based on location of including file and include @@ -147,6 +149,7 @@ public: /** Adds a target to both the target map and the new target queue. Called from Target constructor. */ void add_target(Target *); + void register_path(const Msp::FS::Path &, FileTarget *); void problem(const std::string &, const std::string &);