diff options
author | John Hodge <tpg@ucc.asn.au> | 2017-11-17 08:20:02 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2017-11-18 17:47:12 +0800 |
commit | 7a73dff85f30bb1e77818b8da8ed192c72e12626 (patch) | |
tree | c9c47c585b759db13cc47c6fc17ce9b9f89169a2 /tools/minicargo/build.cpp | |
parent | 7b06535ba9690e360417893ff1a8410f5b145440 (diff) | |
download | mrust-7a73dff85f30bb1e77818b8da8ed192c72e12626.tar.gz |
minicargo - Handle `[package]links=foo` (crudely)
Diffstat (limited to 'tools/minicargo/build.cpp')
-rw-r--r-- | tools/minicargo/build.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tools/minicargo/build.cpp b/tools/minicargo/build.cpp index 00733271..5f2d7b15 100644 --- a/tools/minicargo/build.cpp +++ b/tools/minicargo/build.cpp @@ -468,6 +468,17 @@ bool Builder::build_target(const PackageManifest& manifest, const PackageTarget& env.push_back("OUT_DIR", out_dir.str()); env.push_back("CARGO_MANIFEST_DIR", manifest.directory().to_absolute()); env.push_back("CARGO_PKG_VERSION", ::format(manifest.version())); + for(const auto& dep : manifest.dependencies()) + { + if( ! dep.is_disabled() ) + { + const auto& m = dep.get_package(); + for(const auto& p : m.build_script_output().downstream_env) + { + env.push_back(p.first.c_str(), p.second.c_str()); + } + } + } return this->spawn_process_mrustc(args, ::std::move(env), outfile + "_dbg.txt"); } @@ -500,6 +511,8 @@ bool Builder::build_target(const PackageManifest& manifest, const PackageTarget& StringListKV env; env.push_back("CARGO_MANIFEST_DIR", manifest.directory().to_absolute()); env.push_back("CARGO_PKG_VERSION", ::format(manifest.version())); + // TODO: If there's any dependencies marked as `links = foo` then grab `DEP_FOO_<varname>` from its metadata + // (build script output) if( this->spawn_process_mrustc(args, ::std::move(env), outfile + "_dbg.txt") ) return outfile; @@ -576,6 +589,17 @@ bool Builder::build_library(const PackageManifest& manifest) const env.push_back("OPT_LEVEL", "2"); env.push_back("DEBUG", "0"); env.push_back("PROFILE", "release"); + for(const auto& dep : manifest.dependencies()) + { + if( ! dep.is_disabled() ) + { + const auto& m = dep.get_package(); + for(const auto& p : m.build_script_output().downstream_env) + { + env.push_back(p.first.c_str(), p.second.c_str()); + } + } + } #if _WIN32 #else |