FreeCalypso > hg > tcs211-l1-reconst
diff g23m/system/busyb/tools/make_cfg.pl @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/system/busyb/tools/make_cfg.pl Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,87 @@ +#!perl -w +use strict; + +# import some modules +use File::Spec; +use File::Copy; +use File::Glob ':glob'; +use File::Compare; +use File::stat; + +if (@ARGV != 3) { + print "usage: make_cfg <ssa_script> <outputDir> <hw_config>\n"; + print "example: make_cfg ../ssa/system/update_exported_makefiles.pl ../__out__/ssa_config GPRS_DSAMPLE_AMR_NW4\n"; + exit; +} + +my $script; +my $scriptDir; +my $outDir; +my $config=$ARGV[2]; + +# find the perl script +(-e $ARGV[0]) || die "Script $ARGV[0] could not be found!"; +($_,$scriptDir,$script) = File::Spec->splitpath($ARGV[0]); +#print "$scriptDir\n"; + +# calculate outputdir relative to script dir, so we don't need to CD back +$outDir = calcRelativePathFromLocation($ARGV[1], $scriptDir); +#print "$outDir\n"; + +# cd into the script directory and call it +chdir($scriptDir) || die "Can't cd to $scriptDir: $!\n"; + +# delete gen_cfg_values.mak to force re-generation +(-e "gen_cfg_values.mak") && unlink("gen_cfg_values.mak"); + +# call the script +system ("perl $script $config") && die "Can't call $script: $!\n"; + +# copy all cfg files +my @cfgFiles = bsd_glob("config/*.cfg"); + +foreach (@cfgFiles) { + my ($drive,$directories,$file) = File::Spec->splitpath($_); + if(compare("$directories$file","$outDir/$file") != 0) + { + print "Copying $_ to $outDir !\n"; + copy($_,$outDir ) || die "Could not copy $_ to $outDir: $!\n"; + } +} + +# move rv_swe.h to assure that this one is used +my $rvFile = "../Riviera/rv/rv_swe.h"; +my $newRvFile = "$outDir/rv_swe.h"; + +if(compare($rvFile,$newRvFile) != 0) +{ + print "Copying $rvFile to $outDir !\n"; + copy($rvFile, $outDir ) || die "Could not copy $rvFile to $outDir: $!\n"; +} + +# if rv_swe.h in SSA has been created - remove it +if(-w $rvFile) { + print "Deleting $rvFile !\n"; + unlink($rvFile) || die "Could not delete $rvFile: $!\n"; +} + +# if the file is older than the script (thanks to ABC) touch it; +if (stat($newRvFile)->mtime < stat($script)->mtime) { + my $now = time; + utime ($now, $now, $newRvFile) ; +} + + +######################################################## +# correct obscure behavior of File::Spec->abs2rel, +# which inserts a drive letter befor a relative path !!! +# +sub calcRelativePathFromLocation +{ + my ($drive,$directories,$file); + + ($drive,$directories,$file) = File::Spec->splitpath( File::Spec->abs2rel ($_[0], $_[1]) ); + + return File::Spec->catpath("",$directories,$file); +} +########################################################