summaryrefslogtreecommitdiff
path: root/tools/minicargo
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2019-10-29 20:37:51 +0800
committerJohn Hodge <tpg@mutabah.net>2019-10-29 20:37:51 +0800
commita1a03108029fa6bd092bc8f141acbc4cdb210e01 (patch)
tree2670dbc62fe4e3a09fc0818f3f9b966e2109367f /tools/minicargo
parent2d807e6d573d58a7b5e49cf1642691b0b963a34e (diff)
downloadmrust-a1a03108029fa6bd092bc8f141acbc4cdb210e01.tar.gz
minicargo - Fixes to build script support for winapi
Diffstat (limited to 'tools/minicargo')
-rw-r--r--tools/minicargo/build.cpp15
-rw-r--r--tools/minicargo/stringlist.h16
2 files changed, 21 insertions, 10 deletions
diff --git a/tools/minicargo/build.cpp b/tools/minicargo/build.cpp
index 5eb07104..efacb6f8 100644
--- a/tools/minicargo/build.cpp
+++ b/tools/minicargo/build.cpp
@@ -1082,13 +1082,13 @@ 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_MANIFEST_LINKS", manifest.m_links);
- //for(const auto& feat : manifest.m_active_features)
- //{
- // ::std::string fn = "CARGO_FEATURE_";
- // for(char c : feat)
- // fn += c == '-' ? '_' : tolower(c);
- // env.push_back(fn, manifest.m_links);
- //}
+ for(const auto& feat : manifest.active_features())
+ {
+ ::std::string fn = "CARGO_FEATURE_";
+ for(char c : feat)
+ fn += c == '-' ? '_' : toupper(c);
+ env.push_back(fn, "1");
+ }
//env.push_back("CARGO_CFG_RELEASE", "");
env.push_back("OUT_DIR", out_dir);
env.push_back("TARGET", m_opts.target_name ? m_opts.target_name : HOST_TARGET);
@@ -1206,6 +1206,7 @@ bool Builder::spawn_process(const char* exe_name, const StringList& args, const
#else
for(auto kv : env)
{
+ DEBUG("putenv " << kv.first << "=" << kv.second);
_putenv_s(kv.first, kv.second);
}
#endif
diff --git a/tools/minicargo/stringlist.h b/tools/minicargo/stringlist.h
index 4381121b..08b74c4b 100644
--- a/tools/minicargo/stringlist.h
+++ b/tools/minicargo/stringlist.h
@@ -78,7 +78,7 @@ public:
};
class StringListKV: private StringList
{
- ::std::vector<const char*> m_keys;
+ StringList m_keys;
public:
StringListKV()
{
@@ -99,6 +99,16 @@ public:
m_keys.push_back(k);
StringList::push_back(v);
}
+ void push_back(::std::string k, ::std::string v)
+ {
+ m_keys.push_back(k);
+ StringList::push_back(v);
+ }
+ void push_back(::std::string k, const char* v)
+ {
+ m_keys.push_back(k);
+ StringList::push_back(v);
+ }
struct Iter {
const StringListKV& v;
@@ -108,7 +118,7 @@ public:
this->i++;
}
::std::pair<const char*,const char*> operator*() {
- return ::std::make_pair(this->v.m_keys[this->i], this->v.get_vec()[this->i]);
+ return ::std::make_pair(this->v.m_keys.get_vec()[this->i], this->v.get_vec()[this->i]);
}
bool operator!=(const Iter& x) const {
return this->i != x.i;
@@ -118,7 +128,7 @@ public:
return Iter { *this, 0 };
}
Iter end() const {
- return Iter { *this, m_keys.size() };
+ return Iter { *this, m_keys.get_vec().size() };
}
friend ::std::ostream& operator<<(::std::ostream& os, const StringListKV& x) {