Skip to content

Commit

Permalink
Move bindings related code to rust/bindings
Browse files Browse the repository at this point in the history
Signed-off-by: Björn Roy Baron <[email protected]>
  • Loading branch information
bjorn3 committed Jul 10, 2022
1 parent b0ec4c8 commit 521024c
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 14 deletions.
22 changes: 11 additions & 11 deletions rust/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ CFLAGS_REMOVE_helpers.o = -Wmissing-prototypes -Wmissing-declarations
always-$(CONFIG_RUST) += libmacros.so
no-clean-files += libmacros.so

always-$(CONFIG_RUST) += bindings_generated.rs bindings_helpers_generated.rs
always-$(CONFIG_RUST) += bindings/bindings_generated.rs bindings/bindings_helpers_generated.rs
obj-$(CONFIG_RUST) += alloc.o bindings.o kernel.o
always-$(CONFIG_RUST) += exports_alloc_generated.h exports_bindings_generated.h \
exports_kernel_generated.h
Expand Down Expand Up @@ -307,24 +307,24 @@ quiet_cmd_bindgen = BINDGEN $@
--size_t-is-usize -o $@ -- $(bindgen_c_flags_final) -DMODULE \
$(bindgen_target_cflags) $(bindgen_target_extra)

$(obj)/bindings_generated.rs: private bindgen_target_flags = \
$(obj)/bindings/bindings_generated.rs: private bindgen_target_flags = \
$(shell grep -v '^\#\|^$$' $(srctree)/$(src)/bindgen_parameters)
$(obj)/bindings_generated.rs: $(src)/kernel/bindings_helper.h \
$(obj)/bindings/bindings_generated.rs: $(src)/bindings/bindings_helper.h \
$(src)/bindgen_parameters FORCE
$(call if_changed_dep,bindgen)

# See `CFLAGS_REMOVE_helpers.o` above. In addition, Clang on C does not warn
# with `-Wmissing-declarations` (unlike GCC), so it is not strictly needed here
# given it is `libclang`; but for consistency, future Clang changes and/or
# a potential future GCC backend for `bindgen`, we disable it too.
$(obj)/bindings_helpers_generated.rs: private bindgen_target_flags = \
$(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_flags = \
--blacklist-type '.*' --whitelist-var '' \
--whitelist-function 'rust_helper_.*'
$(obj)/bindings_helpers_generated.rs: private bindgen_target_cflags = \
$(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_cflags = \
-I$(objtree)/$(obj) -Wno-missing-prototypes -Wno-missing-declarations
$(obj)/bindings_helpers_generated.rs: private bindgen_target_extra = ; \
$(obj)/bindings/bindings_helpers_generated.rs: private bindgen_target_extra = ; \
sed -Ei 's/pub fn rust_helper_([a-zA-Z0-9_]*)/#[link_name="rust_helper_\1"]\n pub fn \1/g' $@
$(obj)/bindings_helpers_generated.rs: $(src)/helpers.c FORCE
$(obj)/bindings/bindings_helpers_generated.rs: $(src)/helpers.c FORCE
$(call if_changed_dep,bindgen)

quiet_cmd_exports = EXPORTS $@
Expand Down Expand Up @@ -396,10 +396,10 @@ $(obj)/alloc.o: $(src)/alloc/lib.rs $(obj)/compiler_builtins.o FORCE
$(obj)/build_error.o: $(src)/build_error.rs $(obj)/compiler_builtins.o FORCE
$(call if_changed_dep,rustc_library)

$(obj)/bindings.o: $(src)/kernel/bindings.rs \
$(obj)/compiler_builtins.o \
$(obj)/bindings_generated.rs \
$(obj)/bindings_helpers_generated.rs FORCE
$(obj)/bindings.o: $(src)/bindings/lib.rs \
$(obj)/compiler_builtins.o \
$(obj)/bindings/bindings_generated.rs \
$(obj)/bindings/bindings_helpers_generated.rs FORCE
$(call if_changed_dep,rustc_library)

$(obj)/kernel.o: private rustc_target_flags = --extern alloc \
Expand Down
File renamed without changes.
7 changes: 5 additions & 2 deletions rust/kernel/bindings.rs → rust/bindings/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ mod bindings_raw {
// Use glob import here to expose all helpers.
// Symbols defined within the module will take precedence to the glob import.
pub use super::bindings_helper::*;
include!(concat!(env!("OBJTREE"), "/rust/bindings_generated.rs"));
include!(concat!(
env!("OBJTREE"),
"/rust/bindings/bindings_generated.rs"
));
}

// When both a directly exposed symbol and a helper exists for the same function,
Expand All @@ -41,7 +44,7 @@ mod bindings_helper {
use super::bindings_raw::*;
include!(concat!(
env!("OBJTREE"),
"/rust/bindings_helpers_generated.rs"
"/rust/bindings/bindings_helpers_generated.rs"
));
}

Expand Down
2 changes: 1 addition & 1 deletion scripts/generate_rust_analyzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=Tr

append_crate(
"bindings",
srctree / "rust"/ "kernel" / "bindings.rs",
srctree / "rust"/ "bindings" / "lib.rs",
["core"],
cfg=cfg,
)
Expand Down

0 comments on commit 521024c

Please sign in to comment.