You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by xi...@apache.org on 2022/01/22 07:36:36 UTC

[incubator-nuttx] branch master updated: toolchain: add libm to EXTRA_LIBS only if it is provided by the compiler

This is an automated email from the ASF dual-hosted git repository.

xiaoxiang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 6c27f3c  toolchain: add libm to EXTRA_LIBS only if it is provided by the compiler
6c27f3c is described below

commit 6c27f3c19deb70bcabedd92e7593587c728befa2
Author: Petro Karashchenko <pe...@gmail.com>
AuthorDate: Fri Jan 21 22:33:13 2022 +0200

    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 <pe...@gmail.com>
---
 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 251a7b0..5be37b1 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 7cd8874..1e66e7e 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 215d646..a45e77b 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 b63e6dd..ba6a58e 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 d0df68d..249a389 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 58df2f5..7121e99 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 7a2dadd..049032a 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 73826ec..62728dc 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 7d9d6d7..366459e 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 5512d2b..3e95cd9 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 191540d..34e7f67 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 2ca9fe4..4b66b0d 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 0dd120a..f7adbc0 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 85f48be..b5e735d 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 c194f0e..c2192ed 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 f8b6c68..b498f70 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 fa3bc20..61dce0d 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 d5e767a..a8f32ae 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 e36bf8f..9e78bbd 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)