0
|
1 #!perl
|
|
2
|
|
3 # mk_dep example/out/obj/lib/util/obj/util.dep
|
|
4 # util.o: example/src/util/util.c example/src/inc/util.h
|
|
5 # util.obj util.d: example/src/util/util.c example/src/inc/util.h
|
|
6 # example/out/obj/lib/util/obj/util.obj example/out/obj/lib/util/obj/util.d: example/src/util/util.c example/src/inc/util.h
|
|
7
|
|
8 my $dep_file=$ARGV[0];
|
|
9 my $obj_file=$ARGV[0];
|
|
10 my $d_file=$ARGV[0];
|
|
11
|
|
12 # construct the object file name (replace .d with .obj)
|
|
13 $obj_file =~ s/\.dep\b/.obj/;
|
|
14
|
|
15 # construct the .d file name (replace .dep with .d)
|
|
16 $d_file =~ s/\.dep\b/.d/;
|
|
17
|
|
18
|
|
19 unless (-s $dep_file) {
|
|
20 unlink $d_file;
|
|
21 unlink $dep_file;
|
|
22 die "Abort: Empty dependency file >> $dep_file <<, did the source file parse correctly ?\n"
|
|
23 }
|
|
24
|
|
25 # open the files
|
|
26 open (DEP,$dep_file)||die "can't open file\n";
|
|
27 open (DFILE,">$d_file")||die "can't open file\n";
|
|
28
|
|
29 #parse the dependency file
|
|
30 while ($line=<DEP>) {
|
|
31 # find object filename (.o) and replace it with new full
|
|
32 # object and dependency file names (.obj, .d)
|
|
33 $line =~ s/(\w+\.o)/$obj_file $d_file/;
|
|
34
|
|
35 # cope with CPP error, it sometimes appends a \ to the filename
|
|
36 # it even sometimes creates solitary \ characters
|
|
37 $line =~ s/\\([ \t]+)/$1/g;
|
|
38
|
|
39 # cyclic (henn and egg) dependency between .d files and generated files
|
|
40 # e.g msconst.cdg/rv_swe.h must be handled by busyb.pl
|
|
41 # $line =~ s/(\s)(\w+.cdg|[pPmM]_\w+.((h)|(val)))\b/$1$gen_cdginc_dir\/$2/g;
|
|
42 # $line =~ s/(\s)(rv_swe.h)\b/$1$gen_cfginc_dir\/$2/g;
|
|
43 # $line =~ s/(\s)(\w+.cfg)\b/$1$gen_cfginc_dir\/$2/g;
|
|
44
|
|
45 print DFILE $line;
|
|
46 }
|
|
47
|
|
48 close DFILE;
|
|
49 close DEP;
|
|
50
|
|
51 unlink $dep_file;
|