Messages in this thread | | | From | Masahiro Yamada <> | Date | Thu, 28 Sep 2017 19:52:35 +0900 | Subject | Re: [PATCH] kbuild: clang: remove crufty HOSTCFLAGS |
| |
Hi Nick,
2017-09-26 11:28 GMT+09:00 Nick Desaulniers <nick.desaulniers@gmail.com>: > When compiling with `make CC=clang HOSTCC=clang`, I was seeing warnings > that clang did not recognize -fno-delete-null-pointer-checks for HOSTCC > targets. These were added in commit 61163efae020 ("kbuild: LLVMLinux: > Add Kbuild support for building kernel with Clang"). That patch wraps > that flag in cc-option for KBUILD_CFLAGS, but not hostcc-option for > HOSTCFLAGS. Either hostcc-option did not exist, or the author was not > setting HOSTCC to clang as well as CC when authored. > > It's not clear why the other warnings were disabled, and just for > HOSTCFLAGS, but I can remove them, add -Werror to HOSTCFLAGS and compile > with clang just fine. > > Signed-off-by: Nick Desaulniers <nick.desaulniers@gmail.com> > --- > * It may also be worthwhile keep the old flags, and simply wrap > everything in hostcc-option. > > Makefile | 6 +----- > 1 file changed, 1 insertion(+), 5 deletions(-) > > diff --git a/Makefile b/Makefile > index d1119941261c..2e908969e0d8 100644 > --- a/Makefile > +++ b/Makefile > @@ -301,16 +301,12 @@ HOST_LFS_LIBS := $(shell getconf LFS_LIBS) > HOSTCC = gcc > HOSTCXX = g++ > HOSTCFLAGS := -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 \ > + $(call hostcc-option,-fno-delete-null-pointer-checks) \ > -fomit-frame-pointer -std=gnu89 $(HOST_LFS_CFLAGS)
You call hostcc-option before Kbuild.include is included around line 341.
So, $(call hostcc-option, ...) returns always an empty string here whether the compiler supports the option or not.
> HOSTCXXFLAGS := -O2 $(HOST_LFS_CFLAGS) > HOSTLDFLAGS := $(HOST_LFS_LDFLAGS) > HOST_LOADLIBES := $(HOST_LFS_LIBS) > > -ifeq ($(shell $(HOSTCC) -v 2>&1 | grep -c "clang version"), 1) > -HOSTCFLAGS += -Wno-unused-value -Wno-unused-parameter \ > - -Wno-missing-field-initializers -fno-delete-null-pointer-checks > -endif > -
The logic is very strange in the first place.
Even very old GCC supports -fno-delete-null-pointer-checks, but clang does not.
Here, -fno-delete-null-pointer-checks is added only when we are using clang for HOSTCC. This is opposite.
I guess we can remove all of them unless somebody can explain the rationale.
> # Decide whether to build built-in, modular, or both. > # Normally, just do built-in. >
-- Best Regards Masahiro Yamada
| |