Author: jhoblitt
Date: Tue Jan  3 15:59:17 2006
New Revision: 10876

Modified:
   trunk/config/init/defaults.pm
   trunk/config/init/optimize.pm
Log:
rationalize Configure's handling of '--optimize' to address bug #38139, 
reported by Andy Dougherty 

Modified: trunk/config/init/defaults.pm
==============================================================================
--- trunk/config/init/defaults.pm       (original)
+++ trunk/config/init/defaults.pm       Tue Jan  3 15:59:17 2006
@@ -33,19 +33,8 @@ sub runstep
     # We need a Glossary somewhere!
     $conf->data->set(
         debugging => $conf->options->get('debugging') ? 1 : 0,
-
-        # A plain --optimize means use perl5's $Config{optimize}.  If an
-        # argument is given, however, use that instead.  This logic really
-        # belongs in the optimize unit.
-        optimize => $conf->options->get('optimize')
-        ? (
-            $conf->options->get('optimize') eq "1"
-            ? ($Config{optimize} || "1")
-            : $conf->options->get('optimize')
-            )
-        : '',
-        verbose => $conf->options->get('verbose'),
-
+        optimize  => 0,
+        verbose   => $conf->options->get('verbose'),
         build_dir => $FindBin::Bin,
 
         # Compiler -- used to turn .c files into object files.
@@ -131,17 +120,21 @@ sub runstep
         # should we have a dependancy upon arc to generate .a's?
         blib_lib_libparrot_a => 'blib/lib/libparrot$(A)',
 
-        perl          => $^X,
-        test_prog     => 'parrot',
-        rm_f          => '$(PERL) -MExtUtils::Command -e rm_f',
-        rm_rf         => '$(PERL) -MExtUtils::Command -e rm_rf',
-        mkdir         => '$(PERL) -MExtUtils::Command -e mkpath',
-        touch         => '$(PERL) -MExtUtils::Command -e touch',
-        chmod         => '$(PERL) -MExtUtils::Command-chmod -e chmod',
-        ar            => $Config{ar},
-        ar_flags      => 'cr',
-        ar_out        => '',                                        # for Win32
-        ar_extra      => '',                                        # for 
Borland C
+        perl      => $^X,
+        test_prog => 'parrot',
+        rm_f      => '$(PERL) -MExtUtils::Command -e rm_f',
+        rm_rf     => '$(PERL) -MExtUtils::Command -e rm_rf',
+        mkdir     => '$(PERL) -MExtUtils::Command -e mkpath',
+        touch     => '$(PERL) -MExtUtils::Command -e touch',
+        chmod     => '$(PERL) -MExtUtils::Command-chmod -e chmod',
+        ar        => $Config{ar},
+        ar_flags  => 'cr',
+
+        # for Win32
+        ar_out => '',
+
+        # for Borland C
+        ar_extra      => '',
         ranlib        => $Config{ranlib},
         rpath         => '-Wl,-rpath=',
         make          => $Config{make},

Modified: trunk/config/init/optimize.pm
==============================================================================
--- trunk/config/init/optimize.pm       (original)
+++ trunk/config/init/optimize.pm       Tue Jan  3 15:59:17 2006
@@ -19,6 +19,7 @@ use vars qw($description $result @args);
 
 use base qw(Parrot::Configure::Step::Base);
 
+use Config;
 use Parrot::Configure::Step;
 
 $description = "Enabling optimization...";
@@ -29,9 +30,23 @@ sub runstep
 {
     my ($self, $conf) = @_;
 
-    if ($conf->data->get('optimize')) {
+    # A plain --optimize means use perl5's $Config{optimize}.  If an argument
+    # is given, however, use that instead. 
+    my $optimize = $conf->options->get('optimize');
+    if (defined $optimize) {
         $result = 'yes';
+        # record that optimization was enabled
+        $conf->data->set(optimize => $optimize);
+        # disable debug flags
+        $conf->data->set(cc_debug => '');
         $conf->data->add(' ', ccflags => "-DDISABLE_GC_DEBUG=1 -DNDEBUG");
+        if ($optimize eq "1") {
+            # use perl5's value
+            $conf->data->add(' ', ccflags => $Config{optimize});
+        } else {
+            # use what was passed to --optimize on the CLI
+            $conf->data->add(' ', ccflags => $optimize);
+        }
     } else {
         $result = 'no';
         print "(none requested) " if $conf->options->get('verbose');

Reply via email to