@@ -9,18 +9,6 @@ use std::{
9
9
} ;
10
10
use walkdir:: WalkDir ;
11
11
12
- fn openblas_source_dir ( ) -> PathBuf {
13
- // FIXME This cannot work with cargo publish/package
14
- let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) )
15
- . parent ( )
16
- . unwrap ( )
17
- . join ( "openblas-src/source" ) ;
18
- if !path. join ( "Makefile" ) . exists ( ) {
19
- panic ! ( "OpenBLAS repository has not been cloned. Run `git submodule update --init`" ) ;
20
- }
21
- path
22
- }
23
-
24
12
/// Interface for 32-bit interger (LP64) and 64-bit integer (ILP64)
25
13
#[ derive( Debug , Clone , Copy , PartialEq , Eq , Hash ) ]
26
14
pub enum Interface {
@@ -248,7 +236,11 @@ impl Configure {
248
236
/// This means that the system environment is not appropriate to execute `make`,
249
237
/// e.g. LAPACK is required but there is no Fortran compiler.
250
238
///
251
- pub fn build < P : AsRef < Path > > ( self , out_dir : P ) -> Result < Deliverables , Error > {
239
+ pub fn build (
240
+ self ,
241
+ openblas_root : impl AsRef < Path > ,
242
+ out_dir : impl AsRef < Path > ,
243
+ ) -> Result < Deliverables , Error > {
252
244
let out_dir = out_dir. as_ref ( ) ;
253
245
if !out_dir. exists ( ) {
254
246
fs:: create_dir_all ( out_dir) ?;
@@ -260,7 +252,7 @@ impl Configure {
260
252
}
261
253
262
254
// Copy OpenBLAS sources from this crate to `out_dir`
263
- let root = openblas_source_dir ( ) ;
255
+ let root = openblas_root . as_ref ( ) ;
264
256
for entry in WalkDir :: new ( & root) {
265
257
let entry = entry. expect ( "Unknown IO error while walkdir" ) ;
266
258
let dest = out_dir. join (
@@ -324,28 +316,43 @@ mod tests {
324
316
#[ ignore]
325
317
#[ test]
326
318
fn build_default ( ) {
327
- let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) . join ( "test_build/build_default" ) ;
319
+ let root = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
328
320
let opt = Configure :: default ( ) ;
329
- let _detail = opt. build ( path) . unwrap ( ) ;
321
+ let _detail = opt
322
+ . build (
323
+ root. join ( "../openblas-src/source" ) ,
324
+ root. join ( "test_build/build_default" ) ,
325
+ )
326
+ . unwrap ( ) ;
330
327
}
331
328
332
329
#[ ignore]
333
330
#[ test]
334
331
fn build_no_shared ( ) {
335
- let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) . join ( "test_build/build_no_shared" ) ;
332
+ let root = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
336
333
let mut opt = Configure :: default ( ) ;
337
334
opt. no_shared = true ;
338
- let detail = opt. build ( path) . unwrap ( ) ;
335
+ let detail = opt
336
+ . build (
337
+ root. join ( "../openblas-src/source" ) ,
338
+ root. join ( "test_build/build_no_shared" ) ,
339
+ )
340
+ . unwrap ( ) ;
339
341
assert ! ( detail. shared_lib. is_none( ) ) ;
340
342
}
341
343
342
344
#[ ignore]
343
345
#[ test]
344
346
fn build_no_lapacke ( ) {
345
- let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) . join ( "test_build/build_no_lapacke" ) ;
347
+ let root = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
346
348
let mut opt = Configure :: default ( ) ;
347
349
opt. no_lapacke = true ;
348
- let detail = opt. build ( path) . unwrap ( ) ;
350
+ let detail = opt
351
+ . build (
352
+ root. join ( "../openblas-src/source" ) ,
353
+ root. join ( "test_build/build_no_lapacke" ) ,
354
+ )
355
+ . unwrap ( ) ;
349
356
let shared_lib = detail. shared_lib . unwrap ( ) ;
350
357
assert ! ( shared_lib. has_lapack( ) ) ;
351
358
assert ! ( !shared_lib. has_lapacke( ) ) ;
@@ -354,10 +361,15 @@ mod tests {
354
361
#[ ignore]
355
362
#[ test]
356
363
fn build_openmp ( ) {
357
- let path = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) . join ( "test_build/build_openmp" ) ;
364
+ let root = PathBuf :: from ( env ! ( "CARGO_MANIFEST_DIR" ) ) ;
358
365
let mut opt = Configure :: default ( ) ;
359
366
opt. use_openmp = true ;
360
- let detail = opt. build ( path) . unwrap ( ) ;
367
+ let detail = opt
368
+ . build (
369
+ root. join ( "../openblas-src/source" ) ,
370
+ root. join ( "test_build/build_openmp" ) ,
371
+ )
372
+ . unwrap ( ) ;
361
373
assert ! ( detail. shared_lib. unwrap( ) . has_lib( "gomp" ) ) ;
362
374
}
363
375
}
0 commit comments