33# Where to place rustdoc generated documentation
44rustdoc_output := $(objtree ) /Documentation/output/rust/rustdoc
55
6- obj-$(CONFIG_RUST) += core.o compiler_builtins.o
6+ obj-$(CONFIG_RUST) += core.o compiler_builtins.o ffi.o
77always-$(CONFIG_RUST) += exports_core_generated.h
88
99# Missing prototypes are expected in the helpers since these are exported
@@ -103,10 +103,13 @@ rustdoc-core: $(RUST_LIB_SRC)/core/src/lib.rs FORCE
103103rustdoc-compiler_builtins : $(src ) /compiler_builtins.rs rustdoc-core FORCE
104104 +$(call if_changed,rustdoc)
105105
106- rustdoc-kernel : private rustc_target_flags = \
106+ rustdoc-ffi : $(src ) /ffi.rs rustdoc-core FORCE
107+ +$(call if_changed,rustdoc)
108+
109+ rustdoc-kernel : private rustc_target_flags = --extern ffi \
107110 --extern build_error --extern macros=$(objtree)/$(obj)/libmacros.so \
108111 --extern bindings --extern uapi
109- rustdoc-kernel : $(src ) /kernel/lib.rs rustdoc-core rustdoc-macros \
112+ rustdoc-kernel : $(src ) /kernel/lib.rs rustdoc-core rustdoc-ffi rustdoc- macros \
110113 rustdoc-compiler_builtins $(obj)/libmacros.so \
111114 $(obj)/bindings.o FORCE
112115 +$(call if_changed,rustdoc)
@@ -124,23 +127,28 @@ quiet_cmd_rustc_test_library = RUSTC TL $<
124127rusttestlib-build_error : $(src ) /build_error.rs FORCE
125128 +$(call if_changed,rustc_test_library)
126129
130+ rusttestlib-ffi : $(src ) /ffi.rs FORCE
131+ +$(call if_changed,rustc_test_library)
132+
127133rusttestlib-macros : private rustc_target_flags = --extern proc_macro
128134rusttestlib-macros : private rustc_test_library_proc = yes
129135rusttestlib-macros : $(src ) /macros/lib.rs FORCE
130136 +$(call if_changed,rustc_test_library)
131137
132- rusttestlib-kernel : private rustc_target_flags = \
138+ rusttestlib-kernel : private rustc_target_flags = --extern ffi \
133139 --extern build_error --extern macros \
134140 --extern bindings --extern uapi
135141rusttestlib-kernel : $(src ) /kernel/lib.rs \
136142 rusttestlib-bindings rusttestlib-uapi rusttestlib-build_error \
137143 $(obj)/libmacros.so $(obj)/bindings.o FORCE
138144 +$(call if_changed,rustc_test_library)
139145
140- rusttestlib-bindings : $(src ) /bindings/lib.rs FORCE
146+ rusttestlib-bindings : private rustc_target_flags = --extern ffi
147+ rusttestlib-bindings : $(src ) /bindings/lib.rs rusttestlib-ffi FORCE
141148 +$(call if_changed,rustc_test_library)
142149
143- rusttestlib-uapi : $(src ) /uapi/lib.rs FORCE
150+ rusttestlib-uapi : private rustc_target_flags = --extern ffi
151+ rusttestlib-uapi : $(src ) /uapi/lib.rs rusttestlib-ffi FORCE
144152 +$(call if_changed,rustc_test_library)
145153
146154quiet_cmd_rustdoc_test = RUSTDOC T $<
@@ -159,7 +167,7 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $<
159167 mkdir -p $(objtree ) /$(obj ) /test/doctests/kernel; \
160168 OBJTREE=$(abspath $(objtree ) ) \
161169 $(RUSTDOC ) --test $(rust_flags ) \
162- -L$(objtree ) /$(obj ) --extern kernel \
170+ -L$(objtree ) /$(obj ) --extern ffi --extern kernel \
163171 --extern build_error --extern macros \
164172 --extern bindings --extern uapi \
165173 --no-run --crate-name kernel -Zunstable-options \
@@ -197,9 +205,9 @@ rusttest-macros: $(src)/macros/lib.rs \
197205 +$(call if_changed,rustc_test)
198206 +$(call if_changed,rustdoc_test)
199207
200- rusttest-kernel : private rustc_target_flags = \
208+ rusttest-kernel : private rustc_target_flags = --extern ffi \
201209 --extern build_error --extern macros --extern bindings --extern uapi
202- rusttest-kernel : $(src ) /kernel/lib.rs rusttestlib-kernel \
210+ rusttest-kernel : $(src ) /kernel/lib.rs rusttestlib-ffi rusttestlib- kernel \
203211 rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
204212 rusttestlib-uapi FORCE
205213 +$(call if_changed,rustc_test)
@@ -286,7 +294,7 @@ bindgen_c_flags_final = $(bindgen_c_flags_lto) -fno-builtin -D__BINDGEN__
286294quiet_cmd_bindgen = BINDGEN $@
287295 cmd_bindgen = \
288296 $(BINDGEN ) $< $(bindgen_target_flags ) --rust-target 1.68 \
289- --use-core --with-derive-default --ctypes-prefix core:: ffi --no-layout-tests \
297+ --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests \
290298 --no-debug '.*' --enable-function-attribute-detection \
291299 -o $@ -- $(bindgen_c_flags_final ) -DMODULE \
292300 $(bindgen_target_cflags ) $(bindgen_target_extra )
@@ -414,18 +422,23 @@ $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
414422$(obj ) /build_error.o : $(src ) /build_error.rs $(obj ) /compiler_builtins.o FORCE
415423 +$(call if_changed_rule,rustc_library)
416424
425+ $(obj ) /ffi.o : $(src ) /ffi.rs $(obj ) /compiler_builtins.o FORCE
426+ +$(call if_changed_rule,rustc_library)
427+
428+ $(obj ) /bindings.o : private rustc_target_flags = --extern ffi
417429$(obj ) /bindings.o : $(src ) /bindings/lib.rs \
418- $(obj)/compiler_builtins .o \
430+ $(obj)/ffi .o \
419431 $(obj)/bindings/bindings_generated.rs \
420432 $(obj)/bindings/bindings_helpers_generated.rs FORCE
421433 +$(call if_changed_rule,rustc_library)
422434
435+ $(obj ) /uapi.o : private rustc_target_flags = --extern ffi
423436$(obj ) /uapi.o : $(src ) /uapi/lib.rs \
424- $(obj)/compiler_builtins .o \
437+ $(obj)/ffi .o \
425438 $(obj)/uapi/uapi_generated.rs FORCE
426439 +$(call if_changed_rule,rustc_library)
427440
428- $(obj ) /kernel.o : private rustc_target_flags = \
441+ $(obj ) /kernel.o : private rustc_target_flags = --extern ffi \
429442 --extern build_error --extern macros --extern bindings --extern uapi
430443$(obj ) /kernel.o : $(src ) /kernel/lib.rs $(obj ) /build_error.o \
431444 $(obj)/libmacros.so $(obj)/bindings.o $(obj)/uapi.o FORCE
0 commit comments