11use cmake:: Config ;
22use glob:: glob;
3- use walkdir:: DirEntry ;
43use std:: env;
54use std:: path:: { Path , PathBuf } ;
65use std:: process:: Command ;
6+ use walkdir:: DirEntry ;
77
88macro_rules! debug_log {
99 ( $( $arg: tt) * ) => {
@@ -13,19 +13,13 @@ macro_rules! debug_log {
1313 } ;
1414}
1515
16- fn get_cargo_target_dir ( ) -> Result < std:: path:: PathBuf , Box < dyn std:: error:: Error > > {
17- let out_dir = std:: path:: PathBuf :: from ( std:: env:: var ( "OUT_DIR" ) ?) ;
18- let profile = std:: env:: var ( "PROFILE" ) ?;
19- let mut target_dir = None ;
20- let mut sub_path = out_dir. as_path ( ) ;
21- while let Some ( parent) = sub_path. parent ( ) {
22- if parent. ends_with ( & profile) {
23- target_dir = Some ( parent) ;
24- break ;
25- }
26- sub_path = parent;
27- }
28- let target_dir = target_dir. ok_or ( "not found" ) ?;
16+ fn get_cargo_target_dir ( ) -> Result < PathBuf , Box < dyn std:: error:: Error > > {
17+ let out_dir = env:: var ( "OUT_DIR" ) ?;
18+ let path = PathBuf :: from ( out_dir) ;
19+ let target_dir = path
20+ . ancestors ( )
21+ . nth ( 3 )
22+ . ok_or ( "OUT_DIR is not deep enough" ) ?;
2923 Ok ( target_dir. to_path_buf ( ) )
3024}
3125
@@ -129,7 +123,10 @@ fn macos_link_search_path() -> Option<String> {
129123}
130124
131125fn is_hidden ( e : & DirEntry ) -> bool {
132- e. file_name ( ) . to_str ( ) . map ( |s| s. starts_with ( '.' ) ) . unwrap_or_default ( )
126+ e. file_name ( )
127+ . to_str ( )
128+ . map ( |s| s. starts_with ( '.' ) )
129+ . unwrap_or_default ( )
133130}
134131
135132fn main ( ) {
@@ -167,9 +164,19 @@ fn main() {
167164 llama_src. join ( "ggml/src" ) ,
168165 llama_src. join ( "common" ) ,
169166 ] ;
170- for entry in walkdir:: WalkDir :: new ( & llama_src) . into_iter ( ) . filter_entry ( |e| !is_hidden ( e) ) {
167+ for entry in walkdir:: WalkDir :: new ( & llama_src)
168+ . into_iter ( )
169+ . filter_entry ( |e| !is_hidden ( e) )
170+ {
171171 let entry = entry. expect ( "Failed to obtain entry" ) ;
172- let rebuild = entry. file_name ( ) . to_str ( ) . map ( |f| f. starts_with ( "CMake" ) ) . unwrap_or_default ( ) || rebuild_on_children_of. iter ( ) . any ( |src_folder| entry. path ( ) . starts_with ( src_folder) ) ;
172+ let rebuild = entry
173+ . file_name ( )
174+ . to_str ( )
175+ . map ( |f| f. starts_with ( "CMake" ) )
176+ . unwrap_or_default ( )
177+ || rebuild_on_children_of
178+ . iter ( )
179+ . any ( |src_folder| entry. path ( ) . starts_with ( src_folder) ) ;
173180 if rebuild {
174181 println ! ( "cargo:rerun-if-changed={}" , entry. path( ) . display( ) ) ;
175182 }
0 commit comments