From 7c54e619799e826454820015e37ef0bc829c14a8 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 13 Mar 2020 14:58:35 +0100 Subject: Use boost xpressive for gcc 4.8 --- kernel/log.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'kernel/log.h') diff --git a/kernel/log.h b/kernel/log.h index 603938f4c..3ec10c95d 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -23,7 +23,22 @@ #define LOG_H #include -#include +#if defined(__GNUC__) && ( __GNUC__ == 4 && __GNUC_MINOR__ == 8) + #include + #define REGEX_TYPE boost::xpressive::sregex + #define REGEX_NS boost::xpressive + #define REGEX_COMPILE(param) boost::xpressive::sregex::compile(param, \ + boost::xpressive::regex_constants::nosubs | \ + boost::xpressive::regex_constants::optimize) +# else + #include + #define REGEX_TYPE std::regex + #define REGEX_NS std + #define REGEX_COMPILE(param) std::regex(param, \ + std::regex_constants::nosubs | \ + std::regex_constants::optimize | \ + std::regex_constants::egrep) +#endif #ifndef _WIN32 # include @@ -49,7 +64,7 @@ struct log_cmd_error_exception { }; extern std::vector log_files; extern std::vector log_streams; extern std::map> log_hdump; -extern std::vector log_warn_regexes, log_nowarn_regexes, log_werror_regexes; +extern std::vector log_warn_regexes, log_nowarn_regexes, log_werror_regexes; extern std::set log_warnings, log_experimentals, log_experimentals_ignored; extern int log_warnings_count; extern int log_warnings_count_noexpect; @@ -151,7 +166,7 @@ struct LogExpectedItem std::string pattern; }; -extern std::vector> log_expect_log, log_expect_warning, log_expect_error; +extern std::vector> log_expect_log, log_expect_warning, log_expect_error; void log_check_expected(); const char *log_signal(const RTLIL::SigSpec &sig, bool autoint = true); -- cgit v1.2.3 From 8f221118d206e8f474fb5c1853cd67018b7801c9 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 13 Mar 2020 17:19:54 +0100 Subject: Add YS_ prefix to macros, add explanation and apply to older version as well --- kernel/log.h | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'kernel/log.h') diff --git a/kernel/log.h b/kernel/log.h index 3ec10c95d..61cc246e7 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -23,18 +23,21 @@ #define LOG_H #include -#if defined(__GNUC__) && ( __GNUC__ == 4 && __GNUC_MINOR__ == 8) + +// In GCC 4.8 std::regex is not working correctlty, in order to make features +// using regular expressions to work replacement regex library is used +#if defined(__GNUC__) && ( __GNUC__ == 4 && __GNUC_MINOR__ <= 8) #include - #define REGEX_TYPE boost::xpressive::sregex - #define REGEX_NS boost::xpressive - #define REGEX_COMPILE(param) boost::xpressive::sregex::compile(param, \ + #define YS_REGEX_TYPE boost::xpressive::sregex + #define YS_REGEX_NS boost::xpressive + #define YS_REGEX_COMPILE(param) boost::xpressive::sregex::compile(param, \ boost::xpressive::regex_constants::nosubs | \ boost::xpressive::regex_constants::optimize) # else #include - #define REGEX_TYPE std::regex - #define REGEX_NS std - #define REGEX_COMPILE(param) std::regex(param, \ + #define YS_REGEX_TYPE std::regex + #define YS_REGEX_NS std + #define YS_REGEX_COMPILE(param) std::regex(param, \ std::regex_constants::nosubs | \ std::regex_constants::optimize | \ std::regex_constants::egrep) @@ -64,7 +67,7 @@ struct log_cmd_error_exception { }; extern std::vector log_files; extern std::vector log_streams; extern std::map> log_hdump; -extern std::vector log_warn_regexes, log_nowarn_regexes, log_werror_regexes; +extern std::vector log_warn_regexes, log_nowarn_regexes, log_werror_regexes; extern std::set log_warnings, log_experimentals, log_experimentals_ignored; extern int log_warnings_count; extern int log_warnings_count_noexpect; @@ -166,7 +169,7 @@ struct LogExpectedItem std::string pattern; }; -extern std::vector> log_expect_log, log_expect_warning, log_expect_error; +extern std::vector> log_expect_log, log_expect_warning, log_expect_error; void log_check_expected(); const char *log_signal(const RTLIL::SigSpec &sig, bool autoint = true); -- cgit v1.2.3 From 395daf6cedfb62d3a9c6b74b65c80f209d8b6ec5 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 13 Mar 2020 17:23:27 +0100 Subject: exclude clang from checking --- kernel/log.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'kernel/log.h') diff --git a/kernel/log.h b/kernel/log.h index 61cc246e7..cd0e8185c 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -26,7 +26,7 @@ // In GCC 4.8 std::regex is not working correctlty, in order to make features // using regular expressions to work replacement regex library is used -#if defined(__GNUC__) && ( __GNUC__ == 4 && __GNUC_MINOR__ <= 8) +#if defined(__GNUC__) && !defined( __clang__) && ( __GNUC__ == 4 && __GNUC_MINOR__ <= 8) #include #define YS_REGEX_TYPE boost::xpressive::sregex #define YS_REGEX_NS boost::xpressive -- cgit v1.2.3