[PATCH] clang: Keep -qrtems and -B for compilers without -specs support

Daniel Hellstrom daniel at gaisler.com
Wed Sep 19 14:13:37 UTC 2018


From: Jacob Hansen <jacob.hansen at gaisler.com>

This is needed for building rtems correctly with Clang.

Note that this change does not mean rtems can build correctly with
mainline clang. However the change allows building rtems with a
Clang toolchain that has a rtems frontend similar that of GCC's
builtin rtems specs.
---
 c/src/aclocal/prog-cc.m4        |  6 ++++--
 testsuites/aclocal/gcc-specs.m4 | 16 ++++++++++++++++
 testsuites/aclocal/prog-cc.m4   |  7 ++++++-
 3 files changed, 26 insertions(+), 3 deletions(-)
 create mode 100644 testsuites/aclocal/gcc-specs.m4

diff --git a/c/src/aclocal/prog-cc.m4 b/c/src/aclocal/prog-cc.m4
index 54f3a08..39bec69 100644
--- a/c/src/aclocal/prog-cc.m4
+++ b/c/src/aclocal/prog-cc.m4
@@ -28,10 +28,12 @@ test "$rtems_cv_gcc_pipe" = "yes" && CC="$CC --pipe"
 dnl check if the compiler supports --specs
 RTEMS_GCC_SPECS
 
-AS_IF([test x"$rtems_cv_gcc_specs" = xyes],[
+dnl Compilers that does not support --specs (Clang) still needs -B and -qrtems
 GCCSPECS="-B\$(RTEMS_SOURCE_ROOT)/bsps/\$(RTEMS_CPU)/\$(RTEMS_BSP_FAMILY)/start"
-GCCSPECS="${GCCSPECS} -specs bsp_specs -qrtems"])
+AS_IF([test x"$rtems_cv_gcc_specs" = xyes],[
+GCCSPECS="${GCCSPECS} -specs bsp_specs"])
 AC_SUBST(GCCSPECS)
+GCCSPECS="${GCCSPECS} -qrtems"
 
 AS_IF([test "$GCC" = yes],[
   RTEMS_RELLDFLAGS="-qnolinkcmds -nostdlib -r"
diff --git a/testsuites/aclocal/gcc-specs.m4 b/testsuites/aclocal/gcc-specs.m4
new file mode 100644
index 0000000..ddcc2bf
--- /dev/null
+++ b/testsuites/aclocal/gcc-specs.m4
@@ -0,0 +1,16 @@
+dnl Check whether the target compiler accepts -specs
+
+AC_DEFUN([RTEMS_GCC_SPECS],
+[AC_REQUIRE([RTEMS_PROG_CC])
+AC_CACHE_CHECK(whether $CC accepts -specs,rtems_cv_gcc_specs,
+[
+rtems_cv_gcc_specs=no
+if test x"$GCC" = x"yes"; then
+  touch confspec
+  echo 'void f(){}' >conftest.c
+  if test -z "`${CC} -specs confspec -c conftest.c 2>&1`";then
+    rtems_cv_gcc_specs=yes
+  fi
+fi
+rm -f confspec conftest*
+])])
diff --git a/testsuites/aclocal/prog-cc.m4 b/testsuites/aclocal/prog-cc.m4
index 44d07d8..cf6be7d 100644
--- a/testsuites/aclocal/prog-cc.m4
+++ b/testsuites/aclocal/prog-cc.m4
@@ -24,9 +24,14 @@ AC_DEFUN([RTEMS_PROG_CC_FOR_TARGET],
 dnl check target cc
 RTEMS_PROG_CC
 
+dnl check if the compiler supports -specs
+RTEMS_GCC_SPECS
+
 AS_IF([test x"$GCC" = xyes],[
 GCCSPECS="-B\$(RTEMS_SOURCE_ROOT)/bsps/\$(RTEMS_CPU)/\$(RTEMS_BSP_FAMILY)/start"
-GCCSPECS="${GCCSPECS} -specs bsp_specs -qrtems"])
+AS_IF([test x"$rtems_cv_gcc_specs" = xyes],[
+GCCSPECS="${GCCSPECS} -specs bsp_specs"])
+GCCSPECS="${GCCSPECS} -qrtems"])
 AC_SUBST(GCCSPECS)
 
 RTEMS_INCLUDES
-- 
2.7.4




More information about the devel mailing list