diff options
Diffstat (limited to 'bin/FOCUS/FOCUS.pl')
-rwxr-xr-x | bin/FOCUS/FOCUS.pl | 203 |
1 files changed, 0 insertions, 203 deletions
diff --git a/bin/FOCUS/FOCUS.pl b/bin/FOCUS/FOCUS.pl deleted file mode 100755 index e82acfe63cc..00000000000 --- a/bin/FOCUS/FOCUS.pl +++ /dev/null @@ -1,203 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}' - & eval 'exec perl -S $0 $argv:q' - if 0; -######################################################################### -# FOCUS: A Feature Oriented Customization tool for ACE+TAO. -# -# Usage: -# ====== -# --prefix-path - gives the prefix to the place where ACE+TAO is installed -# --reactor-spl - provide the component that needs to be specialized -# --protocol-spl - provide the concrete protocol to specialize -# --output-prefix-path - -# (Optional) if specified, copies all the files to the -# output prefix. The directory structure is maintained. -# That is if foo/bar.h file was specialized. Then the -# output will be <prefix_output>/foo/bar.h -# -# Adding New Specializations -# =========================== -# (1) Add a new command line option if the specialization belongs to a -# new family of components. For example, Concurrency strategy -# (1.b) If not, then enhance exisiting option with a new value -# (2) Associate a specialization file for the concrete component being -# specialized. -# (3) Update the specializations directory appropriately to add the -# specializations file. -# -# @author Arvind S. Krishna <arvindk@dre.vanderbilt.edu> -# -# $Id$ -# -######################################################################## -use Getopt::Long; - -# This script can be invoked from anywhere. We need to add this to the -# path -use lib "$ENV{ACE_ROOT}/bin"; - -use FOCUS::Parser::FOCUSParser; - -sub usage -{ - - # How to use FOCUS - # Currently FOCUS supports the specialization of reactor and protocol - # families - my $usage = "usage: \n ./FOCUS " - . " \n --prefix-path=<path to module root>" - . " [\n --reactor-spl=<select-mt, select-st, tp-reactor>" - . " \n --protocol-spl=<iiop>" - . " \n --wait-strategy-spl=<rw>" - . " \n --output-prefix=<output path>" - . " \n --messaging-spl=<giop>" - . " \n --context-specific-optimizations=<dispatch>" - . " \n ]" - . "\n"; - print "$usage \n"; -} - -# Global Table that maps the specialization name to the file -# select => "../specializations/Reactor_Family/Select_Reactor.spl -# For each component that one needs to specialize add an entry in -# this simple global table to execute the specializations. - -# Get the ACE_ROOT ENV variable. Then the specializations -# can be accessed via $ACE_ROOT/bin/FOCUS/..... -my $spl_prefix_path = ""; -if (defined $ENV{"ACE_ROOT"}) -{ - $spl_prefix_path = $ENV{"ACE_ROOT"}; - - # Check if the prefix path ends with a / or not - # if it does not then manually add the / to it - my $last = substr ($spl_prefix_path, -1); - if ($last ne "/") - { - $spl_prefix_path = $spl_prefix_path . "/"; - } - - # Add the bin/FOCUS directory to the prefix path - $spl_prefix_path = $spl_prefix_path . "bin/FOCUS/"; - -} -else -{ - print "FOCUS: ACE_ROOT environment variable not defined. Exiting... \n"; - exit 1; -} - -my %specialization_table = ( - "select-mt", $spl_prefix_path . "specializations/Reactor_Family/Select_Reactor_MT.spl", - "select-st", $spl_prefix_path . "specializations/Reactor_Family/Select_Reactor_ST.spl", - "tp-reactor",$spl_prefix_path . "specializations/Reactor_Family/TP_Reactor.spl", - "giop", $spl_prefix_path . "specializations/Messaging_Strategy/GIOP.spl", - "iiop", $spl_prefix_path . "specializations/Protocol_Family/IIOP/iiop.spl", - "rw", $spl_prefix_path . "specializations/Wait_Strategy/Wait_On_Read.spl", - "dispatch", $spl_prefix_path . "specializations/Context-Specific-Optimizations/Dispatch-Resolution-Optimization.spl"); - -# Get the command line options -my $ret = GetOptions ("prefix-path=s" => \$prefix_path, - "reactor-spl=s" => \$reactor_type, - "protocol-spl=s" => \$protocol_type, - "messaging-spl=s" => \$messaging_type, - "wait-strategy-spl=s" => \$wait_strat_type, - "output-prefix:s" => \$output_prefix, - "context-specific-optimizations=s" => \$context_opt); - -# Check if the prefix path is specified -if (!$prefix_path) -{ - usage; - exit 1; -} - -# -# Check if the optional outputpath is specified -# if it not specified then the output_prefix will -# be same as the prefix_path. -# So if the prefix is something like: -# /build/arvindk/ACE_wrappers, then the output_prefix -# will be the same. -# -# Upshot: The source files will be directly replaced. -# -if (! $output_prefix) -{ - $output_prefix = $prefix_path; -} - -# Check if the type of each component specialized is valid! -if ($reactor_type) -{ - my $spl_file = $specialization_table {$reactor_type}; - if (! length ($spl_file)) - { - print "Invalid reactor type specified \n"; - usage; - exit 1; - } - - # specialize the Reactor component - FOCUSParser::Specialize_Components ($prefix_path, $spl_file, $output_prefix); -} - -# protocol specialization -if ($protocol_type) -{ - my $spl_file = $specialization_table {$protocol_type}; - if (! spl_file) - { - print "Invalid reactor type specified \n"; - usage; - exit 1; - } - - # specialize the Protocol component - FOCUSParser::Specialize_Components ($prefix_path, $spl_file, $output_prefix); -} - -# Wait Strategy specialization -if ($wait_strat_type) -{ - my $spl_file = $specialization_table {$wait_strat_type}; - if (! spl_file) - { - print "Invalid specialization for the Wait strategy \n"; - usage; - exit 1; - } - - # specialize the wait strategy - FOCUSParser::Specialize_Components ($prefix_path, $spl_file, $output_prefix); -} - -#Messaging specialization -if ($messaging_type) -{ - my $spl_file = $specialization_table {$messaging_type}; - if (! spl_file) - { - print "Invalid specialization for Messaging strategy \n"; - usage; - exit 1; - } - - # specialize the wait strategy - FOCUSParser::Specialize_Components ($prefix_path, $spl_file, $output_prefix); -} - -# Context specific optimizations present -if ($context_opt) -{ - my $spl_file = $specialization_table {$context_opt}; - if (! spl_file) - { - print "Invalid Context specialization optimization specified\n"; - usage; - exit 1; - } - - # specialize the wait strategy - FOCUSParser::Specialize_Components ($prefix_path, $spl_file, $output_prefix); -} |