From: Nathan Chancellor <nathan@kernel.org>
To: Charalampos Mitrodimas <charmitro@posteo.net>
Cc: "Asuna Yang" <xinrui.riscv@isrc.iscas.ac.cn>,
"Nicolas Schier" <nsc@kernel.org>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <lossin@kernel.org>,
"Andreas Hindborg" <a.hindborg@kernel.org>,
"Alice Ryhl" <aliceryhl@google.com>,
"Trevor Gross" <tmgross@umich.edu>,
"Danilo Krummrich" <dakr@kernel.org>,
"Nick Desaulniers" <nick.desaulniers+lkml@gmail.com>,
"Bill Wendling" <morbo@google.com>,
"Justin Stitt" <justinstitt@google.com>,
"Paul Walmsley" <pjw@kernel.org>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Jonathan Corbet" <corbet@lwn.net>,
"Conor Dooley" <conor@kernel.org>,
"Mingcong Bai" <jeffbai@aosc.io>,
"Han Gao" <rabenda.cn@gmail.com>,
"Vivian Wang" <wangruikang@iscas.ac.cn>,
"Jason Montleon" <jmontleo@redhat.com>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
rust-for-linux@vger.kernel.org, llvm@lists.linux.dev,
linux-riscv@lists.infradead.org, linux-doc@vger.kernel.org
Subject: Re: [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds
Date: Thu, 29 Jan 2026 16:25:35 -0700 [thread overview]
Message-ID: <20260129232535.GD844102@ax162> (raw)
In-Reply-To: <87v7gk8r5x.fsf@posteo.net>
On Thu, Jan 29, 2026 at 01:49:56PM +0000, Charalampos Mitrodimas wrote:
> I'm under the impression that the `!RUST ||` guard here doesn't
> actually prevent the `$(bindgen-backend-option,...)` call from being
> executed. `$(...)` shell expansions should happen during the textual
> substitution phase, before symbol dependency evaluation occurs, check
> documentation at kconfig-macro-language.rst lines 228-229.
>
> I did this test:
> $ cat /tmp/fake_bindgen
> #!/bin/bash
> echo "[BINDGEN INVOKED] $(date '+%H:%M:%S') args: $@" >> /tmp/bindgen_calls.log
> # Call real bindgen
> exec /home/charmitro/.cargo/bin/bindgen "$@"
>
> $ make ARCH=riscv CROSS_COMPILE=riscv64-linux-gnu- BINDGEN=/tmp/fake_bindgen defconfig
> HOSTCC scripts/basic/fixdep
> ...
> *** Default configuration is based on 'defconfig'
> #
> # configuration written to .config
> #
>
> $ linux git:(master) rg CONFIG_RUST .config
> ...
> 283:# CONFIG_RUST is not set
> ...
>
> $ cat /tmp/bindgen_calls.log
> [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
> [BINDGEN INVOKED] 15:44:44 args: ./scripts/rust_is_available_bindgen_libclang.h
> [BINDGEN INVOKED] 15:44:44 args: --version workaround-for-0.69.0
> [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64imv
> [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32imv
> [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zabha
> [BINDGEN INVOKED] 15:44:44 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zabha
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zacas
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zacas
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbb
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbb
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zba
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zba
> [BINDGEN INVOKED] 15:44:45 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbc
> [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbc
> [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zbkb
> [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zbkb
> [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=lp64 -march=rv64ima_zicsr_zifencei
> [BINDGEN INVOKED] 15:44:46 args: /dev/null -- -x c --target=riscv64-linux-gnu -mabi=ilp32 -march=rv32ima_zicsr_zifencei
>
> So, CONFIG_RUST not set, yet bindgen was invoked. Not sure if that is
> intentional though.
While I have only recently adopted Kconfig, the section you pointed to
in kconfig-macro-language.rst makes it seem like this is expected. I
read that to mean all shell commands are going to be evaluated and
effectively turned into "y" and "n" before dependencies are evaluated.
You can test this with something like:
if RUST
config RUST_FOOBAR
def_bool $(bindgen-backend-option,-obviously-not-supported)
endif
added in init/Kconfig and running your fake bindgen.
While this is obviously a little wasteful, I suspect this drastically
simplifies the shell commands part of Kconfig for no change in runtime
behavior. The way that the dependency is currently written ensures that
either the result of bindgen-backend-option matters for the sake of
saying an extension is fully supported by the toolchain (when Rust is
enabled) or it does not matter (because Rust is not enabled).
Cheers,
Nathan
next prev parent reply other threads:[~2026-01-29 23:25 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-30 16:47 [PATCH v6 0/4] RISC-V: re-enable gcc + rust builds Asuna Yang
2025-12-30 16:47 ` [PATCH v6 1/4] rust: export BINDGEN_TARGET from a separate Makefile Asuna Yang
2026-01-29 22:35 ` Nathan Chancellor
2025-12-30 16:47 ` [PATCH v6 2/4] rust: generate a fatal error if BINDGEN_TARGET is undefined Asuna Yang
2026-01-29 22:40 ` Nathan Chancellor
2026-02-06 12:41 ` Asuna Yang
2025-12-30 16:47 ` [PATCH v6 3/4] rust: add a Kconfig function to test for support of bindgen options Asuna Yang
2026-01-29 22:41 ` Nathan Chancellor
2025-12-30 16:47 ` [PATCH v6 4/4] RISC-V: handle extension configs for bindgen, re-enable gcc + rust builds Asuna Yang
2026-01-29 13:49 ` Charalampos Mitrodimas
2026-01-29 23:25 ` Nathan Chancellor [this message]
2026-02-06 12:13 ` Asuna Yang
2026-02-06 12:24 ` Charalampos Mitrodimas
2025-12-30 16:58 ` [PATCH v6 0/4] RISC-V: " Asuna Yang
2026-01-22 7:20 ` Asuna Yang
2026-01-24 7:47 ` Paul Walmsley
2026-01-29 9:30 ` Conor Dooley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260129232535.GD844102@ax162 \
--to=nathan@kernel.org \
--cc=a.hindborg@kernel.org \
--cc=alex@ghiti.fr \
--cc=aliceryhl@google.com \
--cc=aou@eecs.berkeley.edu \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=charmitro@posteo.net \
--cc=conor@kernel.org \
--cc=corbet@lwn.net \
--cc=dakr@kernel.org \
--cc=gary@garyguo.net \
--cc=jeffbai@aosc.io \
--cc=jmontleo@redhat.com \
--cc=justinstitt@google.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=llvm@lists.linux.dev \
--cc=lossin@kernel.org \
--cc=morbo@google.com \
--cc=nick.desaulniers+lkml@gmail.com \
--cc=nsc@kernel.org \
--cc=ojeda@kernel.org \
--cc=palmer@dabbelt.com \
--cc=pjw@kernel.org \
--cc=rabenda.cn@gmail.com \
--cc=rust-for-linux@vger.kernel.org \
--cc=tmgross@umich.edu \
--cc=wangruikang@iscas.ac.cn \
--cc=xinrui.riscv@isrc.iscas.ac.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox