OpenCores
URL https://opencores.org/ocsvn/core_arm/core_arm/trunk

Subversion Repositories core_arm

[/] [core_arm/] [trunk/] [build/] [trans.pl] - Blame information for rev 5

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 tarookumic
#!/usr/bin/perl
2
 
3
if ($#ARGV < 1) {
4
    die ("# Call: trans.pl <basedir> [replacelib <lib> <with>]\n");
5
}
6
$base = $ARGV[0];
7
 
8
$cmd = "find $base";
9
print STDERR $cmd;
10
$a = `$cmd`;
11
@a = split("\n",$a);
12
%h = ();
13
%d = ();
14
$cmd = $ARGV[1];
15
$cmd_arg1 = $ARGV[2];
16
$cmd_arg2 = $ARGV[3];
17
 
18
foreach $f (@a) {
19
    if ( $f =~ /\.vhd$/) {
20
        ($fn,$pn) = splitpath($f);
21
        if ($fn =~ /^([^\.]*)\.vhd$/) {
22
            $h{$1} = $f;
23
        }
24
    }
25
}
26
 
27
foreach $f (@a) {
28
    $dep = "$f: ";
29
    if ( $f =~ /\.vhd$/) {
30
        if (1) { #if (!$noread{$f}){
31
            ($fn,$pn) = splitpath($f);
32
            if (open(FILEH, "$f")) {
33
                close(FILEH);
34
                $fc = readin($f);
35
                if ($cmd eq "replacelib") {
36
                    if ($cmd_arg1 eq "" || $cmd_arg2 eq "") {
37
                        die ("Use: trans.pl <basedir> replacelib <lib> <with>\n");
38
                    }
39
                    leonconfig($f,$fn,$pn,$fc,$cmd_arg1,$cmd_arg2);
40
                }
41
            }
42
        }
43
    }
44
}
45
 
46
sub leonconfig {
47
    my ($f,$fn,$pn,$fc,$cmd_arg1,$cmd_arg2) = @_;
48
    if (!($fc =~(/\$\(trans-do-not-touch\)/))) {
49
        if (compname($f) eq "$cmd_arg1") {
50
            if ($fc =~ /package $cmd_arg1 is/) {
51
                $fc =~ s/package $cmd_arg1 is/package $cmd_arg2 is/gi;
52
                $f =~ s/$cmd_arg1.vhd/$cmd_arg2.vhd/gi;
53
                print ("Writing $f\n");
54
                if (open (FILEH,">$f")) {
55
                    print FILEH $fc;
56
                    close FILEH;
57
                } else {
58
                    print "writing \"$f\": $!\n";
59
                }
60
            } else {
61
                print ("Error: \"package $cmd_arg1 is\" in $f not found\n");
62
            }
63
        } else {
64
            if ($fc =~ /use[[:space:]]*work\.$cmd_arg1\.all/) {
65
                $fc =~ s/use[[:space:]]*work\.$cmd_arg1\.all/use work.$cmd_arg2.all/gi;
66
                if (-f $f) {
67
                    print ("Backup $f:\n");
68
                    print `cp $f $f.bck`;
69
                }
70
                print ("Writing $f\n");
71
                if (open (FILEH,">$f")) {
72
                    print FILEH $fc;
73
                    close FILEH;
74
                } else {
75
                    print "writing \"$f\": $!\n";
76
                }
77
            }
78
        }
79
    }
80
}
81
 
82
sub tagfile() {
83
    my ($n) = @_;
84
    $n =~ s/\//_/gi;
85
    $n =~ s/\.vhd$//gi;
86
    $n = "tags/$n";
87
    return $n;
88
}
89
 
90
sub compname() {
91
    my ($n) = @_;
92
    my ($f,$p) = splitpath($n);
93
    $f =~ s/\.vhd$//gi;
94
    return $f;
95
}
96
 
97
sub splitpath() {
98
    my ($n) = @_;
99
    my @n = split("/",$n);
100
    if ($#n > -1) {
101
        my $f = splice(@n,$#n,1);
102
        my $p = join("/",@n);
103
        return ($f,$p);
104
    }
105
    return $n;
106
}
107
 
108
 
109
sub readin() {
110
    my ($n) = @_;
111
    my $l = "";
112
    if (open(RF, "$n")) {
113
        while (<RF>) {
114
            $l .= $_;
115
        }
116
        close(RF);
117
    } else {
118
        print "opening \"$n\": $!\n";
119
    }
120
    return $l;
121
}
122
 
123
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.