X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpackagemanager.h;h=b168d723e174739c3c652f376f7f1cefe407cda2;hb=e4c839cacd8572ade951f4961e8e145d20e0103f;hp=05f5ebe317e6b3c5f49452868b108b995a4cea9f;hpb=a5ea586a080ef6766a7d68b1c40633c6ae8b8ba4;p=builder.git diff --git a/source/packagemanager.h b/source/packagemanager.h index 05f5ebe..b168d72 100644 --- a/source/packagemanager.h +++ b/source/packagemanager.h @@ -28,6 +28,8 @@ private: SearchPath binpkg_files; bool no_externals; PackageMap packages; + Package *main_pkg; + std::set not_found; bool env_set; public: @@ -47,23 +49,31 @@ public: void add_package(Package *); /** Returns a package from the cache. */ - Package *get_package(const std::string &); + Package *get_package(const std::string &) const; + + /** Returns the package that was added first. This should be considered + the primary build target. */ + Package &get_main_package() const; const PackageMap &get_packages() const { return packages; } - /** Locates a package and creates it if necessary. */ + /** Locates a package and loads it if necessary. */ Package *find_package(const std::string &); private: std::string run_pkgconfig(const std::string &, const std::string &); /** Determines the source directory of a package. Pkg-config is consulted - first, and if it fails, the package path is searched for matches. */ + first, and if it fails, the package path is searched for matches. The + package is expected to be located in a directory named after itself. */ Msp::FS::Path get_package_location(const std::string &); /** Determines the file containing a binary package. The file is expected to be named after the package. */ Msp::FS::Path get_binary_package_file(const std::string &); + +public: + void save_all_caches() const; }; #endif