diff --git a/fpga_flow/scripts/rewrite_path_in_file.pl b/fpga_flow/scripts/rewrite_path_in_file.pl new file mode 100644 index 000000000..8a952e574 --- /dev/null +++ b/fpga_flow/scripts/rewrite_path_in_file.pl @@ -0,0 +1,138 @@ +#!usr/bin/perl -w +use strict; +use Cwd; +#use Shell; +use FileHandle; +#Use the time +use Time::gmtime; + +my $arch_file; +my $new_arch_file; +my $overwrite = "TRUE"; +my $keyword = "OPENFPGAPATHKEYWORD"; +my $default_keyword = "TRUE"; +my $change_to; +my $folder_top = "OpenFPGA"; + +sub print_usage() +{ + print "Usage:\n"; + print " perl [-options]\n"; + print " Options:(Mandatory!)\n"; + print " -i \n"; + print " Options:(Optional)\n"; + print " -o \n"; + print " -k \n"; + print "\n"; + return; +} + +sub opts_read() +{ + if ($#ARGV == -1){ + print "Error: Not enough input argument!\n"; + &print_usage(); + exit(1); + } else { + for (my $iargv = 0; $iargv < $#ARGV+1; $iargv++){ + if ("-i" eq $ARGV[$iargv]){ + $arch_file = $ARGV[$iargv+1]; + $iargv++; + } elsif ("-o" eq $ARGV[$iargv]){ + $new_arch_file = $ARGV[$iargv+1]; + $overwrite = "FALSE"; + $iargv++; + } elsif ("-k" eq $ARGV[$iargv]){ + $keyword = $ARGV[$iargv+1]; + $change_to = $ARGV[$iargv+2]; + $default_keyword = "FALSE"; + $iargv++; + $iargv++; + } else { + die "WRONG ARGUMENT"; + } + } + } + return; +} + +sub rewriting_required_check($) +{ + my ($arch) = @_; + open(F, $arch); + my @lines=; + close F; + my $grep_result = grep ($keyword, @lines); + if($grep_result >= 1){ + print "Rewrite needed\n"; + return 1; + } else { + print "Rewrite NOT needed\n"; + return 0; + } +} + +sub save_original($) +{ + my ($template) = @_; + my $renamed_template = "$template".".bak"; + rename($template, $renamed_template); + + return $renamed_template; +} + +sub findPath(){ + my $path; + my $dir = cwd; + my @folders = split("/", $dir); + for(my $count = 0; $count < ($#folders -1); $count++){ + if($folders[$count] eq ""){ + } else { + $path = "$path"."/"."$folders[$count]"; + if($folders[$count] eq $folder_top){ + print "$path\n"; + return $path; + } + } + } + die "ERROR: Script launched from the outside of the $folder_top folder!\n"; +} + +sub rewrite_file($ $) +{ + my ($arch, $template) = @_; + open(IN, '<'.$template); + open(OUT, '>'.$arch); + + if($default_keyword eq "TRUE"){ + my $myPath = &findPath(); + while(){ + $_ =~ s/$keyword/$myPath/g; + print OUT $_; + } + } else { + while(){ + $_ =~ s/$keyword/$change_to/g; + print OUT $_; + } + } + return; +} + +sub main() +{ + &opts_read(); + my $rewrite_needed = &rewriting_required_check($arch_file); + if($rewrite_needed == 1){ + if($overwrite eq "TRUE"){ + my $template_file = &save_original($arch_file); + &rewrite_file($arch_file, $template_file); + } else { + &rewrite_file($new_arch_file, $arch_file); + } + } + return; +} + +&main(); +exit(1);