Re: [PATCH v2 1/3] rust: Introduce HAVE_GENERATE_RUST_TARGET config option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 05 Sep 2024 14:33:05 +0100
Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx> wrote:

> scripts/generate_rust_target.rs is used by several architectures
> to generate target.json target spec file.
> 
> However the enablement of this feature was controlled by target
> specific Makefile pieces spreading everywhere.
> 
> Introduce HAVE_GENERATE_RUST_TARGET config option as a centralized
> switch to control the per-arch usage of generate_rust_target.rs.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang@xxxxxxxxxxx>
> ---
> v2:
> 	- Reword Kconfig help
> 	- Remove x86 specific condition for UM
> ---
>  Makefile             | 3 +++
>  arch/Kconfig         | 8 ++++++++
>  arch/um/Kconfig      | 1 +
>  arch/x86/Makefile    | 1 -
>  arch/x86/Makefile.um | 1 -
>  rust/Makefile        | 2 +-
>  scripts/Makefile     | 4 +---
>  7 files changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 2c1db7a6f793..b183855c34ea 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -807,6 +807,9 @@ KBUILD_CFLAGS += -Os
>  KBUILD_RUSTFLAGS += -Copt-level=s
>  endif
>  
> +ifdef CONFIG_HAVE_GENERATE_RUST_TARGET
> +KBUILD_RUSTFLAGS += --target=$(objtree)/scripts/target.json
> +endif
>  # Always set `debug-assertions` and `overflow-checks` because their default
>  # depends on `opt-level` and `debug-assertions`, respectively.
>  KBUILD_RUSTFLAGS += -Cdebug-assertions=$(if $(CONFIG_RUST_DEBUG_ASSERTIONS),y,n)
> diff --git a/arch/Kconfig b/arch/Kconfig
> index 4e2eaba9e305..0865ff4796e7 100644
> --- a/arch/Kconfig
> +++ b/arch/Kconfig
> @@ -377,6 +377,14 @@ config HAVE_RUST
>  	  This symbol should be selected by an architecture if it
>  	  supports Rust.
>  
> +config HAVE_GENERATE_RUST_TARGET
> +	bool
> +	depends on HAVE_RUST
> +	help
> +	  This symbol should be selected by an architecture if it
> +	  needs generating Rust target.json file with
> +	  scripts/generate_rust_target.rs.
> +
>  config HAVE_FUNCTION_ARG_ACCESS_API
>  	bool
>  	help
> diff --git a/arch/um/Kconfig b/arch/um/Kconfig
> index dca84fd6d00a..6b1c8ae2422d 100644
> --- a/arch/um/Kconfig
> +++ b/arch/um/Kconfig
> @@ -32,6 +32,7 @@ config UML
>  	select TTY # Needed for line.c
>  	select HAVE_ARCH_VMAP_STACK
>  	select HAVE_RUST
> +	select HAVE_GENERATE_RUST_TARGET
>  	select ARCH_HAS_UBSAN
>  
>  config MMU
> diff --git a/arch/x86/Makefile b/arch/x86/Makefile
> index a1883a30a5d8..cbd707f88a63 100644
> --- a/arch/x86/Makefile
> +++ b/arch/x86/Makefile
> @@ -75,7 +75,6 @@ export BITS
>  #    https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383
>  #
>  KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
> -KBUILD_RUSTFLAGS += --target=$(objtree)/scripts/target.json
>  KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
>  
>  #
> diff --git a/arch/x86/Makefile.um b/arch/x86/Makefile.um
> index a46b1397ad01..2106a2bd152b 100644
> --- a/arch/x86/Makefile.um
> +++ b/arch/x86/Makefile.um
> @@ -9,7 +9,6 @@ core-y += arch/x86/crypto/
>  #
>  ifeq ($(CONFIG_CC_IS_CLANG),y)
>  KBUILD_CFLAGS += -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx
> -KBUILD_RUSTFLAGS += --target=$(objtree)/scripts/target.json
>  KBUILD_RUSTFLAGS += -Ctarget-feature=-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2
>  endif
>  
> diff --git a/rust/Makefile b/rust/Makefile
> index 99204e33f1dd..fe3640b98011 100644
> --- a/rust/Makefile
> +++ b/rust/Makefile
> @@ -378,7 +378,7 @@ $(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--re
>  $(obj)/core.o: private rustc_target_flags = $(core-cfgs)
>  $(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
>  	+$(call if_changed_rule,rustc_library)
> -ifneq ($(or $(CONFIG_X86_64),$(CONFIG_X86_32)),)
> +ifdef CONFIG_HAVE_GENERATE_RUST_TARGET
>  $(obj)/core.o: scripts/target.json
>  endif
>  
> diff --git a/scripts/Makefile b/scripts/Makefile
> index dccef663ca82..33258a856a1a 100644
> --- a/scripts/Makefile
> +++ b/scripts/Makefile
> @@ -12,13 +12,11 @@ hostprogs-always-$(CONFIG_SYSTEM_EXTRA_CERTIFICATE)	+= insert-sys-cert
>  hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS)		+= rustdoc_test_builder
>  hostprogs-always-$(CONFIG_RUST_KERNEL_DOCTESTS)		+= rustdoc_test_gen
>  
> -ifneq ($(or $(CONFIG_X86_64),$(CONFIG_X86_32)),)
> -always-$(CONFIG_RUST)					+= target.json
> +always-$(CONFIG_HAVE_GENERATE_RUST_TARGET)		+= target.json
>  filechk_rust_target = $< < include/config/auto.conf
>  
>  $(obj)/target.json: scripts/generate_rust_target include/config/auto.conf FORCE
>  	$(call filechk,rust_target)
> -endif

Wouldn't this change cause target.json to be built when
CONFIG_HAVE_GENERATE_RUST_TARGET is selected by arch but CONFIG_RUST is
disabled?

Best,
Gary

>  
>  hostprogs += generate_rust_target
>  generate_rust_target-rust := y
> 





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux