1 #ifndef PACKAGEMANAGER_H_
2 #define PACKAGEMANAGER_H_
7 #include <msp/fs/path.h>
13 Keeps track of packages. Also responsible for locating previously unknown
19 typedef std::map<std::string, Package *> PackageMap;
22 typedef std::list<Msp::FS::Path> SearchPath;
31 PackageManager(Builder &);
34 /** Prevent creation of source packages. */
35 void set_no_externals(bool);
37 /** Adds a package to the manager. Called from Package constructor. */
38 void add_package(Package *);
40 /** Returns a package from the cache. */
41 Package *get_package(const std::string &);
43 const PackageMap &get_packages() const { return packages; }
45 /** Locates a package and creates it if necessary. */
46 Package *find_package(const std::string &);
49 std::string run_pkgconfig(const std::string &, const std::string &);
51 /** Determines the source directory of a package. Pkg-config is consulted
52 first, and if it fails, the package path is searched for matches. */
53 Msp::FS::Path get_package_location(const std::string &);