FreeCalypso > hg > fc-tourmaline
diff src/cs/layer1/tools/gen_intram.pl @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/layer1/tools/gen_intram.pl Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,69 @@ +#!/usr/bin/perl + + +if ($#ARGV == -1) + { + die "\nSyntax is gen_intram <C file (with extension)>\n\n"; + } + +$#ARGV == 0 or die "Incorrect number of parameters"; + +$c_input_file = @ARGV[0]; + +# ------------------------------------------------------------------------------- +# Remove .c extension and create the new filename for the processed file + +@file_name = split /\.c/, $c_input_file; +$c_output_file = join ('', @file_name, "_intram.c"); + +print "Output file: $c_output_file\n"; + +# ------------------------------------------------------------------------------- +# Generates the C file for internal RAM + +open input_stream, $c_input_file + or die "\n\n Input C file $C_input_file cannot be opened: $!\n"; + +open(output_stream,'>'.$c_output_file) + or die "\n\nCan't open output file $C_output_file: $!"; + +printf output_stream "/* ----- WARNING - File automatically generated - Do not modify it ----- */\n\n\n\n\n"; + +$d_internal_found = 0; + +# Search for data +while(<input_stream>) + { + chomp $_; + + # Search for start comment + if ( /#pragma DUPLICATE_FOR_INTERNAL_RAM_START/ ) + { + # DEBUG + #print "Found begin of string\n"; + $d_internal_found = 1; + + # Found begin internal RAM code, then output up to the end string + while(<input_stream>) + { + chomp $_; + if ( /#pragma DUPLICATE_FOR_INTERNAL_RAM_END/ ) + { + # Found end of the internal RAM code, then search for another one + # DEBUG + #print "Found end of string\n"; + last; + } + else + { + printf output_stream "%s\n", $_; + # DEBUG + #print "Copied lines - $_\n"; + } + } + + } + } + +close input_stream; +close output_stream;