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

Daniel Hellstrom danielh at rtems.org
Thu Sep 20 10:59:54 UTC 2018


Module:    rtems
Branch:    master
Commit:    5cbc9c59229ab1778c4ba8027cbc853bd12f7bba
Changeset: http://git.rtems.org/rtems/commit/?id=5cbc9c59229ab1778c4ba8027cbc853bd12f7bba

Author:    Jacob Hansen <jacob.hansen at gaisler.com>
Date:      Wed Feb  7 13:35:33 2018 +0200

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

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(-)

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



More information about the vc mailing list