Makefile (6d75c6f40a03c97e1ecd683ae54e249abb9d922b) Makefile (e2bad142bb3de836c5fbb3dff704578f5a73d8e6)
1# SPDX-License-Identifier: GPL-2.0
2
3# Where to place rustdoc generated documentation
4rustdoc_output := $(objtree)/Documentation/output/rust/rustdoc
5
6obj-$(CONFIG_RUST) += core.o compiler_builtins.o
7always-$(CONFIG_RUST) += exports_core_generated.h
8

--- 26 unchanged lines hidden (view full) ---

35
36obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.o
37obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.o
38
39# Avoids running `$(RUSTC)` for the sysroot when it may not be available.
40ifdef CONFIG_RUST
41
42# `$(rust_flags)` is passed in case the user added `--sysroot`.
1# SPDX-License-Identifier: GPL-2.0
2
3# Where to place rustdoc generated documentation
4rustdoc_output := $(objtree)/Documentation/output/rust/rustdoc
5
6obj-$(CONFIG_RUST) += core.o compiler_builtins.o
7always-$(CONFIG_RUST) += exports_core_generated.h
8

--- 26 unchanged lines hidden (view full) ---

35
36obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated.o
37obj-$(CONFIG_RUST_KERNEL_DOCTESTS) += doctests_kernel_generated_kunit.o
38
39# Avoids running `$(RUSTC)` for the sysroot when it may not be available.
40ifdef CONFIG_RUST
41
42# `$(rust_flags)` is passed in case the user added `--sysroot`.
43rustc_sysroot := $(shell MAKEFLAGS= $(RUSTC) $(rust_flags) --print sysroot)
43rustc_sysroot := $(shell $(RUSTC) $(rust_flags) --print sysroot)
44rustc_host_target := $(shell $(RUSTC) --version --verbose | grep -F 'host: ' | cut -d' ' -f2)
45RUST_LIB_SRC ?= $(rustc_sysroot)/lib/rustlib/src/rust/library
46
47ifeq ($(quiet),silent_)
48cargo_quiet=-q
49rust_test_quiet=-q
50rustdoc_test_quiet=--test-args -q
51rustdoc_test_kernel_quiet=>/dev/null

--- 43 unchanged lines hidden (view full) ---

95rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
96 rustdoc-alloc rustdoc-kernel
97 $(Q)cp $(srctree)/Documentation/images/logo.svg $(rustdoc_output)/static.files/
98 $(Q)cp $(srctree)/Documentation/images/COPYING-logo $(rustdoc_output)/static.files/
99 $(Q)find $(rustdoc_output) -name '*.html' -type f -print0 | xargs -0 sed -Ei \
100 -e 's:rust-logo-[0-9a-f]+\.svg:logo.svg:g' \
101 -e 's:favicon-[0-9a-f]+\.svg:logo.svg:g' \
102 -e 's:<link rel="alternate icon" type="image/png" href="[/.]+/static\.files/favicon-(16x16|32x32)-[0-9a-f]+\.png">::g' \
44rustc_host_target := $(shell $(RUSTC) --version --verbose | grep -F 'host: ' | cut -d' ' -f2)
45RUST_LIB_SRC ?= $(rustc_sysroot)/lib/rustlib/src/rust/library
46
47ifeq ($(quiet),silent_)
48cargo_quiet=-q
49rust_test_quiet=-q
50rustdoc_test_quiet=--test-args -q
51rustdoc_test_kernel_quiet=>/dev/null

--- 43 unchanged lines hidden (view full) ---

95rustdoc: rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
96 rustdoc-alloc rustdoc-kernel
97 $(Q)cp $(srctree)/Documentation/images/logo.svg $(rustdoc_output)/static.files/
98 $(Q)cp $(srctree)/Documentation/images/COPYING-logo $(rustdoc_output)/static.files/
99 $(Q)find $(rustdoc_output) -name '*.html' -type f -print0 | xargs -0 sed -Ei \
100 -e 's:rust-logo-[0-9a-f]+\.svg:logo.svg:g' \
101 -e 's:favicon-[0-9a-f]+\.svg:logo.svg:g' \
102 -e 's:<link rel="alternate icon" type="image/png" href="[/.]+/static\.files/favicon-(16x16|32x32)-[0-9a-f]+\.png">::g' \
103 -e 's:<a href="srctree/([^"]+)">:<a href="$(abs_srctree)/\1">:g'
103 -e 's:<a href="srctree/([^"]+)">:<a href="$(realpath $(srctree))/\1">:g'
104 $(Q)for f in $(rustdoc_output)/static.files/rustdoc-*.css; do \
105 echo ".logo-container > img { object-fit: contain; }" >> $$f; done
106
107rustdoc-macros: private rustdoc_host = yes
108rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
109 --extern proc_macro
110rustdoc-macros: $(src)/macros/lib.rs FORCE
104 $(Q)for f in $(rustdoc_output)/static.files/rustdoc-*.css; do \
105 echo ".logo-container > img { object-fit: contain; }" >> $$f; done
106
107rustdoc-macros: private rustdoc_host = yes
108rustdoc-macros: private rustc_target_flags = --crate-type proc-macro \
109 --extern proc_macro
110rustdoc-macros: $(src)/macros/lib.rs FORCE
111 +$(call if_changed,rustdoc)
111 $(call if_changed,rustdoc)
112
113rustdoc-core: private rustc_target_flags = $(core-cfgs)
114rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
112
113rustdoc-core: private rustc_target_flags = $(core-cfgs)
114rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
115 +$(call if_changed,rustdoc)
115 $(call if_changed,rustdoc)
116
117rustdoc-compiler_builtins: $(src)/compiler_builtins.rs rustdoc-core FORCE
116
117rustdoc-compiler_builtins: $(src)/compiler_builtins.rs rustdoc-core FORCE
118 +$(call if_changed,rustdoc)
118 $(call if_changed,rustdoc)
119
120# We need to allow `rustdoc::broken_intra_doc_links` because some
121# `no_global_oom_handling` functions refer to non-`no_global_oom_handling`
122# functions. Ideally `rustdoc` would have a way to distinguish broken links
123# due to things that are "configured out" vs. entirely non-existing ones.
124rustdoc-alloc: private rustc_target_flags = $(alloc-cfgs) \
125 -Arustdoc::broken_intra_doc_links
126rustdoc-alloc: $(src)/alloc/lib.rs rustdoc-core rustdoc-compiler_builtins FORCE
119
120# We need to allow `rustdoc::broken_intra_doc_links` because some
121# `no_global_oom_handling` functions refer to non-`no_global_oom_handling`
122# functions. Ideally `rustdoc` would have a way to distinguish broken links
123# due to things that are "configured out" vs. entirely non-existing ones.
124rustdoc-alloc: private rustc_target_flags = $(alloc-cfgs) \
125 -Arustdoc::broken_intra_doc_links
126rustdoc-alloc: $(src)/alloc/lib.rs rustdoc-core rustdoc-compiler_builtins FORCE
127 +$(call if_changed,rustdoc)
127 $(call if_changed,rustdoc)
128
129rustdoc-kernel: private rustc_target_flags = --extern alloc \
130 --extern build_error --extern macros=$(objtree)/$(obj)/libmacros.so \
131 --extern bindings --extern uapi
132rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-macros \
133 rustdoc-compiler_builtins rustdoc-alloc $(obj)/libmacros.so \
134 $(obj)/bindings.o FORCE
128
129rustdoc-kernel: private rustc_target_flags = --extern alloc \
130 --extern build_error --extern macros=$(objtree)/$(obj)/libmacros.so \
131 --extern bindings --extern uapi
132rustdoc-kernel: $(src)/kernel/lib.rs rustdoc-core rustdoc-macros \
133 rustdoc-compiler_builtins rustdoc-alloc $(obj)/libmacros.so \
134 $(obj)/bindings.o FORCE
135 +$(call if_changed,rustdoc)
135 $(call if_changed,rustdoc)
136
137quiet_cmd_rustc_test_library = RUSTC TL $<
138 cmd_rustc_test_library = \
139 OBJTREE=$(abspath $(objtree)) \
140 $(RUSTC) $(rust_common_flags) \
141 @$(objtree)/include/generated/rustc_cfg $(rustc_target_flags) \
142 --crate-type $(if $(rustc_test_library_proc),proc-macro,rlib) \
143 --out-dir $(objtree)/$(obj)/test --cfg testlib \
144 --sysroot $(objtree)/$(obj)/test/sysroot \
145 -L$(objtree)/$(obj)/test \
146 --crate-name $(subst rusttest-,,$(subst rusttestlib-,,$@)) $<
147
148rusttestlib-build_error: $(src)/build_error.rs rusttest-prepare FORCE
136
137quiet_cmd_rustc_test_library = RUSTC TL $<
138 cmd_rustc_test_library = \
139 OBJTREE=$(abspath $(objtree)) \
140 $(RUSTC) $(rust_common_flags) \
141 @$(objtree)/include/generated/rustc_cfg $(rustc_target_flags) \
142 --crate-type $(if $(rustc_test_library_proc),proc-macro,rlib) \
143 --out-dir $(objtree)/$(obj)/test --cfg testlib \
144 --sysroot $(objtree)/$(obj)/test/sysroot \
145 -L$(objtree)/$(obj)/test \
146 --crate-name $(subst rusttest-,,$(subst rusttestlib-,,$@)) $<
147
148rusttestlib-build_error: $(src)/build_error.rs rusttest-prepare FORCE
149 +$(call if_changed,rustc_test_library)
149 $(call if_changed,rustc_test_library)
150
151rusttestlib-macros: private rustc_target_flags = --extern proc_macro
152rusttestlib-macros: private rustc_test_library_proc = yes
153rusttestlib-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
150
151rusttestlib-macros: private rustc_target_flags = --extern proc_macro
152rusttestlib-macros: private rustc_test_library_proc = yes
153rusttestlib-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
154 +$(call if_changed,rustc_test_library)
154 $(call if_changed,rustc_test_library)
155
156rusttestlib-bindings: $(src)/bindings/lib.rs rusttest-prepare FORCE
155
156rusttestlib-bindings: $(src)/bindings/lib.rs rusttest-prepare FORCE
157 +$(call if_changed,rustc_test_library)
157 $(call if_changed,rustc_test_library)
158
159rusttestlib-uapi: $(src)/uapi/lib.rs rusttest-prepare FORCE
158
159rusttestlib-uapi: $(src)/uapi/lib.rs rusttest-prepare FORCE
160 +$(call if_changed,rustc_test_library)
160 $(call if_changed,rustc_test_library)
161
162quiet_cmd_rustdoc_test = RUSTDOC T $<
163 cmd_rustdoc_test = \
164 OBJTREE=$(abspath $(objtree)) \
165 $(RUSTDOC) --test $(rust_common_flags) \
166 @$(objtree)/include/generated/rustc_cfg \
167 $(rustc_target_flags) $(rustdoc_test_target_flags) \
168 --sysroot $(objtree)/$(obj)/test/sysroot $(rustdoc_test_quiet) \

--- 15 unchanged lines hidden (view full) ---

184 --test-builder $(objtree)/scripts/rustdoc_test_builder \
185 $< $(rustdoc_test_kernel_quiet); \
186 $(objtree)/scripts/rustdoc_test_gen
187
188%/doctests_kernel_generated.rs %/doctests_kernel_generated_kunit.c: \
189 $(src)/kernel/lib.rs $(obj)/kernel.o \
190 $(objtree)/scripts/rustdoc_test_builder \
191 $(objtree)/scripts/rustdoc_test_gen FORCE
161
162quiet_cmd_rustdoc_test = RUSTDOC T $<
163 cmd_rustdoc_test = \
164 OBJTREE=$(abspath $(objtree)) \
165 $(RUSTDOC) --test $(rust_common_flags) \
166 @$(objtree)/include/generated/rustc_cfg \
167 $(rustc_target_flags) $(rustdoc_test_target_flags) \
168 --sysroot $(objtree)/$(obj)/test/sysroot $(rustdoc_test_quiet) \

--- 15 unchanged lines hidden (view full) ---

184 --test-builder $(objtree)/scripts/rustdoc_test_builder \
185 $< $(rustdoc_test_kernel_quiet); \
186 $(objtree)/scripts/rustdoc_test_gen
187
188%/doctests_kernel_generated.rs %/doctests_kernel_generated_kunit.c: \
189 $(src)/kernel/lib.rs $(obj)/kernel.o \
190 $(objtree)/scripts/rustdoc_test_builder \
191 $(objtree)/scripts/rustdoc_test_gen FORCE
192 +$(call if_changed,rustdoc_test_kernel)
192 $(call if_changed,rustdoc_test_kernel)
193
194# We cannot use `-Zpanic-abort-tests` because some tests are dynamic,
195# so for the moment we skip `-Cpanic=abort`.
196quiet_cmd_rustc_test = RUSTC T $<
197 cmd_rustc_test = \
198 OBJTREE=$(abspath $(objtree)) \
199 $(RUSTC) --test $(rust_common_flags) \
200 @$(objtree)/include/generated/rustc_cfg \

--- 48 unchanged lines hidden (view full) ---

249 RUSTC=$(objtree)/$(obj)/test/rustc_sysroot $(CARGO) $(cargo_quiet) \
250 test -Zbuild-std --target $(rustc_host_target) \
251 --manifest-path $(objtree)/$(obj)/test/dummy/Cargo.toml; \
252 rm $(objtree)/$(obj)/test/sysroot/lib/rustlib/$(rustc_host_target)/lib/*; \
253 cp $(objtree)/$(obj)/test/dummy/target/$(rustc_host_target)/debug/deps/* \
254 $(objtree)/$(obj)/test/sysroot/lib/rustlib/$(rustc_host_target)/lib
255
256rusttest-prepare: FORCE
193
194# We cannot use `-Zpanic-abort-tests` because some tests are dynamic,
195# so for the moment we skip `-Cpanic=abort`.
196quiet_cmd_rustc_test = RUSTC T $<
197 cmd_rustc_test = \
198 OBJTREE=$(abspath $(objtree)) \
199 $(RUSTC) --test $(rust_common_flags) \
200 @$(objtree)/include/generated/rustc_cfg \

--- 48 unchanged lines hidden (view full) ---

249 RUSTC=$(objtree)/$(obj)/test/rustc_sysroot $(CARGO) $(cargo_quiet) \
250 test -Zbuild-std --target $(rustc_host_target) \
251 --manifest-path $(objtree)/$(obj)/test/dummy/Cargo.toml; \
252 rm $(objtree)/$(obj)/test/sysroot/lib/rustlib/$(rustc_host_target)/lib/*; \
253 cp $(objtree)/$(obj)/test/dummy/target/$(rustc_host_target)/debug/deps/* \
254 $(objtree)/$(obj)/test/sysroot/lib/rustlib/$(rustc_host_target)/lib
255
256rusttest-prepare: FORCE
257 +$(call if_changed,rustsysroot)
257 $(call if_changed,rustsysroot)
258
259rusttest-macros: private rustc_target_flags = --extern proc_macro
260rusttest-macros: private rustdoc_test_target_flags = --crate-type proc-macro
261rusttest-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
258
259rusttest-macros: private rustc_target_flags = --extern proc_macro
260rusttest-macros: private rustdoc_test_target_flags = --crate-type proc-macro
261rusttest-macros: $(src)/macros/lib.rs rusttest-prepare FORCE
262 +$(call if_changed,rustc_test)
263 +$(call if_changed,rustdoc_test)
262 $(call if_changed,rustc_test)
263 $(call if_changed,rustdoc_test)
264
265rusttest-kernel: private rustc_target_flags = --extern alloc \
266 --extern build_error --extern macros --extern bindings --extern uapi
267rusttest-kernel: $(src)/kernel/lib.rs rusttest-prepare \
268 rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
269 rusttestlib-uapi FORCE
264
265rusttest-kernel: private rustc_target_flags = --extern alloc \
266 --extern build_error --extern macros --extern bindings --extern uapi
267rusttest-kernel: $(src)/kernel/lib.rs rusttest-prepare \
268 rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
269 rusttestlib-uapi FORCE
270 +$(call if_changed,rustc_test)
271 +$(call if_changed,rustc_test_library)
270 $(call if_changed,rustc_test)
271 $(call if_changed,rustc_test_library)
272
273ifdef CONFIG_CC_IS_CLANG
274bindgen_c_flags = $(c_flags)
275else
276# bindgen relies on libclang to parse C. Ideally, bindgen would support a GCC
277# plugin backend and/or the Clang driver would be perfectly compatible with GCC.
278#
279# For the moment, here we are tweaking the flags on the fly. This is a hack,

--- 12 unchanged lines hidden (view full) ---

292 -fno-reorder-blocks -fno-allow-store-data-races -fasan-shadow-offset=% \
293 -fzero-call-used-regs=% -fno-stack-clash-protection \
294 -fno-inline-functions-called-once -fsanitize=bounds-strict \
295 -fstrict-flex-arrays=% \
296 --param=% --param asan-%
297
298# Derived from `scripts/Makefile.clang`.
299BINDGEN_TARGET_x86 := x86_64-linux-gnu
272
273ifdef CONFIG_CC_IS_CLANG
274bindgen_c_flags = $(c_flags)
275else
276# bindgen relies on libclang to parse C. Ideally, bindgen would support a GCC
277# plugin backend and/or the Clang driver would be perfectly compatible with GCC.
278#
279# For the moment, here we are tweaking the flags on the fly. This is a hack,

--- 12 unchanged lines hidden (view full) ---

292 -fno-reorder-blocks -fno-allow-store-data-races -fasan-shadow-offset=% \
293 -fzero-call-used-regs=% -fno-stack-clash-protection \
294 -fno-inline-functions-called-once -fsanitize=bounds-strict \
295 -fstrict-flex-arrays=% \
296 --param=% --param asan-%
297
298# Derived from `scripts/Makefile.clang`.
299BINDGEN_TARGET_x86 := x86_64-linux-gnu
300BINDGEN_TARGET_arm64 := aarch64-linux-gnu
301BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
302
303# All warnings are inhibited since GCC builds are very experimental,
304# many GCC warnings are not supported by Clang, they may only appear in
305# some configurations, with new GCC versions, etc.
306bindgen_extra_c_flags = -w --target=$(BINDGEN_TARGET)
307
308# Auto variable zero-initialization requires an additional special option with

--- 83 unchanged lines hidden (view full) ---

392 --emit=dep-info=$(depfile) --emit=link=$@ --extern proc_macro \
393 --crate-type proc-macro \
394 --crate-name $(patsubst lib%.so,%,$(notdir $@)) $<
395
396# Procedural macros can only be used with the `rustc` that compiled it.
397# Therefore, to get `libmacros.so` automatically recompiled when the compiler
398# version changes, we add `core.o` as a dependency (even if it is not needed).
399$(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE
300BINDGEN_TARGET := $(BINDGEN_TARGET_$(SRCARCH))
301
302# All warnings are inhibited since GCC builds are very experimental,
303# many GCC warnings are not supported by Clang, they may only appear in
304# some configurations, with new GCC versions, etc.
305bindgen_extra_c_flags = -w --target=$(BINDGEN_TARGET)
306
307# Auto variable zero-initialization requires an additional special option with

--- 83 unchanged lines hidden (view full) ---

391 --emit=dep-info=$(depfile) --emit=link=$@ --extern proc_macro \
392 --crate-type proc-macro \
393 --crate-name $(patsubst lib%.so,%,$(notdir $@)) $<
394
395# Procedural macros can only be used with the `rustc` that compiled it.
396# Therefore, to get `libmacros.so` automatically recompiled when the compiler
397# version changes, we add `core.o` as a dependency (even if it is not needed).
398$(obj)/libmacros.so: $(src)/macros/lib.rs $(obj)/core.o FORCE
400 +$(call if_changed_dep,rustc_procmacro)
399 $(call if_changed_dep,rustc_procmacro)
401
402quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@
403 cmd_rustc_library = \
404 OBJTREE=$(abspath $(objtree)) \
405 $(if $(skip_clippy),$(RUSTC),$(RUSTC_OR_CLIPPY)) \
406 $(filter-out $(skip_flags),$(rust_flags) $(rustc_target_flags)) \
407 --emit=dep-info=$(depfile) --emit=obj=$@ \
408 --emit=metadata=$(dir $@)$(patsubst %.o,lib%.rmeta,$(notdir $@)) \
409 --crate-type rlib -L$(objtree)/$(obj) \
410 --crate-name $(patsubst %.o,%,$(notdir $@)) $< \
411 --sysroot=/dev/null \
412 $(if $(rustc_objcopy),;$(OBJCOPY) $(rustc_objcopy) $@)
413
414rust-analyzer:
415 $(Q)$(srctree)/scripts/generate_rust_analyzer.py \
416 --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \
400
401quiet_cmd_rustc_library = $(if $(skip_clippy),RUSTC,$(RUSTC_OR_CLIPPY_QUIET)) L $@
402 cmd_rustc_library = \
403 OBJTREE=$(abspath $(objtree)) \
404 $(if $(skip_clippy),$(RUSTC),$(RUSTC_OR_CLIPPY)) \
405 $(filter-out $(skip_flags),$(rust_flags) $(rustc_target_flags)) \
406 --emit=dep-info=$(depfile) --emit=obj=$@ \
407 --emit=metadata=$(dir $@)$(patsubst %.o,lib%.rmeta,$(notdir $@)) \
408 --crate-type rlib -L$(objtree)/$(obj) \
409 --crate-name $(patsubst %.o,%,$(notdir $@)) $< \
410 --sysroot=/dev/null \
411 $(if $(rustc_objcopy),;$(OBJCOPY) $(rustc_objcopy) $@)
412
413rust-analyzer:
414 $(Q)$(srctree)/scripts/generate_rust_analyzer.py \
415 --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \
417 $(abs_srctree) $(abs_objtree) \
416 $(realpath $(srctree)) $(realpath $(objtree)) \
418 $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \
419 $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json
420
421redirect-intrinsics = \
422 __addsf3 __eqsf2 __gesf2 __lesf2 __ltsf2 __mulsf3 __nesf2 __unordsf2 \
423 __adddf3 __ledf2 __ltdf2 __muldf3 __unorddf2 \
424 __muloti4 __multi3 \
425 __udivmodti4 __udivti3 __umodti3

--- 4 unchanged lines hidden (view full) ---

430 __ashrti3 \
431 __ashlti3 __lshrti3
432endif
433
434$(obj)/core.o: private skip_clippy = 1
435$(obj)/core.o: private skip_flags = -Dunreachable_pub
436$(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
437$(obj)/core.o: private rustc_target_flags = $(core-cfgs)
417 $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \
418 $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json
419
420redirect-intrinsics = \
421 __addsf3 __eqsf2 __gesf2 __lesf2 __ltsf2 __mulsf3 __nesf2 __unordsf2 \
422 __adddf3 __ledf2 __ltdf2 __muldf3 __unorddf2 \
423 __muloti4 __multi3 \
424 __udivmodti4 __udivti3 __umodti3

--- 4 unchanged lines hidden (view full) ---

429 __ashrti3 \
430 __ashlti3 __lshrti3
431endif
432
433$(obj)/core.o: private skip_clippy = 1
434$(obj)/core.o: private skip_flags = -Dunreachable_pub
435$(obj)/core.o: private rustc_objcopy = $(foreach sym,$(redirect-intrinsics),--redefine-sym $(sym)=__rust$(sym))
436$(obj)/core.o: private rustc_target_flags = $(core-cfgs)
438$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
439 +$(call if_changed_dep,rustc_library)
440ifneq ($(or $(CONFIG_X86_64),$(CONFIG_LOONGARCH)),)
441$(obj)/core.o: scripts/target.json
442endif
437$(obj)/core.o: $(RUST_LIB_SRC)/core/src/lib.rs scripts/target.json FORCE
438 $(call if_changed_dep,rustc_library)
443
444$(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
445$(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
439
440$(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
441$(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
446 +$(call if_changed_dep,rustc_library)
442 $(call if_changed_dep,rustc_library)
447
448$(obj)/alloc.o: private skip_clippy = 1
449$(obj)/alloc.o: private skip_flags = -Dunreachable_pub
450$(obj)/alloc.o: private rustc_target_flags = $(alloc-cfgs)
451$(obj)/alloc.o: $(src)/alloc/lib.rs $(obj)/compiler_builtins.o FORCE
443
444$(obj)/alloc.o: private skip_clippy = 1
445$(obj)/alloc.o: private skip_flags = -Dunreachable_pub
446$(obj)/alloc.o: private rustc_target_flags = $(alloc-cfgs)
447$(obj)/alloc.o: $(src)/alloc/lib.rs $(obj)/compiler_builtins.o FORCE
452 +$(call if_changed_dep,rustc_library)
448 $(call if_changed_dep,rustc_library)
453
454$(obj)/build_error.o: $(src)/build_error.rs $(obj)/compiler_builtins.o FORCE
449
450$(obj)/build_error.o: $(src)/build_error.rs $(obj)/compiler_builtins.o FORCE
455 +$(call if_changed_dep,rustc_library)
451 $(call if_changed_dep,rustc_library)
456
457$(obj)/bindings.o: $(src)/bindings/lib.rs \
458 $(obj)/compiler_builtins.o \
459 $(obj)/bindings/bindings_generated.rs \
460 $(obj)/bindings/bindings_helpers_generated.rs FORCE
452
453$(obj)/bindings.o: $(src)/bindings/lib.rs \
454 $(obj)/compiler_builtins.o \
455 $(obj)/bindings/bindings_generated.rs \
456 $(obj)/bindings/bindings_helpers_generated.rs FORCE
461 +$(call if_changed_dep,rustc_library)
457 $(call if_changed_dep,rustc_library)
462
463$(obj)/uapi.o: $(src)/uapi/lib.rs \
464 $(obj)/compiler_builtins.o \
465 $(obj)/uapi/uapi_generated.rs FORCE
458
459$(obj)/uapi.o: $(src)/uapi/lib.rs \
460 $(obj)/compiler_builtins.o \
461 $(obj)/uapi/uapi_generated.rs FORCE
466 +$(call if_changed_dep,rustc_library)
462 $(call if_changed_dep,rustc_library)
467
468$(obj)/kernel.o: private rustc_target_flags = --extern alloc \
469 --extern build_error --extern macros --extern bindings --extern uapi
470$(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/alloc.o $(obj)/build_error.o \
471 $(obj)/libmacros.so $(obj)/bindings.o $(obj)/uapi.o FORCE
463
464$(obj)/kernel.o: private rustc_target_flags = --extern alloc \
465 --extern build_error --extern macros --extern bindings --extern uapi
466$(obj)/kernel.o: $(src)/kernel/lib.rs $(obj)/alloc.o $(obj)/build_error.o \
467 $(obj)/libmacros.so $(obj)/bindings.o $(obj)/uapi.o FORCE
472 +$(call if_changed_dep,rustc_library)
468 $(call if_changed_dep,rustc_library)
473
474endif # CONFIG_RUST
469
470endif # CONFIG_RUST