7
7
use std:: collections:: BTreeMap ;
8
8
use std:: env:: current_dir;
9
9
use std:: fs:: { self , File } ;
10
+ use std:: path:: Path ;
10
11
use std:: process:: { Command , Stdio } ;
11
12
12
13
fn toolchain ( ) -> String {
13
- fs:: read_to_string ( "asm-toolchain" )
14
+ fs:: read_to_string ( "cortex-m/ asm-toolchain" )
14
15
. unwrap ( )
15
16
. trim ( )
16
17
. to_string ( )
@@ -45,7 +46,11 @@ fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) {
45
46
46
47
// We don't want any system-specific paths to show up since we ship the result to other users.
47
48
// Add `--remap-path-prefix $(pwd)=.`.
48
- let mut dir = current_dir ( ) . unwrap ( ) . as_os_str ( ) . to_os_string ( ) ;
49
+ let mut dir = current_dir ( )
50
+ . unwrap ( )
51
+ . join ( "cortex-m" )
52
+ . as_os_str ( )
53
+ . to_os_string ( ) ;
49
54
dir. push ( "=." ) ;
50
55
cmd. arg ( "--remap-path-prefix" ) . arg ( dir) ;
51
56
@@ -70,25 +75,29 @@ fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) {
70
75
// Pass output and input file.
71
76
cmd. arg ( "-o" ) . arg ( & obj_file) ;
72
77
cmd. arg ( "asm/lib.rs" ) ;
78
+ cmd. current_dir ( "cortex-m" ) ;
73
79
74
80
println ! ( "{:?}" , cmd) ;
75
81
let status = cmd. status ( ) . unwrap ( ) ;
76
82
assert ! ( status. success( ) ) ;
77
83
84
+ let full_obj_file_path = Path :: new ( "cortex-m" ) . join ( & obj_file) ;
85
+
78
86
// Archive `target.o` -> `bin/target.a`.
79
- let mut builder = ar:: Builder :: new ( File :: create ( format ! ( "bin/{}.a" , file_stub) ) . unwrap ( ) ) ;
87
+ let mut builder =
88
+ ar:: Builder :: new ( File :: create ( format ! ( "cortex-m/bin/{}.a" , file_stub) ) . unwrap ( ) ) ;
80
89
81
90
// Use `append`, not `append_path`, to avoid adding any filesystem metadata (modification times,
82
91
// etc.).
83
- let file = fs:: read ( & obj_file ) . unwrap ( ) ;
92
+ let file = fs:: read ( & full_obj_file_path ) . unwrap ( ) ;
84
93
builder
85
94
. append (
86
95
& ar:: Header :: new ( obj_file. as_bytes ( ) . to_vec ( ) , file. len ( ) as u64 ) ,
87
96
& * file,
88
97
)
89
98
. unwrap ( ) ;
90
99
91
- fs:: remove_file ( & obj_file ) . unwrap ( ) ;
100
+ fs:: remove_file ( & full_obj_file_path ) . unwrap ( ) ;
92
101
}
93
102
94
103
fn assemble ( target : & str , cfgs : & [ & str ] ) {
@@ -157,7 +166,7 @@ pub fn assemble_blobs() {
157
166
pub fn check_blobs ( ) {
158
167
// Load each `.a` file in `bin` into memory.
159
168
let mut files_before = BTreeMap :: new ( ) ;
160
- for entry in fs:: read_dir ( "bin" ) . unwrap ( ) {
169
+ for entry in fs:: read_dir ( "cortex-m/ bin" ) . unwrap ( ) {
161
170
let entry = entry. unwrap ( ) ;
162
171
if entry. path ( ) . extension ( ) . unwrap ( ) == "a" {
163
172
files_before. insert (
@@ -176,7 +185,7 @@ pub fn check_blobs() {
176
185
assemble_blobs ( ) ;
177
186
178
187
let mut files_after = BTreeMap :: new ( ) ;
179
- for entry in fs:: read_dir ( "bin" ) . unwrap ( ) {
188
+ for entry in fs:: read_dir ( "cortex-m/ bin" ) . unwrap ( ) {
180
189
let entry = entry. unwrap ( ) ;
181
190
if entry. path ( ) . extension ( ) . unwrap ( ) == "a" {
182
191
files_after. insert (
0 commit comments