libm/newlib: Include fenv sources for all ARCHs and extend x86 includes

newlib/libm/fenv/*.c are the non-functional implementation that should
be overridden by an architecture specific implementation in newlib/libm/machine/ARCH.

Make the architecture check for including shared x86 sys headers for x86 and x86_64.

Signed-off-by: fangxinyong <fangxinyong@xiaomi.com>
This commit is contained in:
fangxinyong
2025-10-31 16:23:01 +08:00
committed by Xiang Xiao
parent d956699f75
commit 31b5ef357c
2 changed files with 4 additions and 7 deletions

View File

@@ -93,11 +93,9 @@ if(CONFIG_LIBM_NEWLIB)
file(GLOB_RECURSE COMMON_CSRCS ${NEWLIB_DIR}/newlib/libm/common/*.c)
file(GLOB_RECURSE COMPLEX_CSRCS ${NEWLIB_DIR}/newlib/libm/complex/*.c)
if(CONFIG_ARCH_X86_64)
file(GLOB_RECURSE ARCH_CSRCS ${NEWLIB_DIR}/newlib/libm/fenv/*.c)
endif()
file(GLOB_RECURSE FENV_CSRCS ${NEWLIB_DIR}/newlib/libm/fenv/*.c)
set(CSRCS ${COMMON_CSRCS} ${COMPLEX_CSRCS})
set(CSRCS ${COMMON_CSRCS} ${COMPLEX_CSRCS} ${FENV_CSRCS})
# aggressive optimisation can replace occurrences of sinl() and cosl() with
# sincosl(), but sincosl() is missing in newlib which causes error. So let's
@@ -146,7 +144,7 @@ if(CONFIG_LIBM_NEWLIB)
set(INCDIR ${CMAKE_CURRENT_LIST_DIR}/include ${NEWLIB_DIR}/newlib/libm/common)
if(CONFIG_ARCH_X86_64)
if(CONFIG_ARCH_X86_64 OR CONFIG_ARCH_X86)
list(APPEND INCDIR ${NEWLIB_DIR}/newlib/libc/machine/shared_x86/sys)
endif()

View File

@@ -88,12 +88,11 @@ VPATH += :newlib/newlib/newlib/libm/complex
DEPPATH += --dep-path newlib/newlib/newlib/libm/common
DEPPATH += --dep-path newlib/newlib/newlib/libm/complex
ifeq ($(CONFIG_ARCH_X86_64),y)
CSRCS += $(wildcard newlib/newlib/newlib/libm/fenv/*.c)
VPATH += :newlib/newlib/newlib/libm/fenv
DEPPATH += --dep-path newlib/newlib/newlib/libm/fenv
ifneq ($(CONFIG_ARCH_X86_64)$(CONFIG_ARCH_X86),)
CFLAGS += ${INCDIR_PREFIX}newlib/newlib/newlib/libc/machine/shared_x86/sys
endif