lkml.org 
[lkml]   [2021]   [Jul]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH 03/17] Makefile: generate `CLANG_FLAGS` even in GCC builds
    On Sun, Jul 4, 2021 at 1:28 PM <ojeda@kernel.org> wrote:
    >
    > From: Miguel Ojeda <ojeda@kernel.org>
    >
    > To support Rust under GCC-built kernels, we need to save the flags that
    > would have been passed if the kernel was being compiled with Clang.
    >
    > The reason is that `bindgen` -- the tool we use to generate Rust
    > bindings to the C side of the kernel -- relies on `libclang` to
    > parse C. Ideally:
    >
    > - `bindgen` would support a GCC backend (requested at [1]),
    >
    > - or the Clang driver would be perfectly compatible with GCC,
    > including plugins. Unlikely, of course, but perhaps a big
    > subset of configs may be possible to guarantee to be kept
    > compatible nevertheless.
    >
    > This is also the reason why GCC builds are very experimental and some
    > configurations may not work (e.g. `GCC_PLUGIN_RANDSTRUCT`). However,
    > we keep GCC builds working (for some example configs) in the CI
    > to avoid diverging/regressing further, so that we are better prepared
    > for the future when a solution might become available.
    >
    > [1] https://github.com/rust-lang/rust-bindgen/issues/1949
    >
    > Link: https://github.com/Rust-for-Linux/linux/issues/167
    > Co-developed-by: Alex Gaynor <alex.gaynor@gmail.com>
    > Signed-off-by: Alex Gaynor <alex.gaynor@gmail.com>
    > Co-developed-by: Geoffrey Thomas <geofft@ldpreload.com>
    > Signed-off-by: Geoffrey Thomas <geofft@ldpreload.com>
    > Co-developed-by: Finn Behrens <me@kloenk.de>
    > Signed-off-by: Finn Behrens <me@kloenk.de>
    > Co-developed-by: Adam Bratschi-Kaye <ark.email@gmail.com>
    > Signed-off-by: Adam Bratschi-Kaye <ark.email@gmail.com>
    > Co-developed-by: Wedson Almeida Filho <wedsonaf@google.com>
    > Signed-off-by: Wedson Almeida Filho <wedsonaf@google.com>
    > Signed-off-by: Miguel Ojeda <ojeda@kernel.org>

    Patch LGTM; please keep an eye on the series:
    https://lore.kernel.org/lkml/20210707224310.1403944-2-ndesaulniers@google.com/

    If that lands in kbuild before this, this patch will need to be
    rebased to avoid a conflict in linux-next.

    So (tentatively :-P):
    Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>

    If the patch needs to be rebased on the series linked above, please
    drop my reviewed by tag and I will re-review. Perhaps putting me
    explicitly on Cc: in the commit message will help notify me if there
    are successive versions?

    > ---
    > Makefile | 17 +++++++++++------
    > 1 file changed, 11 insertions(+), 6 deletions(-)
    >
    > diff --git a/Makefile b/Makefile
    > index 0565caea036..6e823d8bd64 100644
    > --- a/Makefile
    > +++ b/Makefile
    > @@ -573,18 +573,23 @@ endif
    > # and from include/config/auto.conf.cmd to detect the compiler upgrade.
    > CC_VERSION_TEXT = $(subst $(pound),,$(shell $(CC) --version 2>/dev/null | head -n 1))
    >
    > -ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
    > +TENTATIVE_CLANG_FLAGS := -Werror=unknown-warning-option
    > +
    > ifneq ($(CROSS_COMPILE),)
    > -CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
    > +TENTATIVE_CLANG_FLAGS += --target=$(notdir $(CROSS_COMPILE:%-=%))
    > endif
    > ifeq ($(LLVM_IAS),1)
    > -CLANG_FLAGS += -integrated-as
    > +TENTATIVE_CLANG_FLAGS += -integrated-as
    > else
    > -CLANG_FLAGS += -no-integrated-as
    > +TENTATIVE_CLANG_FLAGS += -no-integrated-as
    > GCC_TOOLCHAIN_DIR := $(dir $(shell which $(CROSS_COMPILE)elfedit))
    > -CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
    > +TENTATIVE_CLANG_FLAGS += --prefix=$(GCC_TOOLCHAIN_DIR)$(notdir $(CROSS_COMPILE))
    > endif
    > -CLANG_FLAGS += -Werror=unknown-warning-option
    > +
    > +export TENTATIVE_CLANG_FLAGS
    > +
    > +ifneq ($(findstring clang,$(CC_VERSION_TEXT)),)
    > +CLANG_FLAGS += $(TENTATIVE_CLANG_FLAGS)
    > KBUILD_CFLAGS += $(CLANG_FLAGS)
    > KBUILD_AFLAGS += $(CLANG_FLAGS)
    > export CLANG_FLAGS
    > --
    > 2.32.0
    >


    --
    Thanks,
    ~Nick Desaulniers

    \
     
     \ /
      Last update: 2021-07-14 20:14    [W:3.118 / U:1.932 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site