library library::from_directory(path_ref lib_dir, std::string_view name) { | library library::from_directory(path_ref lib_dir, std::string_view name) { | ||||
auto [sources, inc_dir, src_dir] = collect_pf_sources(lib_dir); | auto [sources, inc_dir, src_dir] = collect_pf_sources(lib_dir); | ||||
auto lib = library(name, std::move(sources));; | |||||
auto lib = library(lib_dir, name, std::move(sources)); | |||||
if (fs::exists(inc_dir)) { | if (fs::exists(inc_dir)) { | ||||
lib._pub_inc_dir = inc_dir; | lib._pub_inc_dir = inc_dir; | ||||
lib._priv_inc_dir = src_dir; | lib._priv_inc_dir = src_dir; | ||||
} | } | ||||
} else { | } else { | ||||
lib._pub_inc_dir = src_dir; | |||||
lib._pub_inc_dir = src_dir; | |||||
lib._priv_inc_dir = src_dir; | lib._priv_inc_dir = src_dir; | ||||
} | } | ||||
}; | }; | ||||
class library { | class library { | ||||
fs::path _base_dir; | |||||
std::string _name; | std::string _name; | ||||
source_list _sources; | source_list _sources; | ||||
fs::path _pub_inc_dir; | fs::path _pub_inc_dir; | ||||
fs::path _priv_inc_dir; | fs::path _priv_inc_dir; | ||||
library(std::string_view name, source_list&& src) | |||||
: _name(name) | |||||
library(path_ref dir, std::string_view name, source_list&& src) | |||||
: _base_dir(dir) | |||||
, _name(name) | |||||
, _sources(std::move(src)) {} | , _sources(std::move(src)) {} | ||||
public: | public: | ||||
return from_directory(path, path.filename().string()); | return from_directory(path, path.filename().string()); | ||||
} | } | ||||
path_ref base_dir() const noexcept { return _base_dir; } | |||||
path_ref public_include_dir() const noexcept { return _pub_inc_dir; } | path_ref public_include_dir() const noexcept { return _pub_inc_dir; } | ||||
path_ref private_include_dir() const noexcept { return _priv_inc_dir; } | path_ref private_include_dir() const noexcept { return _priv_inc_dir; } | ||||