1
- use std:: { env, path:: { Path , PathBuf } , process:: { self , Command } } ;
1
+ use std:: {
2
+ env,
3
+ path:: { Path , PathBuf } ,
4
+ process:: { self , Command } ,
5
+ } ;
2
6
3
7
fn main ( ) {
4
8
let target = env:: var ( "TARGET" ) . expect ( "TARGET not set" ) ;
@@ -16,14 +20,18 @@ fn main() {
16
20
Err ( _) => {
17
21
eprintln ! (
18
22
"The KERNEL environment variable must be set for building the bootloader.\n \n \
19
- If you use `bootimage` for building you need at least version 0.7.0. You can \
20
- update `bootimage` by running `cargo install bootimage --force`."
23
+ If you use `bootimage` for building you need at least version 0.7.0. You can \
24
+ update `bootimage` by running `cargo install bootimage --force`."
21
25
) ;
22
26
process:: exit ( 1 ) ;
23
27
}
24
28
} ) ;
25
29
26
- let kernel_file_name = kernel. file_name ( ) . expect ( "KERNEL has no valid file name" ) . to_str ( ) . expect ( "kernel file name not valid utf8" ) ;
30
+ let kernel_file_name = kernel
31
+ . file_name ( )
32
+ . expect ( "KERNEL has no valid file name" )
33
+ . to_str ( )
34
+ . expect ( "kernel file name not valid utf8" ) ;
27
35
let kernel_file_name_replaced = kernel_file_name. replace ( '-' , "_" ) ;
28
36
let kernel_out_path = out_dir. join ( format ! ( "kernel_bin-{}.o" , kernel_file_name) ) ;
29
37
let kernel_archive_path = out_dir. join ( format ! ( "libkernel_bin-{}.a" , kernel_file_name) ) ;
@@ -41,16 +49,27 @@ fn main() {
41
49
process:: exit ( 1 ) ;
42
50
}
43
51
} ;
44
- let objcopy = llvm_tools. tool ( & llvm_tools:: exe ( "llvm-objcopy" ) ) . expect ( "llvm-objcopy not found in llvm-tools" ) ;
52
+ let objcopy = llvm_tools
53
+ . tool ( & llvm_tools:: exe ( "llvm-objcopy" ) )
54
+ . expect ( "llvm-objcopy not found in llvm-tools" ) ;
45
55
46
56
let mut cmd = Command :: new ( objcopy) ;
47
57
cmd. arg ( "-I" ) . arg ( "binary" ) ;
48
58
cmd. arg ( "-O" ) . arg ( "elf64-x86-64" ) ;
49
59
cmd. arg ( "--binary-architecture=i386:x86-64" ) ;
50
60
cmd. arg ( "--rename-section" ) . arg ( ".data=.kernel" ) ;
51
- cmd. arg ( "--redefine-sym" ) . arg ( format ! ( "_binary_{}_start=_kernel_start_addr" , kernel_file_name_replaced) ) ;
52
- cmd. arg ( "--redefine-sym" ) . arg ( format ! ( "_binary_{}_end=_kernel_end_addr" , kernel_file_name_replaced) ) ;
53
- cmd. arg ( "--redefine-sym" ) . arg ( format ! ( "_binary_{}_size=_kernel_size" , kernel_file_name_replaced) ) ;
61
+ cmd. arg ( "--redefine-sym" ) . arg ( format ! (
62
+ "_binary_{}_start=_kernel_start_addr" ,
63
+ kernel_file_name_replaced
64
+ ) ) ;
65
+ cmd. arg ( "--redefine-sym" ) . arg ( format ! (
66
+ "_binary_{}_end=_kernel_end_addr" ,
67
+ kernel_file_name_replaced
68
+ ) ) ;
69
+ cmd. arg ( "--redefine-sym" ) . arg ( format ! (
70
+ "_binary_{}_size=_kernel_size" ,
71
+ kernel_file_name_replaced
72
+ ) ) ;
54
73
cmd. current_dir ( kernel. parent ( ) . expect ( "KERNEL has no valid parent dir" ) ) ;
55
74
cmd. arg ( & kernel_file_name) ;
56
75
cmd. arg ( & kernel_out_path) ;
@@ -60,12 +79,14 @@ fn main() {
60
79
process:: exit ( 1 ) ;
61
80
}
62
81
63
- let ar = llvm_tools. tool ( & llvm_tools:: exe ( "llvm-ar" ) ) . unwrap_or_else ( || {
64
- eprintln ! ( "Failed to retrieve llvm-ar component" ) ;
65
- eprint ! ( "This component is available since nightly-2019-03-29," ) ;
66
- eprintln ! ( "so try updating your toolchain if you're using an older nightly" ) ;
67
- process:: exit ( 1 ) ;
68
- } ) ;
82
+ let ar = llvm_tools
83
+ . tool ( & llvm_tools:: exe ( "llvm-ar" ) )
84
+ . unwrap_or_else ( || {
85
+ eprintln ! ( "Failed to retrieve llvm-ar component" ) ;
86
+ eprint ! ( "This component is available since nightly-2019-03-29," ) ;
87
+ eprintln ! ( "so try updating your toolchain if you're using an older nightly" ) ;
88
+ process:: exit ( 1 ) ;
89
+ } ) ;
69
90
let mut cmd = Command :: new ( ar) ;
70
91
cmd. arg ( "crs" ) ;
71
92
cmd. arg ( & kernel_archive_path) ;
@@ -80,5 +101,8 @@ fn main() {
80
101
println ! ( "cargo:rerun-if-changed={}" , kernel. display( ) ) ;
81
102
println ! ( "cargo:rerun-if-changed=build.rs" ) ;
82
103
println ! ( "cargo:rustc-link-search=native={}" , out_dir. display( ) ) ;
83
- println ! ( "cargo:rustc-link-lib=static=kernel_bin-{}" , kernel_file_name) ;
104
+ println ! (
105
+ "cargo:rustc-link-lib=static=kernel_bin-{}" ,
106
+ kernel_file_name
107
+ ) ;
84
108
}
0 commit comments