From 6b12d8b5c30a84aa5767b1b18ecf5ba5e99a1654 Mon Sep 17 00:00:00 2001 From: Xiang Xiao Date: Fri, 2 Oct 2020 13:25:43 +0800 Subject: [PATCH] [libcxx] Port to NuttX(https://nuttx.apache.org/) RTOS Since NuttX conform to POSIX standard, the code need to add is very simple Co-authored-by: YAMAMOTO Takashi Differential Revision: https://reviews.llvm.org/D88718 --- include/__config | 3 ++- include/__locale | 2 ++ include/support/nuttx/xlocale.h | 18 ++++++++++++++++++ src/include/config_elast.h | 4 ++++ src/locale.cpp | 2 +- 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 include/support/nuttx/xlocale.h diff --git a/include/__config libcxx/include/__config index eeef9c53a9f..9ace3b46028 100644 --- a/include/__config +++ libcxx/include/__config @@ -1117,6 +1117,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( # if defined(__FreeBSD__) || \ defined(__wasi__) || \ defined(__NetBSD__) || \ + defined(__NuttX__) || \ defined(__linux__) || \ defined(__GNU__) || \ defined(__APPLE__) || \ @@ -1219,7 +1220,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( # endif #endif -#if defined(__BIONIC__) || defined(__CloudABI__) || \ +#if defined(__BIONIC__) || defined(__CloudABI__) || defined(__NuttX__) || \ defined(__Fuchsia__) || defined(__wasi__) || defined(_LIBCPP_HAS_MUSL_LIBC) #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE #endif diff --git a/include/__locale libcxx/include/__locale index 125adcf68c8..ebededf066b 100644 --- a/include/__locale +++ libcxx/include/__locale @@ -22,6 +22,8 @@ #if defined(_LIBCPP_MSVCRT_LIKE) # include # include +#elif defined(__NuttX__) +# include #elif defined(_AIX) # include #elif defined(__ANDROID__) diff --git a/include/support/nuttx/xlocale.h libcxx/include/support/nuttx/xlocale.h new file mode 100644 index 00000000000..b70d6200504 --- /dev/null +++ libcxx/include/support/nuttx/xlocale.h @@ -0,0 +1,18 @@ +// -*- C++ -*- +//===-------------------- support/nuttx/xlocale.h -------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_SUPPORT_NUTTX_XLOCALE_H +#define _LIBCPP_SUPPORT_NUTTX_XLOCALE_H + +#if defined(__NuttX__) +#include +#include +#endif // __NuttX__ + +#endif diff --git a/src/include/config_elast.h libcxx/src/include/config_elast.h index 501cbc4ffeb..3113f9fb5cd 100644 --- a/src/include/config_elast.h +++ libcxx/src/include/config_elast.h @@ -17,10 +17,14 @@ #include #endif +// Note: _LIBCPP_ELAST needs to be defined only on platforms +// where strerror/strerror_r can't handle out-of-range errno values. #if defined(ELAST) #define _LIBCPP_ELAST ELAST #elif defined(_NEWLIB_VERSION) #define _LIBCPP_ELAST __ELASTERROR +#elif defined(__NuttX__) +// No _LIBCPP_ELAST needed on NuttX #elif defined(__Fuchsia__) // No _LIBCPP_ELAST needed on Fuchsia #elif defined(__wasi__) diff --git a/src/locale.cpp libcxx/src/locale.cpp index 5fdc14992f8..ed93727b544 100644 --- a/src/locale.cpp +++ libcxx/src/locale.cpp @@ -30,7 +30,7 @@ #include "__sso_allocator" #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__) #include "support/win32/locale_win32.h" -#elif !defined(__BIONIC__) +#elif !defined(__BIONIC__) && !defined(__NuttX__) #include #endif #include -- 2.17.1