@@ -43,7 +43,6 @@ struct Config {
43
43
// GPU backends
44
44
cuda_sdk : String ,
45
45
opencl_sdk : String ,
46
- sdk_lib_dir : String ,
47
46
}
48
47
49
48
macro_rules! t {
@@ -57,6 +56,13 @@ fn fail(s: &str) -> ! {
57
56
panic ! ( "\n {}\n \n build script failed, must exit now" , s)
58
57
}
59
58
59
+ fn dir_exists ( location : & str ) -> bool {
60
+ match fs:: metadata ( location) {
61
+ Ok ( f) => f. is_dir ( ) ,
62
+ Err ( _) => false ,
63
+ }
64
+ }
65
+
60
66
fn file_exists ( location : & str ) -> bool {
61
67
match fs:: metadata ( location) {
62
68
Ok ( f) => f. is_file ( ) ,
@@ -339,7 +345,10 @@ fn blob_backends(conf: &Config, build_dir: &std::path::PathBuf) -> (Vec<String>,
339
345
let mut backends : Vec < String > = Vec :: new ( ) ;
340
346
341
347
if conf. use_lib {
342
- let afpath = PathBuf :: from ( & env:: var ( "AF_PATH" ) . unwrap ( ) ) ;
348
+ let afpath = match env:: var ( "AF_PATH" ) {
349
+ Ok ( af_path) => PathBuf :: from ( & af_path) ,
350
+ Err ( _) => panic ! ( "Error use_lib is defined, but AF_PATH is not defined" ) ,
351
+ } ;
343
352
let libpath = afpath. join ( "lib" ) ;
344
353
backend_dirs. push ( libpath. to_str ( ) . to_owned ( ) . unwrap ( ) . to_string ( ) ) ;
345
354
} else {
@@ -354,8 +363,17 @@ fn blob_backends(conf: &Config, build_dir: &std::path::PathBuf) -> (Vec<String>,
354
363
backend_dirs. push ( format ! ( "{}\\ lib\\ x64" , conf. cuda_sdk) ) ;
355
364
backend_dirs. push ( format ! ( "{}\\ nvvm\\ lib\\ x64" , conf. cuda_sdk) ) ;
356
365
} else {
357
- backend_dirs. push ( format ! ( "{}/{}" , conf. cuda_sdk, conf. sdk_lib_dir) ) ;
358
- backend_dirs. push ( format ! ( "{}/nvvm/{}" , conf. cuda_sdk, conf. sdk_lib_dir) ) ;
366
+ let sdk_dir = format ! ( "{}/{}" , conf. cuda_sdk, "lib64" ) ;
367
+ match dir_exists ( & sdk_dir) {
368
+ true => {
369
+ backend_dirs. push ( sdk_dir) ;
370
+ backend_dirs. push ( format ! ( "{}/nvvm/{}" , conf. cuda_sdk, "lib64" ) ) ;
371
+ } ,
372
+ false => {
373
+ backend_dirs. push ( format ! ( "{}/{}" , conf. cuda_sdk, "lib" ) ) ;
374
+ backend_dirs. push ( format ! ( "{}/nvvm/{}" , conf. cuda_sdk, "lib" ) ) ;
375
+ } ,
376
+ } ;
359
377
}
360
378
}
361
379
@@ -367,7 +385,12 @@ fn blob_backends(conf: &Config, build_dir: &std::path::PathBuf) -> (Vec<String>,
367
385
if cfg ! ( windows) {
368
386
backend_dirs. push ( format ! ( "{}\\ lib\\ x64" , conf. opencl_sdk) ) ;
369
387
} else {
370
- backend_dirs. push ( format ! ( "{}/{}" , conf. opencl_sdk, conf. sdk_lib_dir) ) ;
388
+ let sdk_dir = format ! ( "{}/{}" , conf. opencl_sdk, "lib64" ) ;
389
+ if dir_exists ( & sdk_dir) {
390
+ backend_dirs. push ( sdk_dir) ;
391
+ } else {
392
+ backend_dirs. push ( format ! ( "{}/{}" , conf. opencl_sdk, "lib" ) ) ;
393
+ }
371
394
}
372
395
}
373
396
0 commit comments