diff options
Diffstat (limited to 'bin/MakeProjectCreator/modules/GNUACEWorkspaceCreator.pm')
-rw-r--r-- | bin/MakeProjectCreator/modules/GNUACEWorkspaceCreator.pm | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/bin/MakeProjectCreator/modules/GNUACEWorkspaceCreator.pm b/bin/MakeProjectCreator/modules/GNUACEWorkspaceCreator.pm deleted file mode 100644 index b36d7f167db..00000000000 --- a/bin/MakeProjectCreator/modules/GNUACEWorkspaceCreator.pm +++ /dev/null @@ -1,264 +0,0 @@ -package GNUACEWorkspaceCreator; - -# ************************************************************ -# Description : A GNU Workspace (GNUmakefile) creator for ACE -# Author : Chad Elliott -# Create Date : 5/13/2002 -# ************************************************************ - -# ************************************************************ -# Pragmas -# ************************************************************ - -use strict; -use File::Basename; - -use GNUACEProjectCreator; -use WorkspaceCreator; - -use vars qw(@ISA); -@ISA = qw(WorkspaceCreator); - -# ************************************************************ -# Data Section -# ************************************************************ - -my($base) = 'GNUmakefile'; - -# ************************************************************ -# Subroutine Section -# ************************************************************ - -sub generate_implicit_project_dependencies { - #my($self) = shift; - return 1; -} - - -sub workspace_file_name { - my($self) = shift; - return $self->get_modified_workspace_name($base, ''); -} - - -sub workspace_per_project { - #my($self) = shift; - return 1; -} - - -sub pre_workspace { - my($self) = shift; - my($fh) = shift; - my($crlf) = $self->crlf(); - - print $fh '# -*- makefile -*-', $crlf, - '#-------------------------------------------------------------------------', $crlf, - '# GNU ACE Workspace', $crlf, - '#', $crlf, - '# $Id$', $crlf, - '#', $crlf, - '# This file was generated by MPC. Any changes made directly to', $crlf, - '# this file will be lost the next time it is generated.', $crlf, - '#', $crlf, - '# MPC Command:', $crlf, - "# $0 @ARGV", $crlf, - '#', $crlf, - '#-------------------------------------------------------------------------', $crlf, - 'MAKEFILE = ', $self->get_modified_workspace_name($base, '', 1), - $crlf; -} - - -sub write_comps { - my($self) = shift; - my($fh) = shift; - my($crlf) = $self->crlf(); - my(%targnum) = (); - my($pjs) = $self->get_project_info(); - my($named) = (defined $ENV{MPC_GNUACE_NAMED_TARGETS}); - my(@list) = $self->number_target_deps($self->get_projects(), - $pjs, \%targnum, - $named ? 0 : 1); - - ## Print out some preliminary information - print $fh $crlf, - "ifeq (\$(findstring k,\$(MAKEFLAGS)),k)$crlf", - " KEEP_GOING = -$crlf", - "endif$crlf$crlf", - "include \$(ACE_ROOT)/include/makeinclude/macros.GNU$crlf", - $crlf; - - if ($named) { - $self->write_named_targets($fh, $crlf, \%targnum, \@list); - } - else { - ## Determine the ordering of the sub-directories - my(@dirs) = (); - my(%found) = (); - foreach my $file (reverse @list) { - my($dir) = $self->get_first_level_directory($file); - if ($dir ne '.') { - if (!defined $found{$dir}) { - $found{$dir} = 1; - unshift(@dirs, $dir); - } - } - } - my($need_dirs) = ($#dirs > -1); - - ## Store the local projects in a separate list - my(@lprj) = (); - my(%dirprj) = (); - foreach my $project (@list) { - if ($project !~ /\//) { - push(@lprj, $project); - if ($need_dirs && defined $targnum{$project}) { - foreach my $number (@{$targnum{$project}}) { - if ($list[$number] =~ /\//) { - ## If any local project depends on a project that is not - ## in this directory, we can not rely on the directory - ## recursion to get the correct dependencies. We will do - ## all projects as local targets. - @lprj = (); - foreach my $prj (@list) { - push(@lprj, $prj); - if ($prj =~ /\//) { - $dirprj{$prj} = 1; - } - } - $need_dirs = 0; - last; - } - } - if (!$need_dirs) { - last; - } - } - } - } - - if ($#lprj >= 0) { - ## Print out the all target first. This will allow multiple projects - ## within the same directory to build in parallel. - print $fh 'all:'; - foreach my $project (@lprj) { - print $fh ' ', $$pjs{$project}->[0]; - } - print $fh $crlf; - if ($need_dirs) { - foreach my $dir (@dirs) { - print $fh "\t\$(KEEP_GOING)\@cd $dir && ", - "\$(MAKE) -f \$(MAKEFILE) \$(\@)$crlf"; - } - } - - ## Print out each target separately. Make can decide on which - ## targets can be built in parallel because we add the local - ## dependencies. - foreach my $project (@lprj) { - print $fh $crlf, '.PHONY: ', $$pjs{$project}->[0], - $crlf, $$pjs{$project}->[0], ':'; - if (defined $targnum{$project}) { - foreach my $number (@{$targnum{$project}}) { - print $fh ' ', $$pjs{$list[$number]}->[0]; - } - } - print $fh $crlf, - "\t\$(KEEP_GOING)\@"; - if (defined $dirprj{$project}) { - print $fh "cd ", $self->mpc_dirname($project), - " && \$(MAKE) -f ", basename($project), $crlf; - } - else { - print $fh "\$(MAKE) -f $project$crlf"; - } - } - print $fh $crlf, - 'REMAINING_TARGETS := ', - '$(subst all, , $(TARGETS_NESTED:.nested=)) $(CUSTOM_TARGETS)', - $crlf; - } - else { - print $fh 'REMAINING_TARGETS := $(TARGETS_NESTED:.nested=) ', - '$(CUSTOM_TARGETS)', $crlf; - } - - ## Print out the remaing targets. - ## They will be handled serially by make. - print $fh "\$(REMAINING_TARGETS):$crlf"; - foreach my $project (@lprj) { - print $fh "\t\$(KEEP_GOING)\@"; - if (defined $dirprj{$project}) { - print $fh "cd ", $self->mpc_dirname($project), - " && \$(MAKE) -f ", basename($project), " \$(\@)", $crlf; - } - else { - print $fh "\$(MAKE) -f $project \$(\@)$crlf"; - } - } - if ($need_dirs) { - foreach my $dir (@dirs) { - print $fh "\t\$(KEEP_GOING)\@cd $dir && ", - "\$(MAKE) -f \$(MAKEFILE) \$(\@)$crlf"; - } - } - print $fh $crlf; - } -} - -sub write_named_targets { - my($self) = shift; - my($fh) = shift; - my($crlf) = shift; - my($targnum) = shift; - my($list) = shift; - my($trans) = $self->project_target_translation(1); - - ## Print out the "all" target - print $fh 'all:'; - foreach my $project (@$list) { - print $fh " $$trans{$project}"; - } - - ## Print out all other targets here - print $fh $crlf, - 'REMAINING_TARGETS := ', - '$(subst all, , $(TARGETS_NESTED:.nested=)) $(CUSTOM_TARGETS)', - "$crlf$crlf\$(REMAINING_TARGETS):$crlf"; - foreach my $project (@$list) { - my($dname) = $self->mpc_dirname($project); - print $fh "\t\@", - ($dname ne '.' ? "cd $dname && " : ''), - "\$(MAKE) -f ", - ($dname eq '.' ? $project : basename($project)), - " \$(\@)$crlf"; - } - - ## Print out each target separately - foreach my $project (@$list) { - my($dname) = $self->mpc_dirname($project); - print $fh $crlf, '.PHONY: ', $$trans{$project}, - $crlf, $$trans{$project}, ':'; - if (defined $$targnum{$project}) { - foreach my $number (@{$$targnum{$project}}) { - print $fh " $$trans{$$list[$number]}"; - } - } - - print $fh $crlf, - "\t\@", - ($dname ne '.' ? "cd $dname && " : ''), - "\$(MAKE) -f ", - ($dname eq '.' ? $project : basename($project)), - ' all', $crlf; - } - - ## Print out the project_name_list target - print $fh $crlf, "project_name_list:$crlf"; - foreach my $project (sort @$list) { - print $fh "\t\@echo $$trans{$project}$crlf"; - } -} - -1; |