From 6c27f3c19deb70bcabedd92e7593587c728befa2 Mon Sep 17 00:00:00 2001 From: Petro Karashchenko Date: Fri, 21 Jan 2022 22:33:13 +0200 Subject: [PATCH] toolchain: add libm to EXTRA_LIBS only if it is provided by the compiler Some toolchains may be built without libm support, but using such toochain should not generate any errors in case if math functions are not used in the program Signed-off-by: Petro Karashchenko --- arch/arm/src/arm/Toolchain.defs | 16 +++++++++++----- arch/arm/src/armv6-m/Toolchain.defs | 10 ++++++++-- arch/arm/src/armv7-a/Toolchain.defs | 10 ++++++++-- arch/arm/src/armv7-m/Toolchain.defs | 10 ++++++++-- arch/arm/src/armv7-r/Toolchain.defs | 10 ++++++++-- arch/arm/src/armv8-m/Toolchain.defs | 10 ++++++++-- arch/avr/src/avr/Toolchain.defs | 10 ++++++++-- arch/avr/src/avr32/Toolchain.defs | 10 ++++++++-- arch/hc/src/Makefile | 14 ++++++++++---- arch/mips/src/mips32/Toolchain.defs | 16 +++++++++++----- arch/misoc/src/lm32/Toolchain.defs | 10 ++++++++-- arch/misoc/src/minerva/Toolchain.defs | 10 ++++++++-- arch/or1k/src/mor1kx/Toolchain.defs | 10 ++++++++-- arch/renesas/src/Makefile | 14 ++++++++++---- arch/risc-v/src/common/Toolchain.defs | 10 ++++++++-- arch/x86/src/Makefile | 14 ++++++++++---- arch/x86_64/src/Makefile | 14 ++++++++++---- arch/xtensa/src/lx6/Toolchain.defs | 10 ++++++++-- arch/xtensa/src/lx7/Toolchain.defs | 10 ++++++++-- 19 files changed, 166 insertions(+), 52 deletions(-) diff --git a/arch/arm/src/arm/Toolchain.defs b/arch/arm/src/arm/Toolchain.defs index 251a7b0bd47..5be37b14ae6 100644 --- a/arch/arm/src/arm/Toolchain.defs +++ b/arch/arm/src/arm/Toolchain.defs @@ -104,14 +104,20 @@ OBJDUMP = $(CROSSDEV)objdump # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"} +EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"} + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) - EXTRA_LIBS += lsupc++ - EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"} + EXTRA_LIBS += -lsupc++ + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif diff --git a/arch/arm/src/armv6-m/Toolchain.defs b/arch/arm/src/armv6-m/Toolchain.defs index 7cd8874a3bb..1e66e7edf08 100644 --- a/arch/arm/src/armv6-m/Toolchain.defs +++ b/arch/arm/src/armv6-m/Toolchain.defs @@ -99,8 +99,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/arm/src/armv7-a/Toolchain.defs b/arch/arm/src/armv7-a/Toolchain.defs index 215d6469fcc..a45e77bcd2d 100644 --- a/arch/arm/src/armv7-a/Toolchain.defs +++ b/arch/arm/src/armv7-a/Toolchain.defs @@ -125,8 +125,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/arm/src/armv7-m/Toolchain.defs b/arch/arm/src/armv7-m/Toolchain.defs index b63e6dd279f..ba6a58e8ea8 100644 --- a/arch/arm/src/armv7-m/Toolchain.defs +++ b/arch/arm/src/armv7-m/Toolchain.defs @@ -158,8 +158,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/arm/src/armv7-r/Toolchain.defs b/arch/arm/src/armv7-r/Toolchain.defs index d0df68d58f6..249a38952b1 100644 --- a/arch/arm/src/armv7-r/Toolchain.defs +++ b/arch/arm/src/armv7-r/Toolchain.defs @@ -107,8 +107,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/arm/src/armv8-m/Toolchain.defs b/arch/arm/src/armv8-m/Toolchain.defs index 58df2f5509a..7121e9991a0 100644 --- a/arch/arm/src/armv8-m/Toolchain.defs +++ b/arch/arm/src/armv8-m/Toolchain.defs @@ -157,8 +157,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/avr/src/avr/Toolchain.defs b/arch/avr/src/avr/Toolchain.defs index 7a2dadd5317..049032aaf82 100644 --- a/arch/avr/src/avr/Toolchain.defs +++ b/arch/avr/src/avr/Toolchain.defs @@ -130,8 +130,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/avr/src/avr32/Toolchain.defs b/arch/avr/src/avr32/Toolchain.defs index 73826ec043e..62728dc75ed 100644 --- a/arch/avr/src/avr32/Toolchain.defs +++ b/arch/avr/src/avr32/Toolchain.defs @@ -54,8 +54,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/hc/src/Makefile b/arch/hc/src/Makefile index 7d9d6d75b6d..366459e30d2 100644 --- a/arch/hc/src/Makefile +++ b/arch/hc/src/Makefile @@ -88,16 +88,22 @@ endif # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name}}" +EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a}}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) EXTRA_LIBS += -lsupc++ - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a}}" + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif VPATH = chip:common:$(ARCH_SUBDIR) diff --git a/arch/mips/src/mips32/Toolchain.defs b/arch/mips/src/mips32/Toolchain.defs index 5512d2bcc25..3e95cd97975 100644 --- a/arch/mips/src/mips32/Toolchain.defs +++ b/arch/mips/src/mips32/Toolchain.defs @@ -280,14 +280,20 @@ OBJDUMP = $(CROSSDEV)objdump # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"} +EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"} + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) - EXTRA_LIBS += lsupc++ - EXTRA_LIBPATHS += -L ${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"} + EXTRA_LIBS += -lsupc++ + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif diff --git a/arch/misoc/src/lm32/Toolchain.defs b/arch/misoc/src/lm32/Toolchain.defs index 191540d294d..34e7f67141e 100644 --- a/arch/misoc/src/lm32/Toolchain.defs +++ b/arch/misoc/src/lm32/Toolchain.defs @@ -91,8 +91,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/misoc/src/minerva/Toolchain.defs b/arch/misoc/src/minerva/Toolchain.defs index 2ca9fe4656c..4b66b0dd4d1 100644 --- a/arch/misoc/src/minerva/Toolchain.defs +++ b/arch/misoc/src/minerva/Toolchain.defs @@ -45,8 +45,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/or1k/src/mor1kx/Toolchain.defs b/arch/or1k/src/mor1kx/Toolchain.defs index 0dd120a7fc5..f7adbc04281 100644 --- a/arch/or1k/src/mor1kx/Toolchain.defs +++ b/arch/or1k/src/mor1kx/Toolchain.defs @@ -72,8 +72,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/renesas/src/Makefile b/arch/renesas/src/Makefile index 85f48bec5e4..b5e735de91e 100644 --- a/arch/renesas/src/Makefile +++ b/arch/renesas/src/Makefile @@ -81,16 +81,22 @@ endif # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L"${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" +EXTRA_LIBPATHS += -L""${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}"" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L"${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) EXTRA_LIBS += -lsupc++ - EXTRA_LIBPATHS += -L"${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif VPATH = chip:common diff --git a/arch/risc-v/src/common/Toolchain.defs b/arch/risc-v/src/common/Toolchain.defs index c194f0efd98..c2192edd4db 100644 --- a/arch/risc-v/src/common/Toolchain.defs +++ b/arch/risc-v/src/common/Toolchain.defs @@ -133,8 +133,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/x86/src/Makefile b/arch/x86/src/Makefile index f8b6c68d989..b498f701787 100644 --- a/arch/x86/src/Makefile +++ b/arch/x86/src/Makefile @@ -85,16 +85,22 @@ endif # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name}}" +EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a}}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) EXTRA_LIBS += -lsupc++ - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a}}" + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif VPATH = chip:common:$(ARCH_SUBDIR) diff --git a/arch/x86_64/src/Makefile b/arch/x86_64/src/Makefile index fa3bc20dc91..61dce0debc6 100644 --- a/arch/x86_64/src/Makefile +++ b/arch/x86_64/src/Makefile @@ -87,16 +87,22 @@ endif # Add the builtin library EXTRA_LIBS += -lgcc -EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name}}" +EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a}}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) EXTRA_LIBS += -lsupc++ - EXTRA_LIBPATHS += -L "${dir ${shell $(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a}}" + EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libsupc++.a`"}" endif VPATH = chip:common:$(ARCH_SUBDIR) diff --git a/arch/xtensa/src/lx6/Toolchain.defs b/arch/xtensa/src/lx6/Toolchain.defs index d5e767aefbb..a8f32ae7501 100644 --- a/arch/xtensa/src/lx6/Toolchain.defs +++ b/arch/xtensa/src/lx6/Toolchain.defs @@ -83,8 +83,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y) diff --git a/arch/xtensa/src/lx7/Toolchain.defs b/arch/xtensa/src/lx7/Toolchain.defs index e36bf8ffa1e..9e78bbd35b7 100644 --- a/arch/xtensa/src/lx7/Toolchain.defs +++ b/arch/xtensa/src/lx7/Toolchain.defs @@ -83,8 +83,14 @@ EXTRA_LIBS += -lgcc EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-libgcc-file-name`"}" ifneq ($(CONFIG_LIBM),y) - EXTRA_LIBS += -lm - EXTRA_LIBPATHS += -L "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + LIBM_PATH = "${shell dirname "`$(CC) $(ARCHCPUFLAGS) --print-file-name=libm.a`"}" + + # Check if libm is provided by the compiler + + ifneq ($(LIBM_PATH),".") + EXTRA_LIBS += -lm + EXTRA_LIBPATHS += -L $(LIBM_PATH) + endif endif ifeq ($(CONFIG_LIBSUPCXX),y)