@@ -12,7 +12,7 @@ obj-$(CONFIG_RUST) += helpers/helpers.o
12
12
CFLAGS_REMOVE_helpers/helpers.o = -Wmissing-prototypes -Wmissing-declarations
13
13
14
14
always-$(CONFIG_RUST) += bindings/bindings_generated.rs bindings/bindings_helpers_generated.rs
15
- obj-$(CONFIG_RUST) += bindings.o kernel.o
15
+ obj-$(CONFIG_RUST) += bindings.o pin_init.o kernel.o
16
16
always-$(CONFIG_RUST) += exports_helpers_generated.h \
17
17
exports_bindings_generated.h exports_kernel_generated.h
18
18
@@ -41,7 +41,10 @@ ifdef CONFIG_RUST
41
41
libmacros_name := $(shell MAKEFLAGS= $(RUSTC ) --print file-names --crate-name macros --crate-type proc-macro - </dev/null)
42
42
libmacros_extension := $(patsubst libmacros.% ,% ,$(libmacros_name ) )
43
43
44
- always-$(CONFIG_RUST) += $(libmacros_name )
44
+ libpin_init_internal_name := $(shell MAKEFLAGS= $(RUSTC ) --print file-names --crate-name pin_init_internal --crate-type proc-macro - </dev/null)
45
+ libpin_init_internal_extension := $(patsubst libpin_init_internal.% ,% ,$(libpin_init_internal_name ) )
46
+
47
+ always-$(CONFIG_RUST) += $(libmacros_name ) $(libpin_init_internal_name )
45
48
46
49
# `$(rust_flags)` is passed in case the user added `--sysroot`.
47
50
rustc_sysroot := $(shell MAKEFLAGS= $(RUSTC ) $(rust_flags ) --print sysroot)
@@ -80,7 +83,7 @@ quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $<
80
83
# command-like flags to solve the issue. Meanwhile, we use the non-custom case
81
84
# and then retouch the generated files.
82
85
rustdoc : rustdoc-core rustdoc-macros rustdoc-compiler_builtins \
83
- rustdoc-kernel
86
+ rustdoc-kernel rustdoc-pin_init
84
87
$(Q)cp $(srctree)/Documentation/images/logo.svg $(rustdoc_output)/static.files/
85
88
$(Q)cp $(srctree)/Documentation/images/COPYING-logo $(rustdoc_output)/static.files/
86
89
$(Q)find $(rustdoc_output) -name '*.html' -type f -print0 | xargs -0 sed -Ei \
@@ -110,11 +113,24 @@ rustdoc-compiler_builtins: $(src)/compiler_builtins.rs rustdoc-core FORCE
110
113
rustdoc-ffi : $(src ) /ffi.rs rustdoc-core FORCE
111
114
+$(call if_changed,rustdoc)
112
115
113
- rustdoc-kernel : private rustc_target_flags = --extern ffi \
116
+ rustdoc-pin_init_internal : private rustdoc_host = yes
117
+ rustdoc-pin_init_internal : private rustc_target_flags = --cfg kernel \
118
+ --extern proc_macro --crate-type proc-macro
119
+ rustdoc-pin_init_internal : $(src ) /pin-init/internal/src/_lib.rs FORCE
120
+ +$(call if_changed,rustdoc)
121
+
122
+ rustdoc-pin_init : private rustdoc_host = yes
123
+ rustdoc-pin_init : private rustc_target_flags = --extern pin_init_internal \
124
+ --extern macros --extern alloc --cfg kernel --cfg feature=\"alloc\"
125
+ rustdoc-pin_init : $(src ) /pin-init/src/_lib.rs rustdoc-pin_init_internal \
126
+ rustdoc-macros FORCE
127
+ +$(call if_changed,rustdoc)
128
+
129
+ rustdoc-kernel : private rustc_target_flags = --extern ffi --extern pin_init \
114
130
--extern build_error --extern macros \
115
131
--extern bindings --extern uapi
116
132
rustdoc-kernel : $(src ) /kernel/lib.rs rustdoc-core rustdoc-ffi rustdoc-macros \
117
- rustdoc-compiler_builtins $(obj)/$(libmacros_name) \
133
+ rustdoc-pin_init rustdoc- compiler_builtins $(obj)/$(libmacros_name) \
118
134
$(obj)/bindings.o FORCE
119
135
+$(call if_changed,rustdoc)
120
136
@@ -139,12 +155,24 @@ rusttestlib-macros: private rustc_test_library_proc = yes
139
155
rusttestlib-macros : $(src ) /macros/lib.rs FORCE
140
156
+$(call if_changed,rustc_test_library)
141
157
158
+ rusttestlib-pin_init_internal : private rustc_target_flags = --cfg kernel \
159
+ --extern proc_macro
160
+ rusttestlib-pin_init_internal : private rustc_test_library_proc = yes
161
+ rusttestlib-pin_init_internal : $(src ) /pin-init/internal/src/_lib.rs FORCE
162
+ +$(call if_changed,rustc_test_library)
163
+
164
+ rusttestlib-pin_init : private rustc_target_flags = --extern pin_init_internal \
165
+ --extern macros --cfg kernel
166
+ rusttestlib-pin_init : $(src ) /pin-init/src/_lib.rs rusttestlib-macros \
167
+ rusttestlib-pin_init_internal $(obj)/$(libpin_init_internal_name) FORCE
168
+ +$(call if_changed,rustc_test_library)
169
+
142
170
rusttestlib-kernel : private rustc_target_flags = --extern ffi \
143
- --extern build_error --extern macros \
171
+ --extern build_error --extern macros --extern pin_init \
144
172
--extern bindings --extern uapi
145
- rusttestlib-kernel : $(src ) /kernel/lib.rs \
146
- rusttestlib-bindings rusttestlib-uapi rusttestlib-build_error \
147
- $(obj)/$(libmacros_name) $(obj)/ bindings.o FORCE
173
+ rusttestlib-kernel : $(src ) /kernel/lib.rs rusttestlib-bindings rusttestlib-uapi \
174
+ rusttestlib-build_error rusttestlib-pin_init $(obj)/$(libmacros_name) \
175
+ $(obj)/bindings.o FORCE
148
176
+$(call if_changed,rustc_test_library)
149
177
150
178
rusttestlib-bindings : private rustc_target_flags = --extern ffi
@@ -172,8 +200,8 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $<
172
200
mkdir -p $(objtree ) /$(obj ) /test/doctests/kernel; \
173
201
OBJTREE=$(abspath $(objtree ) ) \
174
202
$(RUSTDOC ) --test $(rust_flags ) \
175
- -L$(objtree ) /$(obj ) --extern ffi --extern kernel \
176
- --extern build_error --extern macros \
203
+ -L$(objtree ) /$(obj ) --extern ffi --extern pin_init \
204
+ --extern kernel --extern build_error --extern macros \
177
205
--extern bindings --extern uapi \
178
206
--no-run --crate-name kernel -Zunstable-options \
179
207
--sysroot=/dev/null \
@@ -203,18 +231,18 @@ quiet_cmd_rustc_test = $(RUSTC_OR_CLIPPY_QUIET) T $<
203
231
rusttest : rusttest-macros rusttest-kernel
204
232
205
233
rusttest-macros : private rustc_target_flags = --extern proc_macro \
206
- --extern macros --extern kernel
234
+ --extern macros --extern kernel --extern pin_init
207
235
rusttest-macros : private rustdoc_test_target_flags = --crate-type proc-macro
208
236
rusttest-macros : $(src ) /macros/lib.rs \
209
- rusttestlib-macros rusttestlib-kernel FORCE
237
+ rusttestlib-macros rusttestlib-kernel rusttestlib-pin_init FORCE
210
238
+$(call if_changed,rustc_test)
211
239
+$(call if_changed,rustdoc_test)
212
240
213
- rusttest-kernel : private rustc_target_flags = --extern ffi \
241
+ rusttest-kernel : private rustc_target_flags = --extern ffi --extern pin_init \
214
242
--extern build_error --extern macros --extern bindings --extern uapi
215
243
rusttest-kernel : $(src ) /kernel/lib.rs rusttestlib-ffi rusttestlib-kernel \
216
244
rusttestlib-build_error rusttestlib-macros rusttestlib-bindings \
217
- rusttestlib-uapi FORCE
245
+ rusttestlib-uapi rusttestlib-pin_init FORCE
218
246
+$(call if_changed,rustc_test)
219
247
220
248
ifdef CONFIG_CC_IS_CLANG
@@ -361,7 +389,7 @@ $(obj)/exports_kernel_generated.h: $(obj)/kernel.o FORCE
361
389
362
390
quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET ) P $@
363
391
cmd_rustc_procmacro = \
364
- $(RUSTC_OR_CLIPPY ) $(rust_common_flags ) \
392
+ $(RUSTC_OR_CLIPPY ) $(rust_common_flags ) $( rustc_target_flags ) \
365
393
-Clinker-flavor=gcc -Clinker=$(HOSTCC ) \
366
394
-Clink-args='$(call escsq,$(KBUILD_PROCMACROLDFLAGS ) ) ' \
367
395
--emit=dep-info=$(depfile ) --emit=link=$@ --extern proc_macro \
@@ -372,6 +400,10 @@ quiet_cmd_rustc_procmacro = $(RUSTC_OR_CLIPPY_QUIET) P $@
372
400
$(obj ) /$(libmacros_name ) : $(src ) /macros/lib.rs FORCE
373
401
+$(call if_changed_dep,rustc_procmacro)
374
402
403
+ $(obj ) /$(libpin_init_internal_name ) : private rustc_target_flags = --cfg kernel
404
+ $(obj ) /$(libpin_init_internal_name ) : $(src ) /pin-init/internal/src/_lib.rs FORCE
405
+ +$(call if_changed_dep,rustc_procmacro)
406
+
375
407
quiet_cmd_rustc_library = $(if $(skip_clippy ) ,RUSTC,$(RUSTC_OR_CLIPPY_QUIET ) ) L $@
376
408
cmd_rustc_library = \
377
409
OBJTREE=$(abspath $(objtree ) ) \
@@ -451,6 +483,13 @@ $(obj)/compiler_builtins.o: private rustc_objcopy = -w -W '__*'
451
483
$(obj ) /compiler_builtins.o : $(src ) /compiler_builtins.rs $(obj ) /core.o FORCE
452
484
+$(call if_changed_rule,rustc_library)
453
485
486
+ $(obj ) /pin_init.o : private skip_gendwarfksyms = 1
487
+ $(obj ) /pin_init.o : private rustc_target_flags = --extern pin_init_internal \
488
+ --extern macros --cfg kernel
489
+ $(obj ) /pin_init.o : $(src ) /pin-init/src/_lib.rs $(obj ) /compiler_builtins.o \
490
+ $(obj)/$(libpin_init_internal_name) $(obj)/$(libmacros_name) FORCE
491
+ +$(call if_changed_rule,rustc_library)
492
+
454
493
$(obj ) /build_error.o : private skip_gendwarfksyms = 1
455
494
$(obj ) /build_error.o : $(src ) /build_error.rs $(obj ) /compiler_builtins.o FORCE
456
495
+$(call if_changed_rule,rustc_library)
@@ -473,9 +512,9 @@ $(obj)/uapi.o: $(src)/uapi/lib.rs \
473
512
$(obj)/uapi/uapi_generated.rs FORCE
474
513
+$(call if_changed_rule,rustc_library)
475
514
476
- $(obj ) /kernel.o : private rustc_target_flags = --extern ffi \
515
+ $(obj ) /kernel.o : private rustc_target_flags = --extern ffi --extern pin_init \
477
516
--extern build_error --extern macros --extern bindings --extern uapi
478
- $(obj ) /kernel.o : $(src ) /kernel/lib.rs $(obj ) /build_error.o \
517
+ $(obj ) /kernel.o : $(src ) /kernel/lib.rs $(obj ) /build_error.o $( obj ) /pin_init.o \
479
518
$(obj)/$(libmacros_name) $(obj)/bindings.o $(obj)/uapi.o FORCE
480
519
+$(call if_changed_rule,rustc_library)
481
520
0 commit comments