#!/usr/bin/perl -w use strict; my $avr_vectors="--add_entry __vector_0 --add_entry __vector_1 --add_entry __vector_2 --add_entry __vector_3 --add_entry __vector_4 --add_entry __vector_5 --add_entry __vector_6 --add_entry __vector_7 --add_entry __vector_8 --add_entry __vector_9 --add_entry __vector_10 --add_entry __vector_11 --add_entry __vector_12 --add_entry __vector_13 --add_entry __vector_14 --add_entry __vector_15 --add_entry __vector_16 --add_entry __vector_17 --add_entry __vector_18 --add_entry __vector_19 --add_entry __vector_20 --add_entry __vector_21 --add_entry __vector_22 --add_entry __vector_23 --add_entry __vector_24 --add_entry __vector_25 --add_entry __vector_26 --add_entry __vector_27 --add_entry __vector_28 --add_entry __vector_29 --add_entry __vector_30 --add_entry __vector_31 --add_entry __vector_32 --add_entry __vector_33 --add_entry __vector_34 --add_entry __vector_35"; my $msp_vectors="--add_entry sig_DACDMA_VECTOR --add_entry sig_PORT2_VECTOR --add_entry sig_USART1TX_VECTOR --add_entry sig_USART1RX_VECTOR --add_entry sig_PORT1_VECTOR --add_entry sig_TIMERA1_VECTOR --add_entry sig_TIMERA0_VECTOR --add_entry sig_ADC_VECTOR --add_entry sig_USART0TX_VECTOR --add_entry sig_USART0RX_VECTOR --add_entry sig_WDT_VECTOR --add_entry sig_COMPARATORA_VECTOR --add_entry sig_TIMERB1_VECTOR --add_entry sig_TIMERB0_VECTOR --add_entry sig_NMI_VECTOR --add_entry sig_UART0RX_VECTOR --add_entry sig_UART0TX_VECTOR"; sub usage () { print "\nusage: utah-cleaner [options] filename.c\n"; print "\n"; print "Options:\n"; print "\n"; print " --linux (default) Use the linux executable\n"; print " --cygwin Use the cygwin executable\n"; print "\n"; print " --avr (default) Target an avr machine\n"; print " --msp Target an msp machine\n"; print " --8051 Target an 8051 machine\n"; print " --native Target an x86 machine\n"; print "\n"; print " --nolowerconst Do not lower constants (such as sizeof)\n"; print " --noprintline Do not print original locations in output\n"; print " --help Print this help menu\n"; print "\n"; print "Cleans a single file. Result is output to filename.clean.c\n"; print "Cleaner assumes it can see the whole program.\n"; print "This is a wrapper script for simplistic and easy use.\n"; print "\n"; die; } my $vectors = $avr_vectors; my $type = "avr"; my $machine = "linux"; my $input; my $output; my $lines = ""; my $fold = ""; foreach my $arg (@ARGV) { # executing machine ######################################################### if ($arg eq "--linux") { $machine = "linux"; next; } if ($arg eq "--cygwin") { $machine = "cygwin"; next; } # destination type ########################################################## if ($arg eq "--msp") { $vectors = $msp_vectors; $type = "msp"; next; } if ($arg eq "--avr") { $vectors = $avr_vectors; $type = "avr"; next; } if ($arg eq "--8051") { $vectors = $avr_vectors; $type = "8051"; next; } if ($arg eq "--native") { $vectors = ""; $type = "native"; next; } ############################################################################# if ($arg eq "--nolowerconst") { $fold = "--noLowerConstants"; next; } if ($arg eq "--noprintline") { $lines = "--noPrintLn"; next; } if ($arg =~ m/^(([^-]+.*)(\.\S))$/) { $input = $1; $output = $2 . ".clean.c"; next; } if ($arg eq "--help") { usage (); } print "Unknown argument $arg\n"; usage(); } usage() if (!defined($input)); my $command = "cilly.utah.${machine}.${type}.valueset.may.exe" ." ". "--forceRLArgEval ${fold} ${lines} --out ${output} " . " " . "--docleaner" . " " . "${vectors} ${input}"; print "\nActual command executed: ${command}\n\n"; system $command;