summaryrefslogtreecommitdiff
path: root/modules/CIAO/bin/generate_component_mpc.pl
diff options
context:
space:
mode:
authorjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-29 21:15:18 +0000
committerjai <jai@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2007-01-29 21:15:18 +0000
commitb71531b42b3325fd6079a7039aae8641262c8adf (patch)
treea5b9aa16924c541fcb424ee9460b1ac7f5a89352 /modules/CIAO/bin/generate_component_mpc.pl
parenta0f67cc97c0050d907145e312135b60c0125e56e (diff)
downloadATCD-b71531b42b3325fd6079a7039aae8641262c8adf.tar.gz
branching/taggingDS-main
Diffstat (limited to 'modules/CIAO/bin/generate_component_mpc.pl')
-rwxr-xr-xmodules/CIAO/bin/generate_component_mpc.pl263
1 files changed, 263 insertions, 0 deletions
diff --git a/modules/CIAO/bin/generate_component_mpc.pl b/modules/CIAO/bin/generate_component_mpc.pl
new file mode 100755
index 00000000000..f4a6ec7246b
--- /dev/null
+++ b/modules/CIAO/bin/generate_component_mpc.pl
@@ -0,0 +1,263 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# Create a MPC file content for a single component implementation.
+
+use Getopt::Std;
+
+##############################################################################
+# Grab the options
+
+$flags = join (" ", @ARGV);
+
+if (!getopts ('decnip:l:u:h') || $opt_h) {
+ print "generate_component_mpc.pl [-d] [-h] component_name\n";
+ print "\n";
+ print " -d Turn on debug mode\n";
+ print " -e Eventtype declaration in IDL\n";
+ print " -p Dependent component name\n";
+ print " -l Dependent component path\n";
+ print " -i Use an executor definition IDL file\n";
+ print " -n Suppress component make/project\n";
+ print " -c Create a client makefile\n";
+ print " -u Unique project name prefix (if not defined, name for -p flag will be used. \n";
+ print "\n";
+ print "generate_component_mpc creates and save a minimum mpc file\n";
+ print "called $com_name.mpc that is needed for a single component implementation\n";
+ exit (1);
+}
+
+if (defined $opt_d) {
+ print "Debugging Turned on\n";
+
+ if (defined $opt_f) {
+ print "Dependency to $opt_f\n";
+ }
+}
+
+if ($#ARGV < 0) {
+ print STDERR "No component_name specified, use -h for help\n";
+ exit (1);
+}
+
+$com_name = shift @ARGV;
+$UCOM_NAME = uc $com_name;
+
+##############################################################################
+# Prologue
+
+if (defined $opt_n) {
+ $svr_suffix = "_skel";
+}
+else {
+ $svr_suffix = "_svnt";
+}
+
+$USVR_SUFFIX = uc $svr_suffix;
+
+if (defined $opt_p) {
+ $stub_depend = "after += $opt_p".'_stub';
+ $svnt_depend = "$opt_p".'_skel';
+ $lib_depend = "$opt_p".'_stub '."$opt_p".'_skel';
+ $client_depend = "$com_name".'_stub '."$opt_p"."_stub";
+}
+else {
+ $client_depend = "$com_name".'_stub';
+}
+
+$unique_prefix = "";
+
+if (defined $opt_u) {
+ $unique_prefix = "$opt_u" . "_";
+}
+elsif (defined $opt_p) {
+ $unique_prefix = "$opt_p" . "_";
+}
+
+if (defined $opt_l) {
+ $lib_paths = "libpaths += $opt_l";
+}
+
+if (defined $opt_c) {
+ $client_def =
+'
+project ('."$unique_prefix"."$com_name".'_client) : ciao_client_dnc {
+ exename = client
+ after += '."$client_depend
+ $lib_paths".'
+
+ IDL_Files {
+ }
+
+ Source_Files {
+ client.cpp
+ }
+}
+';
+}
+
+if (defined $opt_i) {
+ $exec_impl_idl = "$com_name".'EI.idl';
+ $exec_impl_cpp = "$com_name".'EIC.cpp';
+ $exec_idlflags =
+'
+ idlflags += -SS -St \
+ -Wb,export_macro='."$UCOM_NAME".'_EXEC_Export \
+ -Wb,export_include='."$com_name".'_exec_export.h
+';
+}
+
+
+if (! defined $opt_n) {
+ $component_def =
+'
+project('."$unique_prefix"."$com_name".'_exec) : ciao_component_dnc {
+ after += '."$unique_prefix"."$com_name"."$svr_suffix".'
+ sharedname = '."$com_name".'_exec
+ libs += '."$com_name".'_stub '."$com_name"."$svr_suffix $lib_depend
+ $lib_paths $exec_idlflags".'
+ dynamicflags = '."$UCOM_NAME".'_EXEC_BUILD_DLL
+
+ IDL_Files {'."
+ $exec_impl_idl".'
+ }
+
+ Source_Files {'."
+ $exec_impl_cpp
+ $com_name".'_exec.cpp
+ }
+}
+';
+}
+
+$no_skel = "-SS";
+$no_anys = "-St";
+$no_tie = "idlflags -= -GT";
+
+if (defined $opt_e) {
+ $no_anys = "";
+
+ if (defined $opt_n) {
+ $no_tie = "";
+ }
+}
+
+$cli_idlflags ='
+ '."$no_tie".'
+ idlflags += '."$no_anys".' \
+ -Wb,stub_export_macro='."$UCOM_NAME".'_STUB_Export \
+ -Wb,stub_export_include='."$com_name".'_stub_export.h \
+ -Wb,skel_export_macro='."$UCOM_NAME"."$USVR_SUFFIX".'_Export \
+ -Wb,skel_export_include='."$com_name"."$svr_suffix".'_export.h
+';
+
+$cli_base = "ciao_client_dnc";
+$svr_base = "ciao_servant_dnc";
+
+if (defined $opt_n) {
+ $svr_idlflags = $cli_idlflags;
+ $svr_idl = "$com_name".'.idl';
+
+ $svr_src =
+'
+ '."$com_name".'S.cpp
+';
+
+ if (! defined $opt_e) {
+ $cli_base = "taolib_with_idl";
+ $svr_base = "portableserver";
+ }
+}
+else {
+ $svr_idlflags ='
+ '."$no_tie".'
+ idlflags += '."$no_anys"." $no_skel".' \
+ -Wb,export_macro='."$UCOM_NAME"."$USVR_SUFFIX".'_Export \
+ -Wb,export_include='."$com_name"."$svr_suffix".'_export.h
+';
+
+ $cidl_block =
+'
+ CIDL_Files {
+ '."$com_name".'.cidl
+ }
+';
+
+ $svr_idl = "$com_name".'E.idl';
+
+ $svr_src =
+'
+ '."$com_name".'EC.cpp
+ '."$com_name".'S.cpp
+ '."$com_name".'_svnt.cpp
+';
+}
+
+
+
+$mpc_template = '// $Id$
+// This file is generated with "'."generate_component_mpc.pl $flags".'"
+
+project('."$unique_prefix"."$com_name".'_stub): '."$cli_base".' {'."
+ $stub_depend".'
+ sharedname = '."$com_name".'_stub
+ '."$cli_idlflags".'
+ dynamicflags = '."$UCOM_NAME".'_STUB_BUILD_DLL
+
+ IDL_Files {
+ '."$com_name".'.idl
+ }
+
+ Source_Files {
+ '."$com_name".'C.cpp
+ }
+}
+
+project('."$unique_prefix"."$com_name"."$svr_suffix".') : '."$svr_base".' {
+ after += '."$svnt_depend "."$unique_prefix"."$com_name".'_stub
+ sharedname = '."$com_name"."$svr_suffix".'
+ libs += '."$com_name".'_stub'." $lib_depend
+ $lib_paths $svr_idlflags".'
+ dynamicflags = '."$UCOM_NAME"."$USVR_SUFFIX".'_BUILD_DLL
+ '."$cidl_block".'
+ IDL_Files {
+ '."$svr_idl".'
+ }
+
+ Source_Files {'."$svr_src".' }
+}
+'."$component_def
+
+$client_def
+";
+
+##############################################################################
+# Static Stuff
+
+##############################################################################
+# Print the stuff out
+
+
+# MPC files
+open (MPCFILE, ">", "$com_name".".mpc");
+print MPCFILE $mpc_template;
+
+$ACE_ROOT= "$ENV{'ACE_ROOT'}";
+
+print "The following commands have been executed:\n\n";
+
+$command = "generate_export_file.pl $UCOM_NAME".'_STUB > '."$com_name".'_stub_export.h';
+print "\t$command"."\n";
+system ("$ACE_ROOT".'/bin/'."$command");
+
+$command = "generate_export_file.pl $UCOM_NAME"."$USVR_SUFFIX".' > '."$com_name"."$svr_suffix".'_export.h';
+print "\t$command"."\n";
+system ("$ACE_ROOT".'/bin/'."$command");
+
+if (! defined $opt_n) {
+ $command = "generate_export_file.pl $UCOM_NAME".'_EXEC > '."$com_name".'_exec_export.h';
+ print "\t$command"."\n";
+ system ("$ACE_ROOT".'/bin/'."$command");
+}