# HG changeset patch # User Mychaela Falconia # Date 1602833096 0 # Node ID 021ac9f5a765f946dd4c75b4206afdac01eb7713 # Parent 84160e9a0383aba79b8e541963eb3f57b02fc6fc scripts/ti/make_cmd.pl: import from Magnetite diff -r 84160e9a0383 -r 021ac9f5a765 scripts/ti/make_cmd.pl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/ti/make_cmd.pl Fri Oct 16 07:24:56 2020 +0000 @@ -0,0 +1,93 @@ +#!perl + +# generate a dynamic Linker command file +# PARAMETER ARE: + +# 0 : Name of the file with the parameters +# 1 : Name of the Linker command file (output) +# 2 : value of the TOOL_CHOICE variable +# 3 : Name of the Linker command file template +# 4 - (n-1) : Name of the libraries + +#$argcount = @ARGV; +my $lnk_opt_file=$ARGV[0]; +my $cmd_file=$ARGV[1]; +my $toolchoice_type = $ARGV[2]; +my $cmd_file_temp=$ARGV[3]; +my %section; + + +open (TMP,$lnk_opt_file)||die "can't open file\n"; + +# parse the parameter file and construct replacement strings +# +# the file contains entries of the following form +# (BSS_LIBS (.bss)) +# or +# (BSS_LIBS (.bss) CONST_LIBS (.text, .const)) +# or +# (BSS_LIBS (.bss)) (BSS_LIBS (.bss) CONST_LIBS (.text, .const)) +# +# the syntax is as follows, white space and line breaks are not significant +# := +# :=
+#
:= +# := ( +# := ) +# := [A-Za-z_]+ +# := [^()]+ +# +# each entry will be linked with one library passed on the command line + +my $line; +my $count; +while ($line=) { + # find + while ($line =~ /\((\s*\w+\s*\([^\(\)]+\))+\)/) { + $line = $'; + $match = $&; + # find + while ($match =~ /\s*(\w+)\s*(\([^\(\)]+\))/ ) { + $match = $'; + $section{"$1"} .= "$ARGV[$count+4] $2\n"; + } + $count++; + } +} + +open (TMP1, ">$cmd_file"); +open (TMP,$cmd_file_temp); +while ($line=) { + my $replaced = 0; + foreach $key (keys(%section)) { + if ($line =~ /\($key\)/g) { + # insert the Libs + $line = $section{$key}; + $replaced = 1; + } + } + # NEW COMPILER MANAGEMENT + # If use of VISUAL LINKER, needs to manage trampoline download. + # Case of: + # - TOOL_CHOICE == 0 => compiler v1.22e with vlinker v1.9902 + # - TOOL_CHOICE == 3 => compiler & linker v2.54 + + if ($toolchoice_type == 0) { + $line =~ s(COMMENT1START)(/*); + $line =~ s(COMMENT1END)(*/); + $line =~ s(COMMENT2START)(); + $line =~ s(COMMENT2END)(); + } else { + $line =~ s(COMMENT1START)(); + $line =~ s(COMMENT1END)(); + $line =~ s(COMMENT2START)(/*); + $line =~ s(COMMENT2END)(*/); + } + + if ($replaced || !($line =~ /^\s*\$\(\s*\w+\s*\)\s*$/ )) { + print TMP1 $line; + } +} +close TMP; +close TMP1; +unlink $tmp_file;