Messages in this thread | | | Subject | Re: [PATCH] compiler-gcc: get back Clang build | From | Joe Perches <> | Date | Tue, 21 Aug 2018 10:22:45 -0700 |
| |
On Tue, 2018-08-21 at 09:57 -0700, Nick Desaulniers wrote: > On Tue, Aug 21, 2018 at 9:33 AM Joe Perches <joe@perches.com> wrote: > > > > On Tue, 2018-08-21 at 15:48 +0900, Masahiro Yamada wrote: > > > Commit cafa0010cd51 ("Raise the minimum required gcc version to 4.6") > > > missed the fact that <linux/compiler-gcc.h> is included by Clang > > > as well as by GCC. > > > > > > Clang actually defines __GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__ > > > and it looks like GCC 4.2.1. > > > > > > $ scripts/gcc-version.sh -p clang > > > 040201 > > > > > > If you try to build the kernel with Clang, you will get the > > > "Sorry, your compiler is too old - please upgrade it." > > > followed by a bunch of "unknown attribute" warnings. > > > > > > Add !defined(__clang__) to the minimum version check. > > > > > > Also, revive the version test blocks for versions >= 4.2.1 > > > in order to disable features not supported by Clang. > > > > What is the minimum clang version required to compile the kernel? > > Depends on the architecture and which kernel version/LTS branch you're > using. I'm trying to backport fixes to LTS branches, but sometimes a > compiler upgrade is required. I know that's not great, but I'm > actively trying to fix it.
Can you enumerate these dependencies please.
> > What features are not supported by the minimum clang version?
And enumerate this too please.
Uglifying the compiler-gcc file to support clang features that can be overridden in compiler-clang.h instead is not a good way to fix compilation for clang.
But still, whatever features in the various clang versions that need accommodation also need listing out in compiler-clang.h, not in compiler-gcc.h
> $ git describe --contains e501ce9 | sed 's/~.*//' > v4.17-rc1
Thanks, but I know this.
The question remains, if clang can't compile v4.17, why does it immediately matter for v4.19?
Why wouldn't overriding the clang __GNUC_<foo> #defines in compiler-gcc.h work acceptably with adding whatever is necessary to compiler-clang.h?
I'll experiment with a compiler-clang.h patch.
| |