This is an automated email from the ASF dual-hosted git repository. acassis pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git
commit b82756539623c2561c0ab612b2089e111399cbd0 Author: Xiang Xiao <[email protected]> AuthorDate: Wed Nov 11 23:55:37 2020 +0800 [libc++] Move the toolchain's macros undefinition to Make.defs Signed-off-by: Xiang Xiao <[email protected]> --- boards/sim/sim/sim/scripts/Make.defs | 20 +++++++- ...Port-to-NuttX-https-nuttx.apache.org-RTOS.patch | 55 ++++------------------ 2 files changed, 29 insertions(+), 46 deletions(-) diff --git a/boards/sim/sim/sim/scripts/Make.defs b/boards/sim/sim/sim/scripts/Make.defs index 9b31d9f..68b407d 100644 --- a/boards/sim/sim/sim/scripts/Make.defs +++ b/boards/sim/sim/sim/scripts/Make.defs @@ -23,6 +23,24 @@ include $(TOPDIR)/tools/Config.mk HOSTOS = ${shell uname -o 2>/dev/null || uname -s 2>/dev/null || echo "Other"} +# NuttX is sometimes built as a native target. +# In that case, the __NuttX__ macro is predefined by the compiler. +# https://github.com/NuttX/buildroot +# +# In other cases, __NuttX__ is an ordinary user-definded macro. +# It's especially the case for NuttX sim, which is a target to run +# the entire NuttX as a program on the host OS, which can be Linux, +# macOS, Windows, etc. +# https://cwiki.apache.org/confluence/display/NUTTX/NuttX+Simulation +# In that case, the host OS compiler is used to build NuttX. +# Thus, eg. NuttX sim on macOS is built with __APPLE__. +# We #undef predefined macros for those possible host OSes here +# because the OS APIs this library should use are of NuttX, +# not the host OS. + +ARCHDEFINES += -U_AIX -U_WIN32 -U__APPLE__ -U__FreeBSD__ +ARCHDEFINES += -U__NetBSD__ -U__linux__ -U__sun__ -U__unix__ + ifeq ($(CONFIG_DEBUG_SYMBOLS),y) ARCHOPTIMIZATION = -g endif @@ -146,4 +164,4 @@ ifeq ($(CONFIG_SIM_M32),y) endif HOSTCFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) \ - $(ARCHCPUFLAGS) $(HOSTINCLUDES) $(ARCHDEFINES) $(EXTRAFLAGS) -pipe + $(ARCHCPUFLAGS) $(HOSTINCLUDES) $(EXTRAFLAGS) -pipe diff --git a/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch b/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch index 964ce7c..b8f0efd 100644 --- a/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch +++ b/libs/libxx/0001-libcxx-Port-to-NuttX-https-nuttx.apache.org-RTOS.patch @@ -1,4 +1,4 @@ -From 10891b1c9eda0c87e33b0c0ba87f17a83930093c Mon Sep 17 00:00:00 2001 +From 6b12d8b5c30a84aa5767b1b18ecf5ba5e99a1654 Mon Sep 17 00:00:00 2001 From: Xiang Xiao <[email protected]> Date: Fri, 2 Oct 2020 13:25:43 +0800 Subject: [PATCH] [libcxx] Port to NuttX(https://nuttx.apache.org/) RTOS @@ -9,54 +9,19 @@ Co-authored-by: YAMAMOTO Takashi <[email protected]> Differential Revision: https://reviews.llvm.org/D88718 --- - include/__config | 31 +++++++++++++++++++++++++- + include/__config | 3 ++- include/__locale | 2 ++ - include/support/nuttx/xlocale.h | 18 +++++++++++++++ + include/support/nuttx/xlocale.h | 18 ++++++++++++++++++ src/include/config_elast.h | 4 ++++ src/locale.cpp | 2 +- - 5 files changed, 55 insertions(+), 2 deletions(-) + 5 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 include/support/nuttx/xlocale.h diff --git a/include/__config libcxx/include/__config -index 575147cead4..32036094017 100644 +index eeef9c53a9f..9ace3b46028 100644 --- a/include/__config +++ libcxx/include/__config -@@ -10,6 +10,34 @@ - #ifndef _LIBCPP_CONFIG - #define _LIBCPP_CONFIG - -+// NuttX is sometimes built as a native target. -+// In that case, the __NuttX__ macro is predefined by the compiler. -+// https://github.com/NuttX/buildroot -+// -+// In other cases, __NuttX__ is an ordinary user-definded macro. -+// It's especially the case for NuttX sim, which is a target to run -+// the entire NuttX as a program on the host OS, which can be Linux, -+// macOS, Windows, etc. -+// https://cwiki.apache.org/confluence/display/NUTTX/NuttX+Simulation -+// In that case, the host OS compiler is used to build NuttX. -+// Thus, eg. NuttX sim on macOS is built with __APPLE__. -+// We #undef predefined macros for those possible host OSes here -+// because the OS APIs this library should use are of NuttX, -+// not the host OS. -+#if defined(__NuttX__) -+#undef __linux__ -+#undef __APPLE__ -+#undef __FreeBSD__ -+#undef __NetBSD__ -+#undef _WIN32 -+#undef __sun__ -+#undef _AIX -+// For the current use of the __unix__ macro in this library, -+// NuttX is not __unix__. -+// This might need to be revisited in future. -+#undef __unix__ -+#endif -+ - #if defined(_MSC_VER) && !defined(__clang__) - # if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) - # define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER -@@ -1125,6 +1153,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( +@@ -1117,6 +1117,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( # if defined(__FreeBSD__) || \ defined(__wasi__) || \ defined(__NetBSD__) || \ @@ -64,7 +29,7 @@ index 575147cead4..32036094017 100644 defined(__linux__) || \ defined(__GNU__) || \ defined(__APPLE__) || \ -@@ -1227,7 +1256,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( +@@ -1219,7 +1220,7 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( # endif #endif @@ -74,10 +39,10 @@ index 575147cead4..32036094017 100644 #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE #endif diff --git a/include/__locale libcxx/include/__locale -index 6d10fa4d3d6..fb391861f23 100644 +index 125adcf68c8..ebededf066b 100644 --- a/include/__locale +++ libcxx/include/__locale -@@ -21,6 +21,8 @@ +@@ -22,6 +22,8 @@ #if defined(_LIBCPP_MSVCRT_LIKE) # include <cstring> # include <support/win32/locale_win32.h> @@ -130,7 +95,7 @@ index 501cbc4ffeb..3113f9fb5cd 100644 // No _LIBCPP_ELAST needed on Fuchsia #elif defined(__wasi__) diff --git a/src/locale.cpp libcxx/src/locale.cpp -index b9180880e49..25699f29ec9 100644 +index 5fdc14992f8..ed93727b544 100644 --- a/src/locale.cpp +++ libcxx/src/locale.cpp @@ -30,7 +30,7 @@
