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 $<
@@ -160,7 +168,7 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $<
160168 mkdir -p $(objtree ) /$(obj ) /test/doctests/kernel; \
161169 OBJTREE=$(abspath $(objtree ) ) \
162170 $(RUSTDOC ) --test $(rust_flags ) \
163- -L$(objtree ) /$(obj ) --extern kernel \
171+ -L$(objtree ) /$(obj ) --extern ffi --extern kernel \
164172 --extern build_error --extern macros \
165173 --extern bindings --extern uapi \
166174 --no-run --crate-name kernel -Zunstable-options \
@@ -198,9 +206,9 @@ rusttest-macros: $(src)/macros/lib.rs \
198206 +$(call if_changed,rustc_test)
199207 +$(call if_changed,rustdoc_test)
200208
201- rusttest-kernel : private rustc_target_flags = \
209+ rusttest-kernel : private rustc_target_flags = --extern ffi \
202210 --extern build_error --extern macros --extern bindings --extern uapi
203- rusttest-kernel : $(src ) /kernel/lib.rs rusttestlib-kernel \
211+ rusttest-kernel : $(src ) /kernel/lib.rs rusttestlib-ffi rusttestlib- kernel \
204212 rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
205213 rusttestlib-uapi FORCE
206214 +$(call if_changed,rustc_test)
@@ -273,7 +281,7 @@ bindgen_c_flags_final = $(bindgen_c_flags_lto) -fno-builtin -D__BINDGEN__
273281quiet_cmd_bindgen = BINDGEN $@
274282 cmd_bindgen = \
275283 $(BINDGEN ) $< $(bindgen_target_flags ) \
276- --use-core --with-derive-default --ctypes-prefix core:: ffi --no-layout-tests \
284+ --use-core --with-derive-default --ctypes-prefix ffi --no-layout-tests \
277285 --no-debug '.*' --enable-function-attribute-detection \
278286 -o $@ -- $(bindgen_c_flags_final ) -DMODULE \
279287 $(bindgen_target_cflags ) $(bindgen_target_extra )
@@ -401,18 +409,23 @@ $(obj)/compiler_builtins.o: $(src)/compiler_builtins.rs $(obj)/core.o FORCE
401409$(obj ) /build_error.o : $(src ) /build_error.rs $(obj ) /compiler_builtins.o FORCE
402410 +$(call if_changed_rule,rustc_library)
403411
412+ $(obj ) /ffi.o : $(src ) /ffi.rs $(obj ) /compiler_builtins.o FORCE
413+ +$(call if_changed_rule,rustc_library)
414+
415+ $(obj ) /bindings.o : private rustc_target_flags = --extern ffi
404416$(obj ) /bindings.o : $(src ) /bindings/lib.rs \
405- $(obj)/compiler_builtins .o \
417+ $(obj)/ffi .o \
406418 $(obj)/bindings/bindings_generated.rs \
407419 $(obj)/bindings/bindings_helpers_generated.rs FORCE
408420 +$(call if_changed_rule,rustc_library)
409421
422+ $(obj ) /uapi.o : private rustc_target_flags = --extern ffi
410423$(obj ) /uapi.o : $(src ) /uapi/lib.rs \
411- $(obj)/compiler_builtins .o \
424+ $(obj)/ffi .o \
412425 $(obj)/uapi/uapi_generated.rs FORCE
413426 +$(call if_changed_rule,rustc_library)
414427
415- $(obj ) /kernel.o : private rustc_target_flags = \
428+ $(obj ) /kernel.o : private rustc_target_flags = --extern ffi \
416429 --extern build_error --extern macros --extern bindings --extern uapi
417430$(obj ) /kernel.o : $(src ) /kernel/lib.rs $(obj ) /build_error.o \
418431 $(obj)/libmacros.so $(obj)/bindings.o $(obj)/uapi.o FORCE
0 commit comments