summaryrefslogtreecommitdiff
path: root/samwise/PerlSam/Generator/Borland.pm
diff options
context:
space:
mode:
Diffstat (limited to 'samwise/PerlSam/Generator/Borland.pm')
-rw-r--r--samwise/PerlSam/Generator/Borland.pm383
1 files changed, 0 insertions, 383 deletions
diff --git a/samwise/PerlSam/Generator/Borland.pm b/samwise/PerlSam/Generator/Borland.pm
deleted file mode 100644
index a26486c2720..00000000000
--- a/samwise/PerlSam/Generator/Borland.pm
+++ /dev/null
@@ -1,383 +0,0 @@
-# $Id$
-
-package PerlSam::Generator::Borland;
-
-use Cwd;
-use Data::Dumper;
-use FileHandle;
-use strict;
-
-###############################################################################
-# Forward Declarations
-
-sub GetIncDir ($);
-
-###############################################################################
-# Constructor
-
-sub new (@)
-{
- my $proto = shift;
- my $class = ref ($proto) || $proto;
- my $self = {};
-
- bless ($self, $class);
- return $self;
-}
-
-###############################################################################
-# Methods
-
-sub GenerateWorkspace (\%)
-{
- my $self = shift;
- my $data = shift;
-
- my $output;
-
- $output .= "#\n";
- $output .= "# \$Id\$\n";
- $output .= "#\n";
- $output .= "# Borland Workspace Makefile generated by the Samwise Compiler\n";
- $output .= "#\n";
- $output .= "\n";
-
- #
- # Output the list of subdirectories, if there are any
- #
-
- if (scalar @{$data->{WORKSPACE}->{SUBDIRS}} > 0) {
- $output .= "# Subdirectories\n";
- $output .= "\n";
- $output .= "DIRS =";
-
- foreach my $dir (@{$data->{WORKSPACE}->{SUBDIRS}}) {
- $output .= " \\\n $dir";
- }
- $output .= "\n";
- $output .= "\n";
- }
-
- #
- # Output the list of projects, if there are any
- #
-
- if (scalar @{$data->{WORKSPACE}->{PROJECTLINKS}->{LIST}} > 0) {
- $output .= "# Subprojects\n";
- $output .= "\n";
- $output .= "MAKEFILES =";
-
- foreach my $project (@{$data->{WORKSPACE}->{PROJECTLINKS}->{LIST}}) {
- $output .= " \\\n $project.bor";
- }
- $output .= "\n";
- $output .= "\n";
- }
-
- $output .= "!include <\$(ACE_ROOT)\\include\\makeinclude\\recurse.bor>\n";
-
- my $file_name = "Makefile.bor";
-
- print "Creating Workspace: $file_name\n";
-
- my $file_handle = new FileHandle ($file_name, "w");
- print $file_handle $output;
-}
-
-sub GenerateProjects (\%)
-{
- my $self = shift;
- my $projectdata = shift;
-
- foreach my $project (sort keys %{$projectdata->{PROJECTS}}) {
- my $output;
- my $data = $projectdata->{PROJECTS}->{$project};
-
- my @basenames = PerlSam::Generator::ExpandBaseNames (@{$data->{LIBS}});
-
- #
- # Add generated files to list of sources
- #
-
- PerlSam::Generator::ExpandIDLFiles(%{$data});
-
- #
- # Output the Makefile header
- #
-
- $output .= "#\n";
- $output .= "# \$Id\$\n";
- $output .= "#\n";
- $output .= "# Borland Project Makefile generated by the Samwise Compiler\n";
- $output .= "# Project Description: $data->{DESCRIPTION}\n";
- $output .= "#\n\n";
-
- #
- # Output the target
- #
-
- $output .= "NAME = $data->{TARGET}\n\n";
-
- #
- # Look through all source files and store them for later use
- #
-
- my @idlfiles; # List of IDL files
- my @objfiles; # List of object files
- my @resfiles; # List of resource files
- my %filedirs; # Hash of all the subdirs used for source files
-
- foreach my $source (sort keys %{$data->{SOURCES}}) {
- if (defined $data->{SOURCES}->{$source}->{TYPE}
- && ($data->{SOURCES}->{$source}->{TYPE} eq 'idl'
- || $data->{SOURCES}->{$source}->{TYPE} eq 'clientidl'))
- {
- push @idlfiles, $source;
- }
- elsif ($source =~ m/(.*)\.cpp$/
- && (!defined $data->{SOURCES}->{$source}->{TYPE}
- || $data->{SOURCES}->{$source}->{TYPE} ne 'template'))
- {
- $source = $1;
-
- # Check for source file in a subdirectory
-
- if ($source =~ m/^(.*)\/([^\/]+)$/) {
- %filedirs->{$1} = 1;
- $source = $2;
- }
-
- push @objfiles, $source . '.obj';
- }
- elsif ($source =~ m/^(.*)\.rc$/) {
- $source = $1;
-
- # Check for source file in a subdirectory
-
- if ($source =~ m/^(.*)\/([^\/]+)$/) {
- %filedirs->{$1} = 1;
- $source = $2;
- }
-
- push @resfiles, $source . '.res';
- }
- }
-
- #
- # Output the list of IDL files
- #
-
- if (scalar (@idlfiles) > 0) {
- $output .= "IDLFILES =";
- foreach my $idlfile (@idlfiles) {
- $output .= " \\\n\t\$(IDLDIR)\\$idlfile";
- }
- $output .= "\n\n";
- }
-
- #
- # Output the list of object files
- #
-
- if (scalar (@objfiles) > 0) {
- $output .= "OBJFILES =";
- foreach my $objfile (sort @objfiles) {
- $output .= " \\\n\t\$(OBJDIR)\\$objfile";
- }
- $output .= "\n\n";
- }
-
- #
- # Output the list of resource files
- #
-
- if (scalar (@resfiles) > 0) {
- $output .= "RESOURCE =";
- foreach my $resfile (@resfiles) {
- $output .= " \$(OBJDIR)\\$resfile";
- }
- $output .= "\n\n";
- }
-
- #
- # Output the compiler flags
- #
-
- $output .= "CFLAGS =";
-
- foreach my $basename (@basenames) {
- $output .= " \\\n\t\$(" . uc $basename . "_CFLAGS)";
- }
-
- # If we are a library, also output our CFLAGS
-
- if (defined $data->{LIBINFO}->{BASE}) {
- $output .= " \\\n\t\$(" . uc $data->{LIBINFO}->{BASE} . "_CFLAGS)";
- }
-
- # And if we are a library, also define our export macro(s)
-
- if (defined $data->{LIBINFO}->{EXPORT}) {
- foreach my $export (split / /, $data->{LIBINFO}->{EXPORT}) {
- $output .= " \\\n\t-D" . uc $export . "_BUILD_DLL";
- }
- }
-
- $output .= "\n\n";
-
- #
- # Output the list of libraries
- #
-
- if ($#basenames >= 0) {
- $output .= "LIBFILES =";
- foreach my $basename (@basenames) {
- $output .= " \\\n\t\$(" . uc $basename . "_LIB)";
- }
- $output .= "\n\n";
- }
-
- #
- # Output the CPPDIR and IDLDIR
- #
-
- $output .= "CPPDIR = .";
- foreach my $filedir (sort keys %filedirs) {
- $output .= ";$filedir";
- }
- $output .= "\n\n";
-
- if (scalar (@idlfiles) > 0) {
- # $TODO Can we have multiple subdirs here, like with CPPDIR?
-
- $output .= "IDLDIR = .\n\n";
- }
-
- #
- # Output install information for libraries
- #
-
- if ($data->{TYPE} eq 'library') {
-
- # INCDIR_NAME is based of the libinfo include data
-
- if (defined $data->{LIBINFO}->{INCLUDE}) {
- $output .= "INCDIR_NAME = " . GetIncDir ($data->{LIBINFO}->{INCLUDE}) . "\n";
- }
-
- # INCLUDES lists all the template, header, and inline files.
-
- $output .= "INCLUDES =";
-
- foreach my $source (sort keys %{$data->{SOURCES}}) {
- my $filetype = $data->{SOURCES}->{$source}->{TYPE};
- if (defined $filetype && $filetype eq 'template') {
- $output .= " \\\n\t$source";
- }
-
- $source =~ s/\//\\/g;
-
- if ($source =~ m/\.(h|i|inl|pidl)$/) {
- $output .= " \\\n\t$source";
- }
- }
-
- $output .= "\n\n";
- }
-
- #
- # Output this command if we have IDL files
- #
-
- if (scalar (@idlfiles) > 0) {
- $output .= "all: idl_src_files\n\n";
- }
-
- #
- # Output the inclusion of a system *.bor file
- #
-
- if ($data->{TYPE} eq 'executable') {
- if (defined $data->{INSTALL} && $data->{INSTALL} eq 'yes') {
- $output .= "!include <\$(ACE_ROOT)\\include\\makeinclude\\build_core_exe.bor>";
- }
- else {
- $output .= "!include <\$(ACE_ROOT)\\include\\makeinclude\\build_exe.bor>";
- }
- }
- elsif ($data->{TYPE} eq 'library') {
- $output .= "!include <\$(ACE_ROOT)\\include\\makeinclude\\build_core_library.bor>\n";
- }
-
- #
- # IDL files need some explicit dependencies defined
- #
-
- if (scalar (@idlfiles) > 0) {
- $output .= "\n#\n# IDL Build rules\n#\n\n";
-
- $output .= "idl_src_files: \$(IDLFILES:.idl=C.cpp) \$(IDLFILES:.idl=S.cpp)\n\n";
-
- foreach my $idlfile (@idlfiles) {
- my $idlroot = "";
-
- if ($idlfile =~ m/^(.*)\.idl$/) {
- $idlroot = $1;
- }
-
- $output .= "\$(IDLDIR)\\" . $idlroot . "C.cpp \$(IDLDIR)\\";
- $output .= $idlroot . "S.cpp: ";
- $output .= "\$(IDLDIR)\\$idlfile\n";
- $output .= "\t\$(CORE_BINDIR)\\tao_idl -g \$(CORE_BINDIR)\\gperf.exe \\\n";
- $output .= "\t\t$data->{SOURCES}->{$idlfile}->{OPTS} \\\n";
- $output .= "\t\t\$**\n\n";
- }
- }
-
- #
- # Save the output to the file
- #
-
- my $filename = $project . ".bor";
-
- print "Creating Project: $filename\n";
-
- my $filehandle = new FileHandle ($filename, "w");
-
- if (!defined $filehandle) {
- print STDERR "Error: Could not open $filename for writing: $!\n";
- return;
- }
-
- print $filehandle $output;
- }
-}
-
-###############################################################################
-# Internal Methods
-
-sub GetIncDir ($)
-{
- my $incdir = shift;
- my $curdir = getcwd ();
- my $result = "";
-
- #
- # Replace each ../ with the corresponding value from $curdir
- #
-
- while ($incdir =~ m/..\/(.*)/) {
- $incdir = $1;
- if ($curdir =~ m/(.*)\/(.*)/) {
- $curdir = $1;
- $result = "$2\\" . $result;
- }
- }
-
- # We don't want to end with a \, so remove it.
-
- $result =~ s/\\$//;
-
- return $result;
-}
-1; \ No newline at end of file