summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelliott_c <ocielliottc@users.noreply.github.com>2003-07-29 12:48:30 +0000
committerelliott_c <ocielliottc@users.noreply.github.com>2003-07-29 12:48:30 +0000
commit01ff2c88904b92b9224f20c8cca13785620b2ad6 (patch)
tree70afef4baa2681cf0364fa87200e2f7fd1cbd6e1
parent9aed33ce2594649db8c08c9f05a5bd16447c2dc6 (diff)
downloadATCD-01ff2c88904b92b9224f20c8cca13785620b2ad6.tar.gz
ChangeLogTag: Tue Jul 29 07:46:58 2003 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r--ChangeLog35
-rw-r--r--bin/MakeProjectCreator/README21
-rw-r--r--bin/MakeProjectCreator/modules/Creator.pm15
-rw-r--r--bin/MakeProjectCreator/modules/WorkspaceCreator.pm20
-rw-r--r--examples/examples.mwc4
5 files changed, 75 insertions, 20 deletions
diff --git a/ChangeLog b/ChangeLog
index f4949f5b2e1..116ca38c6f1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,22 @@
+Tue Jul 29 07:46:58 2003 Chad Elliott <elliott_c@ociweb.com>
+
+ * bin/MakeProjectCreator/README:
+ * bin/MakeProjectCreator/modules/Creator.pm:
+ * bin/MakeProjectCreator/modules/WorkspaceCreator.pm:
+
+ Change the way the 'implicit' keyword works. It now takes both
+ boolean values and character strings that represent base projects
+ for implicitly generated projects. See the README for more
+ details.
+
+ * examples/examples.mwc:
+
+ Utilize the new 'implicit' functionality.
+
Mon Jul 28 22:00:00 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
- * bin/footprint_stats.sh: Added new libraries that were not
- covered.
+ * bin/footprint_stats.sh: Added new libraries that were not
+ covered.
Mon Jul 28 15:06:32 2003 Jeff Parsons <j.parsons@vanderbilt.edu>
@@ -23,16 +38,16 @@ Mon Jul 28 18:29:38 UTC 2003 Don Hinton <dhinton@dresystems.com>
Mon Jul 28 13:01:49 2003 Balachandran Natarajan <bala@dre.vanderbilt.edu>
- * ace/UUID.h:
- * ace/UUID.cpp: The implementations are now placed in a namespace
- ACE_Utils. Since we can now use namespaces, adding them to a
- namspace made more sense.
+ * ace/UUID.h:
+ * ace/UUID.cpp: The implementations are now placed in a namespace
+ ACE_Utils. Since we can now use namespaces, adding them to a
+ namspace made more sense.
* ace/UUID.i: File UUID.i is now renamed to be UUID.inl
-
- * ace/UUID.inl: New file.
-
- * tests/UUIDTest.cpp: Changes to confirm to the above changes.
+
+ * ace/UUID.inl: New file.
+
+ * tests/UUIDTest.cpp: Changes to confirm to the above changes.
Mon Jul 28 12:49:23 2003 Chad Elliott <elliott_c@ociweb.com>
diff --git a/bin/MakeProjectCreator/README b/bin/MakeProjectCreator/README
index 6f3b04062a4..dd8183e98dc 100644
--- a/bin/MakeProjectCreator/README
+++ b/bin/MakeProjectCreator/README
@@ -326,6 +326,27 @@ flag_overrides Used to determine flags that have been overridden on a per
custom_types The list of custom file types that may have been defined
in the mpc file or a base project.
+Workspaces
+----------
+Workspaces (mwc files) can have assignments similar to projects. There are
+currently only two assignments allowed.
+
+The first is 'cmdline'. The values given to the cmdline assignment will be
+processed as command line options, but only to the projects that are
+contained within the workspace (or the scope of the assignment). The only
+valid command line options for cmdline are -base, -global, -include, -ti,
+-template, -static, -static_only, -relative, -notoplevel, -value_template
+and -value_project.
+
+The second assignment is 'implicit'. This assignment takes two different
+types of values. It takes a boolean value (0 or 1) to indicate that an
+implicit project should be created in directories that contain no mpc file,
+but contain project related files (source, headers, etc.). The default
+value for implicit is 0. It also takes a charater string that represents a
+base project (similar to the -base option). In this case, implicit is
+enabled and each implicitly generate project file will have the base project
+or base projects (when addition is used) when the project is created.
+
Defaulting Behavior
-------------------
1) If a project name is not specified
diff --git a/bin/MakeProjectCreator/modules/Creator.pm b/bin/MakeProjectCreator/modules/Creator.pm
index 6d9d8c60f74..71e6bfecf3d 100644
--- a/bin/MakeProjectCreator/modules/Creator.pm
+++ b/bin/MakeProjectCreator/modules/Creator.pm
@@ -617,9 +617,20 @@ sub restore_state {
my($self) = shift;
my($state) = shift;
- ## Overwrite each state value
+ ## Make a deep copy of each state value. That way our array
+ ## references and hash references do not get accidentally modified.
foreach my $skey (@statekeys) {
- $self->{$skey} = $$state{$skey};
+ if (UNIVERSAL::isa($state->{$skey}, 'ARRAY')) {
+ my(@arr) = @{$state->{$skey}};
+ $self->{$skey} = \@arr;
+ }
+ elsif (UNIVERSAL::isa($state->{$skey}, 'HASH')) {
+ my(%hash) = %{$state->{$skey}};
+ $self->{$skey} = \%hash;
+ }
+ else {
+ $self->{$skey} = $state->{$skey};
+ }
}
}
diff --git a/bin/MakeProjectCreator/modules/WorkspaceCreator.pm b/bin/MakeProjectCreator/modules/WorkspaceCreator.pm
index 2d0dee8cb70..b2f7cf1f1d4 100644
--- a/bin/MakeProjectCreator/modules/WorkspaceCreator.pm
+++ b/bin/MakeProjectCreator/modules/WorkspaceCreator.pm
@@ -617,6 +617,15 @@ sub generate_project_files {
if ($impl && -d $file) {
$dir = $file;
$file = '';
+
+ ## If the implicit assignment value was not a number, then
+ ## we will add this value to our base projects.
+ if ($impl !~ /^\d+$/) {
+ my($bps) = $generator->get_baseprojs();
+ push(@$bps, split(/\s+/, $impl));
+ $restore = 1;
+ $self->{'cacheok'} = 0;
+ }
}
## Generate the key for this project file
@@ -691,11 +700,10 @@ sub generate_project_files {
## Return things to the way they were
if (defined $self->{'scoped_assign'}->{$ofile}) {
$impl = $previmpl;
-
- if ($restore) {
- $self->{'cacheok'} = $prevcache;
- $generator->restore_state(\%gstate);
- }
+ }
+ if ($restore) {
+ $self->{'cacheok'} = $prevcache;
+ $generator->restore_state(\%gstate);
}
}
else {
@@ -845,7 +853,7 @@ sub process_cmdline {
## Determine if it's ok to use the cache
my(@cacheInvalidating) = ('global', 'include', 'baseprojs',
'template', 'ti', 'relative',
- 'addtemp', 'addproj');
+ 'addtemp', 'addproj', 'feature_file');
foreach my $key (@cacheInvalidating) {
if ($self->is_set($key, $options)) {
$self->{'cacheok'} = 0;
diff --git a/examples/examples.mwc b/examples/examples.mwc
index 7e713c519fc..52606d1bfad 100644
--- a/examples/examples.mwc
+++ b/examples/examples.mwc
@@ -6,6 +6,6 @@ workspace {
// The nice thing about splitting up into separate directories is
// that it completely eliminates mpc maintenance.
- implicit = 1
- cmdline += -include $PWD -base example_base
+ implicit = example_base
+ cmdline += -include $PWD
}