4
4
//!
5
5
//! Also see the docs in `asm.rs`.
6
6
7
+ use std:: path:: Path ;
7
8
use std:: collections:: BTreeMap ;
8
9
use std:: env:: current_dir;
9
10
use std:: fs:: { self , File } ;
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,7 @@ 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 ( ) . unwrap ( ) . join ( "cortex-m" ) . as_os_str ( ) . to_os_string ( ) ;
49
50
dir. push ( "=." ) ;
50
51
cmd. arg ( "--remap-path-prefix" ) . arg ( dir) ;
51
52
@@ -70,25 +71,29 @@ fn assemble_really(target: &str, cfgs: &[&str], plugin_lto: bool) {
70
71
// Pass output and input file.
71
72
cmd. arg ( "-o" ) . arg ( & obj_file) ;
72
73
cmd. arg ( "asm/lib.rs" ) ;
74
+ cmd. current_dir ( "cortex-m" ) ;
73
75
74
76
println ! ( "{:?}" , cmd) ;
75
77
let status = cmd. status ( ) . unwrap ( ) ;
76
78
assert ! ( status. success( ) ) ;
77
79
80
+ let full_obj_file_path = Path :: new ( "cortex-m" ) . join ( & obj_file) ;
81
+
78
82
// Archive `target.o` -> `bin/target.a`.
79
- let mut builder = ar:: Builder :: new ( File :: create ( format ! ( "bin/{}.a" , file_stub) ) . unwrap ( ) ) ;
83
+ let mut builder = ar:: Builder :: new ( File :: create ( format ! ( "cortex-m/bin/{}.a" , file_stub) ) . unwrap ( ) ) ;
84
+
80
85
81
86
// Use `append`, not `append_path`, to avoid adding any filesystem metadata (modification times,
82
87
// etc.).
83
- let file = fs:: read ( & obj_file ) . unwrap ( ) ;
88
+ let file = fs:: read ( & full_obj_file_path ) . unwrap ( ) ;
84
89
builder
85
90
. append (
86
91
& ar:: Header :: new ( obj_file. as_bytes ( ) . to_vec ( ) , file. len ( ) as u64 ) ,
87
92
& * file,
88
93
)
89
94
. unwrap ( ) ;
90
95
91
- fs:: remove_file ( & obj_file ) . unwrap ( ) ;
96
+ fs:: remove_file ( & full_obj_file_path ) . unwrap ( ) ;
92
97
}
93
98
94
99
fn assemble ( target : & str , cfgs : & [ & str ] ) {
@@ -157,7 +162,7 @@ pub fn assemble_blobs() {
157
162
pub fn check_blobs ( ) {
158
163
// Load each `.a` file in `bin` into memory.
159
164
let mut files_before = BTreeMap :: new ( ) ;
160
- for entry in fs:: read_dir ( "bin" ) . unwrap ( ) {
165
+ for entry in fs:: read_dir ( "cortex-m/ bin" ) . unwrap ( ) {
161
166
let entry = entry. unwrap ( ) ;
162
167
if entry. path ( ) . extension ( ) . unwrap ( ) == "a" {
163
168
files_before. insert (
@@ -176,7 +181,7 @@ pub fn check_blobs() {
176
181
assemble_blobs ( ) ;
177
182
178
183
let mut files_after = BTreeMap :: new ( ) ;
179
- for entry in fs:: read_dir ( "bin" ) . unwrap ( ) {
184
+ for entry in fs:: read_dir ( "cortex-m/ bin" ) . unwrap ( ) {
180
185
let entry = entry. unwrap ( ) ;
181
186
if entry. path ( ) . extension ( ) . unwrap ( ) == "a" {
182
187
files_after. insert (
0 commit comments