diff options
author | John Hodge <tpg@mutabah.net> | 2017-08-24 13:01:37 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2017-08-24 13:01:37 +0800 |
commit | 0056ae63757014646da33ce9bcf4d36912d30973 (patch) | |
tree | 28162aa05c42926fda139b472b42e7bf03c33e2b | |
parent | cc6ded45c7915b142c61280dcc25d941a653a522 (diff) | |
download | mrust-0056ae63757014646da33ce9bcf4d36912d30973.tar.gz |
minicargo manifest - Basic support for implicit lib
-rw-r--r-- | tools/minicargo/manifest.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/tools/minicargo/manifest.cpp b/tools/minicargo/manifest.cpp index b468e1da..cd3d02c2 100644 --- a/tools/minicargo/manifest.cpp +++ b/tools/minicargo/manifest.cpp @@ -23,6 +23,7 @@ PackageManifest PackageManifest::load_from_toml(const ::std::string& path) { PackageManifest rv; rv.m_manifest_path = path; + auto package_dir = ::helpers::path(path).parent(); TomlFile toml_file(path); @@ -188,6 +189,19 @@ PackageManifest PackageManifest::load_from_toml(const ::std::string& path) } } + // Default targets + // - If there's no library section, but src/lib.rs exists, add one + if( ! ::std::any_of(rv.m_targets.begin(), rv.m_targets.end(), [](const auto& x){ return x.m_type == PackageTarget::Type::Lib; }) ) + { + // No library, add one pointing to lib.rs + if( ::std::ifstream(package_dir / "src" / "lib.rs").good() ) + { + DEBUG("- Implicit library"); + rv.m_targets.push_back(PackageTarget { PackageTarget::Type::Lib }); + } + } + + // Default target names for(auto& tgt : rv.m_targets) { if(tgt.m_name == "") @@ -205,7 +219,7 @@ PackageManifest PackageManifest::load_from_toml(const ::std::string& path) else if( rv.m_build_script != "" ) { // Not set, check for a "build.rs" file - if( ::std::ifstream( ::helpers::path(path).parent() / "build.rs").good() ) + if( ::std::ifstream( package_dir / "build.rs").good() ) { DEBUG("- Implicit build.rs"); rv.m_build_script = "build.rs"; |