diff options
author | John Hodge <tpg@mutabah.net> | 2016-05-21 11:55:54 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-05-21 11:55:54 +0800 |
commit | 93b7bd56079f0cc7cf35b2c457d583fa622f87c8 (patch) | |
tree | 7a8f7495fbf30744229ac710d5a0b368409e63ab /src | |
parent | 871c53c3fcfec69d3a3cf9ec19ef225bb8149201 (diff) | |
download | mrust-93b7bd56079f0cc7cf35b2c457d583fa622f87c8.tar.gz |
Expand/cfg - Add 'target_has_atomic'
Diffstat (limited to 'src')
-rw-r--r-- | src/expand/cfg.cpp | 2 | ||||
-rw-r--r-- | src/expand/cfg.hpp | 1 | ||||
-rw-r--r-- | src/main.cpp | 5 |
3 files changed, 7 insertions, 1 deletions
diff --git a/src/expand/cfg.cpp b/src/expand/cfg.cpp index 76f6bbc3..1372d982 100644 --- a/src/expand/cfg.cpp +++ b/src/expand/cfg.cpp @@ -18,7 +18,7 @@ void Cfg_SetFlag(::std::string name) { void Cfg_SetValue(::std::string name, ::std::string val) { g_cfg_values.insert( ::std::make_pair(mv$(name), mv$(val)) ); } -void Cfg_SetValue(::std::string name, ::std::function<bool(const ::std::string&)> cb) { +void Cfg_SetValueCb(::std::string name, ::std::function<bool(const ::std::string&)> cb) { g_cfg_value_fcns.insert( ::std::make_pair(mv$(name), mv$(cb)) ); } diff --git a/src/expand/cfg.hpp b/src/expand/cfg.hpp index ae5e1054..8e5fce42 100644 --- a/src/expand/cfg.hpp +++ b/src/expand/cfg.hpp @@ -3,4 +3,5 @@ extern void Cfg_SetFlag(::std::string name); extern void Cfg_SetValue(::std::string name, ::std::string val); +extern void Cfg_SetValueCb(::std::string name, ::std::function<bool(const ::std::string&)> cb); extern bool check_cfg(Span sp, const ::AST::MetaItem& mi); diff --git a/src/main.cpp b/src/main.cpp index 4338487c..fd6cd692 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -77,6 +77,11 @@ int main(int argc, char *argv[]) // Set up cfg values
Cfg_SetFlag("linux");
Cfg_SetValue("target_pointer_width", "64");
+ Cfg_SetValueCb("target_has_atomic", [](const ::std::string& s) {
+ if(s == "8") return true; // Has an atomic byte
+ if(s == "ptr") return true; // Has an atomic pointer-sized value
+ return false;
+ });
try
|