From 93b7bd56079f0cc7cf35b2c457d583fa622f87c8 Mon Sep 17 00:00:00 2001 From: John Hodge Date: Sat, 21 May 2016 11:55:54 +0800 Subject: Expand/cfg - Add 'target_has_atomic' --- src/expand/cfg.cpp | 2 +- src/expand/cfg.hpp | 1 + src/main.cpp | 5 +++++ 3 files changed, 7 insertions(+), 1 deletion(-) (limited to 'src') 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 cb) { +void Cfg_SetValueCb(::std::string name, ::std::function 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 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 -- cgit v1.2.3