From 3c8d890c1946308f5396aa6428da5274b25c3a5f Mon Sep 17 00:00:00 2001 From: Fabrice Fontaine Date: Tue, 21 Feb 2023 15:35:33 +0100 Subject: [PATCH] toolchain/helpers.mk: strengthen uClibc locale check Currently, when verifying the configuration of a uClibc toolchain for the presence of locale support, we check __UCLIBC_HAS_LOCALE__. It turns out that we in fact also expect __UCLIBC_HAS_XLOCALE__ to be defined, as without it locale_t is not defined, causing build failure in some packages, such as libcpprestsdk: In file included from /home/thomas/autobuild/instance-0/output-1/build/libcpprestsdk-2.10.18/Release/include/cpprest/json.h:18, from /home/thomas/autobuild/instance-0/output-1/build/libcpprestsdk-2.10.18/Release/src/pch/stdafx.h:88, from /home/thomas/autobuild/instance-0/output-1/build/libcpprestsdk-2.10.18/Release/src/http/client/http_client_msg.cpp:13: /home/thomas/autobuild/instance-0/output-1/build/libcpprestsdk-2.10.18/Release/include/cpprest/asyncrt_utils.h:317:13: error: 'locale_t' does not name a type 317 | typedef locale_t xplat_locale; | ^~~~~~~~ As essentially our requirement for uClibc in external toolchains is "it should match the uClibc configuration used by Buildroot for internal toolchains", it makes sense to verify __UCLIBC_HAS_XLOCALE__. Note that of course checking __UCLIBC_HAS_XLOCALE__ is sufficient, as it cannot be enabled if __UCLIBC_HAS_LOCALE isn't. This addresses an issue with the Synopsys ARC external toolchain, which is built with __UCLIBC_HAS_LOCALE__, but without __UCLIBC_HAS_XLOCALE__ causing a build failure with some packages (such as libcpprestsdk). Therefore, this patch also changes how the Synospys ARC external toolchain is exposed in Buildroot: it no longer advertise locale support. Fixes: http://autobuild.buildroot.org/results/e6778e60cc1ea455f5b4511d5824f04d8040f67b Signed-off-by: Fabrice Fontaine Signed-off-by: Thomas Petazzoni --- toolchain/helpers.mk | 2 +- .../toolchain-external-synopsys-arc/Config.in | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/toolchain/helpers.mk b/toolchain/helpers.mk index 27a5470ca39f..e5c838c0afcf 100644 --- a/toolchain/helpers.mk +++ b/toolchain/helpers.mk @@ -307,7 +307,7 @@ check_uclibc = \ $(call check_uclibc_feature,__UCLIBC_HAS_LFS__,,$${UCLIBC_CONFIG_FILE},Large file support) ;\ $(call check_uclibc_feature,__UCLIBC_HAS_IPV6__,,$${UCLIBC_CONFIG_FILE},IPv6 support) ;\ $(call check_uclibc_feature,__UCLIBC_HAS_RPC__,BR2_TOOLCHAIN_HAS_NATIVE_RPC,$${UCLIBC_CONFIG_FILE},RPC support) ;\ - $(call check_uclibc_feature,__UCLIBC_HAS_LOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ + $(call check_uclibc_feature,__UCLIBC_HAS_XLOCALE__,BR2_ENABLE_LOCALE,$${UCLIBC_CONFIG_FILE},Locale support) ;\ $(call check_uclibc_feature,__UCLIBC_HAS_WCHAR__,BR2_USE_WCHAR,$${UCLIBC_CONFIG_FILE},Wide char support) ;\ $(call check_uclibc_feature,__UCLIBC_HAS_THREADS__,BR2_TOOLCHAIN_HAS_THREADS,$${UCLIBC_CONFIG_FILE},Thread support) ;\ $(call check_uclibc_feature,__PTHREADS_DEBUG_SUPPORT__,BR2_TOOLCHAIN_HAS_THREADS_DEBUG,$${UCLIBC_CONFIG_FILE},Thread debugging support) ;\ diff --git a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in index 985e7b1710ce..292e652fb012 100644 --- a/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in +++ b/toolchain/toolchain-external/toolchain-external-synopsys-arc/Config.in @@ -5,7 +5,6 @@ config BR2_TOOLCHAIN_EXTERNAL_SYNOPSYS_ARC depends on !BR2_ARCH_NEEDS_GCC_AT_LEAST_10 select BR2_TOOLCHAIN_EXTERNAL_UCLIBC select BR2_INSTALL_LIBSTDCPP - select BR2_ENABLE_LOCALE select BR2_USE_WCHAR select BR2_TOOLCHAIN_HAS_THREADS select BR2_TOOLCHAIN_HAS_THREADS_NPTL