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

Joel Sherrill joel at rtems.org
Wed Sep 19 15:43:46 UTC 2018


Just an aside that I have done a fair amount of clean up on the bsp_specs
on a local branch with corresponding GCC patches to begin to eliminate the
need for them.

I think the x86_64 tools are built with a subset of that patch and have an
empty bsp_specs. Hopefully after the next rtems release I can start pushing
these.with help and eliminate the specs completely.

On Wed, Sep 19, 2018, 9:14 AM Daniel Hellstrom <daniel at gaisler.com> wrote:

> 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
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20180919/e060c02b/attachment.html>


More information about the devel mailing list