From 32d80e91e75a68ef0c5b1ac705c3eaa6c4956fd9 Mon Sep 17 00:00:00 2001 From: T <3098462+part22@users.noreply.github.com> Date: Fri, 18 Jun 2021 07:52:34 -0400 Subject: [PATCH] Add support to cross-compile with clang (#389) Clang does not define __WCHAR_MIN__ however, limits.h relies on it. By using the __AVR__ macro we can define __WCHAR_MIN__ only when cross-compiling with clang. --- include/etl/limits.h | 5 +++++ include/etl/profiles/determine_compiler.h | 3 +++ 2 files changed, 8 insertions(+) diff --git a/include/etl/limits.h b/include/etl/limits.h index 9fa86fff..47b10a22 100644 --- a/include/etl/limits.h +++ b/include/etl/limits.h @@ -332,6 +332,11 @@ namespace etl static ETL_CONSTANT bool is_signed = etl::is_signed::value; static ETL_CONSTANT bool is_modulo = etl::is_unsigned::value; +#if defined(ETL_COMPILER_CLANG) && defined(CROSS_COMPILING_TO_AVR) +#undef WCHAR_MIN +#define WCHAR_MIN (-WCHAR_MAX - 1) +#endif + static ETL_CONSTEXPR wchar_t min() { return WCHAR_MIN; } static ETL_CONSTEXPR wchar_t max() { return WCHAR_MAX; } static ETL_CONSTEXPR wchar_t lowest() { return WCHAR_MIN; } diff --git a/include/etl/profiles/determine_compiler.h b/include/etl/profiles/determine_compiler.h index b1078588..60f33c61 100644 --- a/include/etl/profiles/determine_compiler.h +++ b/include/etl/profiles/determine_compiler.h @@ -75,6 +75,9 @@ SOFTWARE. #if defined(__clang__) || defined(__llvm__) #define ETL_COMPILER_CLANG #define ETL_COMPILER_TYPE_DETECTED + #if __AVR__ == 1 + #define CROSS_COMPILING_TO_AVR + #endif #endif #endif