8
8
import pathlib
9
9
import sys
10
10
11
- def generate_crates (srctree , objtree , sysroot_src , bindings_file ):
11
+ def generate_crates (srctree , objtree , sysroot_src ):
12
12
# Generate the configuration list.
13
13
cfg = []
14
14
with open (objtree / "include" / "generated" / "rustc_cfg" ) as fd :
@@ -23,12 +23,13 @@ def generate_crates(srctree, objtree, sysroot_src, bindings_file):
23
23
crates = []
24
24
crates_indexes = {}
25
25
26
- def append_crate (display_name , root_module , is_workspace_member , deps , cfg ):
26
+ def append_crate (display_name , root_module , deps , cfg = [], is_workspace_member = True , is_proc_macro = False ):
27
27
crates_indexes [display_name ] = len (crates )
28
28
crates .append ({
29
29
"display_name" : display_name ,
30
30
"root_module" : str (root_module ),
31
31
"is_workspace_member" : is_workspace_member ,
32
+ "is_proc_macro" : is_proc_macro ,
32
33
"deps" : [{"crate" : crates_indexes [dep ], "name" : dep } for dep in deps ],
33
34
"cfg" : cfg ,
34
35
"edition" : "2018" ,
@@ -41,52 +42,43 @@ def append_crate(display_name, root_module, is_workspace_member, deps, cfg):
41
42
append_crate (
42
43
"core" ,
43
44
sysroot_src / "core" / "src" / "lib.rs" ,
44
- False ,
45
- [],
46
45
[],
46
+ is_workspace_member = False ,
47
47
)
48
48
49
49
append_crate (
50
50
"compiler_builtins" ,
51
51
srctree / "rust" / "compiler_builtins.rs" ,
52
- True ,
53
- [],
54
52
[],
55
53
)
56
54
57
55
append_crate (
58
56
"alloc" ,
59
57
srctree / "rust" / "alloc" / "lib.rs" ,
60
- True ,
61
58
["core" , "compiler_builtins" ],
62
- [],
63
59
)
64
60
65
61
append_crate (
66
62
"macros" ,
67
63
srctree / "rust" / "macros" / "lib.rs" ,
68
- True ,
69
- [],
70
64
[],
65
+ is_proc_macro = True ,
71
66
)
72
67
crates [- 1 ]["proc_macro_dylib_path" ] = "rust/libmacros.so"
73
68
74
69
append_crate (
75
70
"build_error" ,
76
71
srctree / "rust" / "build_error.rs" ,
77
- True ,
78
72
["core" , "compiler_builtins" ],
79
- [],
80
73
)
81
74
82
75
append_crate (
83
76
"kernel" ,
84
77
srctree / "rust" / "kernel" / "lib.rs" ,
85
- True ,
86
78
["core" , "alloc" , "macros" , "build_error" ],
87
- cfg ,
79
+ cfg = cfg ,
88
80
)
89
- crates [- 1 ]["env" ]["RUST_BINDINGS_FILE " ] = str (bindings_file .resolve (True ))
81
+ crates [- 1 ]["env" ]["OBJTREE " ] = str (objtree .resolve (True ))
90
82
crates [- 1 ]["source" ] = {
91
83
"include_dirs" : [
92
84
str (srctree / "rust" / "kernel" ),
@@ -111,9 +103,8 @@ def append_crate(display_name, root_module, is_workspace_member, deps, cfg):
111
103
append_crate (
112
104
name ,
113
105
path ,
114
- True ,
115
106
["core" , "alloc" , "kernel" ],
116
- cfg ,
107
+ cfg = cfg ,
117
108
)
118
109
119
110
return crates
@@ -124,7 +115,6 @@ def main():
124
115
parser .add_argument ("srctree" , type = pathlib .Path )
125
116
parser .add_argument ("objtree" , type = pathlib .Path )
126
117
parser .add_argument ("sysroot_src" , type = pathlib .Path )
127
- parser .add_argument ("bindings_file" , type = pathlib .Path )
128
118
args = parser .parse_args ()
129
119
130
120
logging .basicConfig (
@@ -133,7 +123,7 @@ def main():
133
123
)
134
124
135
125
rust_project = {
136
- "crates" : generate_crates (args .srctree , args .objtree , args .sysroot_src , args . bindings_file ),
126
+ "crates" : generate_crates (args .srctree , args .objtree , args .sysroot_src ),
137
127
"sysroot_src" : str (args .sysroot_src ),
138
128
}
139
129
0 commit comments