summaryrefslogtreecommitdiff
path: root/ACE/MPC/modules/MakeProjectCreator.pm
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/MPC/modules/MakeProjectCreator.pm')
-rw-r--r--ACE/MPC/modules/MakeProjectCreator.pm105
1 files changed, 105 insertions, 0 deletions
diff --git a/ACE/MPC/modules/MakeProjectCreator.pm b/ACE/MPC/modules/MakeProjectCreator.pm
new file mode 100644
index 00000000000..3c589fed6cc
--- /dev/null
+++ b/ACE/MPC/modules/MakeProjectCreator.pm
@@ -0,0 +1,105 @@
+package MakeProjectCreator;
+
+# ************************************************************
+# Description : A Generic Make Project Creator
+# Author : Chad Elliott
+# Create Date : 2/18/2003
+# ************************************************************
+
+# ************************************************************
+# Pragmas
+# ************************************************************
+
+use strict;
+
+use MakeProjectBase;
+use ProjectCreator;
+
+use vars qw(@ISA);
+@ISA = qw(MakeProjectBase ProjectCreator);
+
+# ************************************************************
+# Data Section
+# ************************************************************
+
+my %info = (Creator::cplusplus => {'dllexe' => 'makeexe',
+ 'dll' => 'makedll',
+ 'template' => 'make',
+ },
+ Creator::csharp => {'dllexe' => 'make.net',
+ 'dll' => 'make.net',
+ 'template' => 'make.net',
+ },
+ Creator::java => {'dllexe' => 'makeexe',
+ 'dll' => 'makedll',
+ 'template' => 'make',
+ },
+ Creator::vb => {'dllexe' => 'make.net',
+ 'dll' => 'make.net',
+ 'template' => 'make.net',
+ },
+ );
+
+# ************************************************************
+# Subroutine Section
+# ************************************************************
+
+sub languageSupported {
+ return defined $info{$_[0]->get_language()};
+}
+
+
+sub escape_spaces {
+ #my $self = shift;
+ return 1;
+}
+
+
+sub get_dll_exe_template_input_file {
+ return $info{$_[0]->get_language()}->{'dllexe'};
+}
+
+
+sub get_dll_template_input_file {
+ return $info{$_[0]->get_language()}->{'dll'};
+}
+
+
+sub get_template {
+ return $info{$_[0]->get_language()}->{'template'};
+}
+
+sub fill_value {
+ my($self, $name) = @_;
+
+ if ($name eq 'compilers') {
+ ## The default compilers template variable value is determined by the
+ ## language and directly corresponds to a group of settings in the
+ ## .mpt file (make.net.mpt for csharp and makedll.mpt for all
+ ## others).
+ my $language = $self->get_language();
+ if ($language eq Creator::java) {
+ return 'java';
+ }
+ elsif ($language eq Creator::csharp) {
+ return 'gmcs';
+ }
+ else {
+ return 'gcc';
+ }
+ }
+ elsif ($name eq 'language') {
+ ## Allow the language to be available to the template. Certain
+ ## things are not used in make.mpd when the language is java.
+ return $self->get_language();
+ }
+ elsif ($name eq 'main') {
+ ## The main is needed when generating the makefiles for use with gcj.
+ my @sources = $self->get_component_list('source_files', 1);
+ my $exename = $self->find_main_file(\@sources);
+ return $exename if (defined $exename);
+ }
+
+ return undef;
+}
+1;