aboutsummaryrefslogtreecommitdiff
path: root/scripts/bb_mkdep.c
diff options
context:
space:
mode:
author"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-06 14:47:16 +0000
committer"Vladimir N. Oleynik" <dzo@simtreas.ru>2005-10-06 14:47:16 +0000
commitd5f2a18e19c97d3efaf3ab72375e886a0f5b94a7 (patch)
treea6bd94f04b29ed4d9a17efccd4df07cab912b4ce /scripts/bb_mkdep.c
parent82338d8460bfadd6328ecaa128889b0575d28e9f (diff)
downloadbusybox-w32-d5f2a18e19c97d3efaf3ab72375e886a0f5b94a7.tar.gz
busybox-w32-d5f2a18e19c97d3efaf3ab72375e886a0f5b94a7.tar.bz2
busybox-w32-d5f2a18e19c97d3efaf3ab72375e886a0f5b94a7.zip
bb_mkdep can use src outside now
Diffstat (limited to 'scripts/bb_mkdep.c')
-rw-r--r--scripts/bb_mkdep.c22
1 files changed, 21 insertions, 1 deletions
diff --git a/scripts/bb_mkdep.c b/scripts/bb_mkdep.c
index 89b4e997e..afc8a98d1 100644
--- a/scripts/bb_mkdep.c
+++ b/scripts/bb_mkdep.c
@@ -624,6 +624,9 @@ static int show_dep(int first, bb_key_t *k, const char *name)
624 return first; 624 return first;
625} 625}
626 626
627static char *pwd;
628static char *replace;
629
627static struct stat st_kp; 630static struct stat st_kp;
628static int dontgenerate_dep; 631static int dontgenerate_dep;
629 632
@@ -670,11 +673,23 @@ parse_chd(const char *fe, const char *p, size_t dirlen)
670 if(*e == 'c') { 673 if(*e == 'c') {
671 /* *.c -> *.o */ 674 /* *.c -> *.o */
672 *e = 'o'; 675 *e = 'o';
676 if(replace) {
677 /* /src_dir/path/file.o to path/file.o */
678 e = fp + strlen(replace);
679 while(*e == '/')
680 e++;
681 /* path/file.o to pwd/path/file.o */
682 e = fp = bb_asprint("%s/%s", pwd, e);
683 }
684 } else {
685 e = NULL;
673 } 686 }
674 first = show_dep(1, Ifound, fp); 687 first = show_dep(1, Ifound, fp);
675 first = show_dep(first, key_top, fp); 688 first = show_dep(first, key_top, fp);
676 if(first == 0) 689 if(first == 0)
677 putchar('\n'); 690 putchar('\n');
691 if(replace && e)
692 free(e);
678 } 693 }
679 return NULL; 694 return NULL;
680 } else if(S_ISDIR(st.st_mode)) { 695 } else if(S_ISDIR(st.st_mode)) {
@@ -711,6 +726,10 @@ static void scan_dir_find_ch_files(const char *p)
711 size_t dirlen; 726 size_t dirlen;
712 727
713 dirs = llist_add_to(NULL, bb_simplify_path(p)); 728 dirs = llist_add_to(NULL, bb_simplify_path(p));
729 if(strcmp(dirs->data, pwd))
730 replace = bb_xstrdup(dirs->data);
731 else
732 replace = NULL;
714 /* emulate recursive */ 733 /* emulate recursive */
715 while(dirs) { 734 while(dirs) {
716 d_add = NULL; 735 d_add = NULL;
@@ -736,9 +755,10 @@ static void scan_dir_find_ch_files(const char *p)
736 } 755 }
737 dirs = d_add; 756 dirs = d_add;
738 } 757 }
758 free(replace);
759 replace = NULL;
739} 760}
740 761
741static char *pwd;
742 762
743int main(int argc, char **argv) 763int main(int argc, char **argv)
744{ 764{